I believe firmly in the extensions model when it comes to large plugins, in the same way that I firmly stand behind the idea that the best way to implement major functional features in themes is through the use of plugins. In general this model is pretty well accepted, but occasionally there are users that ask “why?”. There are a lot of reasons for expanding the feature set of large plugins via extensions, and I’d like to explain my own personal answers to why.
When I look at the extensions for Easy Digital Downloads, Gravity Forms, WP e-Commerce, Soliloquy, WooCommerce, Jigoshop, or even smaller plugins like BracketPress or Ignition Deck, I think “awesome”, these guys are doing it right, at least according to the model I believe in (note that I included my own plugin in that list).
A lot of people, however, disagree with me and feel the commercial extensions model (especially for plugins that are already commercial) is a number of things:
- greedy
- unfair
- dumb
- excessive
- unfriendly
Obviously I disagree with these sentiments, but let me sympathize with them for a moment and detail some of the reasons these feelings exist.
When you buy a plugin, it’s great when it offers all of the features that you need, and it’s even better if these features exist in a free plugin. Who doesn’t like free? But what about when you purchase a paid plugin only to find out that the feature(s) you really need only exists as an additional paid add-on. That’s pretty frustrating, right? Yes it is. When the free plugin doesn’t have the feature you want, but there is a paid extension for the feature, that feeling could be good or bad. On one side, you’re happy because the feature exists. On the other site, you’re unhappy because you have to dish out some cash in order to get the feature. Why didn’t the developer(s) simply build the feature into the core plugin?
Many users have no issue paying for a commercial plugin, but then they get skeptical when they can download the main plugin for free but then have to pay for multiple extensions. Usually they think along the lines of this: why not simply build them all into a single plugin that is more powerful and provides all of the features for a single fee? Seems reasonable.
Why then do I adamantly believe the extensions model is best?
1. Unnecessarily heavy plugins are always bad
What does this mean really? It means that plugins that pack 100s or 1000s of features in have a serious problem with bloat. I’ve seen a lot of plugins that attempt to provide every feature under the sun, in order to accommodate as many users as possible, but when they do that, they suffer slower performance, increased maintenance, more bugs, and other issues that come with really large code bases.
I personally have a rule that says if only 20% or less of the plugin users are expected to utilize a feature, the feature does not belong in the core plugin, it should instead be built as an extension. Currently, we have 97 extensions for Easy Digital Downloads. It is safe to say that the majority of these extensions provide features that only a few users use. For example, the Paymill payment gateway is only applicable to those users processing payments through Paymill. Out of the total number of EDD users that we have, how many are Paymill users? Based on the number of sales / inquiries about the Paymill gateway, I’d say less than 1%. So should Paymill be provided as a payment processor included in the core plugin? Absolutely not. Doing so would simply introduce additional code weight and possible bugs to all EDD users, even though it is only relevant for 1% or less.
Imagine for a moment how much larger the Easy Digital Downloads code base would be if we included every single extension in the core plugin . . . it’s a frightening prospect.
2. Focused features
As I said above, I believe that all features that are likely to be used by less than 20% of a plugin’s users should be built as extensions. Usually features that exist as extensions are focused on a specific task. For example, the Audio Player extension for EDD is designed to allow musicians to display a preview of their music on their product pages. This is a very focused feature that is targeted at a very specific group of users. Musicians may wish the extension was part of the core plugin, but no one else would ever use it. Therefor the feature has no reason to exist in the core plugin.
3. Easier maintenance of the code base
The more you abstract your code, the easier it is to maintain. Separate “pieces” of code are dramatically easier to fix bugs in and make general improvements than large “blobs”. In this scenario, each extension is it’s on “piece” of functionality within the environment of the plugin it belongs to.
It is much easier for a user to turn off a single extension in the case that something breaks than it is for them to turn off the entire plugin.
4. Greater feature coverage
The creation of extensions allows you to introduce features to your plugin you never would have otherwise, due to the 20% rule. Easy Digital Downloads would never have gotten the ability to ship simple, physical products if it wasn’t for an extension. That feature simply didn’t make sense for the core plugin, but since a few users really wanted it, building it as an extension worked exceptionally well.
5. Greater flexibility
In order to build extensions for a plugin, the plugin has to first be built in a modular fashion, which means it can be extended. There are many, many plugins that simply can’t (or not easily) be extended via extensions at all. Then there are others like those listed above that make extending the plugin really easy.
By building your plugin in such a way that it can be extended, you also open your plugin up to other developers to extend. I assure you, I didn’t write all 97 extensions for EDD, a lot of other developers contributed most of them.
6. A solid business model
This is one of the really important reasons. In order for a free plugin, such as EDD, to be successful and generate a sufficient level of revenue, there has to be some element of the plugin that users pay for. Simply put: there must be a way for users to give you money, otherwise you will never generate enough revenue to support your business. Simple, I know, but it’s true.
By separating out features of a plugin into commercial (and free) extensions, you create a business around your free plugin. WP e-Commerce, WooCommerce and JigoShop are all other examples of free plugins that thrive on the business of selling paid extensions.
This brings me to one of the sentiments I hear a lot: that’s greedy.
Many users (it’s a minority) feel that breaking a plugin up into extensions that each have to be purchased separately is simply a way to force users to spend more money, hence the use of the term “greedy”. Is it? I don’t think so at all and I’d like to share a few reasons why I think this is completely inaccurate.
6a. The selling of extensions generates revenue for dozens of developers
If I and the rest of the official EDD team were the only ones benefiting from the revenue of paid extensions (this applies to all other plugins with commercial extensions as well), I could maybe sympathize with this “greedy” sentiment a little bit, but did you know that the vast majority of extensions sold (for all of these plugins) are not built by the core teams? That means the commercial extension sales are in fact directly benefiting dozens of non-team member developers.
For example, this month Easy Digital Downloads will pay out nearly a 3rd of its extensions-generated revenue to other developers. That’s a HUGE percentage.
By the time WooCommerce was 1 year old, they had paid out $281,778 in commissions to extension developers.
When we’re talking those kind of dollars being sent out to non-paid employees (just developers that contributed to make the project better) how can we think anything but “awesome”.
Assuming the plugin is open to 3rd-party extension developers, the revenue generated by extension sales is helping to feed the families of dozens, perhaps even hundreds. Greedy? I don’t think so.
6b. It is not about the money (for me at least)
While obviously paid extensions are, well, paid, they are not always given a price tag because we need another way to pull a few dollars in. Extension sales help finance further development of the core plugin, whatever the plugin is.
Do you think WP e-Commerce could pay several full time developers to continuously work on bringing the oldest WordPress e-commerce plugin up to today’s standards if they didn’t generate revenue from their extensions? No way.
Do you think I (Easy Digital Downloads) could afford to pay 5 part time support staff if there wasn’t money coming in to pay them with? No way.
It is not about accumulating wealth (though that would be nice), it is about continuing the development and betterment of the systems.
[divider]
Even when not built for a commercial purpose, every plugin I build now is built such that it can be extended. By making it possible to extend a plugin, the door to features you never imagined building (or refuse to) are opened, even if it means other developers build an extension for your plugin to provide the feature they need.
There are quite a few plugins that follow the extensions model, some of them are free plugins with commercial extensions, and others are commercial plugins with commercial and free extensions. Here are the ones I could come up with in a short time period (not an exclusive list):
That’s a great write up Pippin.
Been following the free to paid plugin updates for all of my plugins. You’ll find free versions in the repo and pro versions of a few of those which I put a considerate amount of time into building. All of the pro plugins can be found on Extendd.com.
Great post Pippin!
I believe in and benefit from the paid extensions model. The main complaint I hear is the ‘greedy’ one. I think the users that say that wouldn’t be willing to pay anything for software. The amount of value available from any of these plugins + $100 of paid extensions exceeds the low cost.
But, then there are other users that say “This saved me so much time, thank you!” and those are the ones that I want to keep serving.
@Daniel – I agree with you. I could easily be wrong but my guess is that many of people who say it’s “greedy” are the same ones who get indignant about their own compensation regardless of the value they create for whomever is paying them. At least that’s been my experience with people like that…
That’s my experience as well.
Totally agree, Daniel.
Sometimes users of our paid plugins etc don’t appreciate how much time we are saving them. The cost of the add-on is minuscule compared to the time savings for them if they had to implement the feature themselves – or pay someone to.
All great points. While the concept of free and open source is wonderful there’s also the reality of operating a business and generating revenue to support the efforts of the team behind the product. And since we don’t live in a “Star Trek” economy and the mortgage company still requires cash at the end of the month, generating revenue is a necessity. Too often clients are caught off guard when discussing the costs of their website because they know that WordPress is free but don’t understand that their website isn’t, even if you only pay for hosting there’s still a cost.
Corrinda, so, so true.
“Usually they think along the lines of this: why not simply build them all into a single plugin that is more powerful and provides all of the features for a single fee? Seems reasonable.”
You’re describing Organize Series to a tea. High upgrade prices for so little additional functionality.
But all the rest of the plugins you mentioned seem well worth the asking price!
Matthew I’d appreciate some examples of what you consider is a high upgrade price for Organize Series? The core plugin itself doesn’t even have an “upgrade”, what I provide are addons to the core plugin. But Organize Series itself could be used (and is used by many) to provide full functionality for series without needing any addons.
Pricing is something that is always going to be difficult because you can never please everyone. I’ve had uses thank me for providing the addons for the low cost so they dont’ have to pay for what they don’t need, and then, I have people like yourself who would just rather I bundled all the functionality into the core plugin and charge for the plugin itself.
A model I’m considering moving to (as an experiment), is creating “bundles” of addons that include support. So there would be different “levels” of bundles that would include a varying number of addons.
Thanks Pippin for taking the time to write up this article.
Hey @pippin,
In general I strongly agree with you.
But I am familiar with that “darn” feeling that I get when I want to try something, especially themes, but cannot because I have to pay for it first. In the case of themes I find most unworkable to it’s just money thrown away.
That said, I think there’s a good way to differentiate between what should be free and what should be paid which benefits in a division that benefits both the user and the plugin developer: core infrastructure vs. features with business value. Said another way: Platform vs. Application. And your example of the Paymill extension is a perfect one.
By you giving away EDD (the Platform) you are able to get a large user base to enable demand for extensions (the Applications.) But your platform needs enough usability on it’s own so that people will adopt it though it makes perfect sense that the things they can use to make money (such as payment gateways) are something you charge for.
Also, if you don’t make money on your plugin you will eventually burn out and it will become abandoned. It’s just like having a small town grocer; support them or they’ll eventually disappear.
Some extensions though, the ones that really don’t have the ability to drive revenue and thus end-user value might not be appropriately an extension. I scanned EDD’s list of extensions and — good to note — I could really only find two that I felt are questionable and they both do the same: social sharing buttons; maybe those should be free? I think everything else you offer directly drives revenue or reduces expense in one for or another.
However, I do feel bad is for users in countries with lower per-capita earnings. For some of them the cost of just one extension might be a week’s salary or more. Not sure how to address this would it would be really nice if you could.
That’s exactly why I like the freemium model: free base, paid upgrades.
Just a quick note on the Social Links extension: this could definitely be a free one but it was developed by a 3rd party developer and he wanted to sell it. I don’t tell devs they aren’t allowed to sell an extension, but if I was to write it myself, I’d make it free.
The issue with countries that have lower per-capita earnings is definitely a problem, but I really have no idea how to address it. The best I’ve been able to do so far is simply offer discounts to those users that are from these countries and ask if they can get one. This is a slippery slope though because what’s to say a user isn’t simply trying to game the system? I don’t have a good answer for it.
Mike
What is of interest to me more and more is the cost of support. As my user base grows almost exponentially, my income from sales is flatter. So I might have 1000 users this year and a sales income of $10,000; and next year sales might be say $12,000 but I now have 2200 users to support. So, within a few years, I could have 10,000 customers but still only making maybe only $15,000 to $20,000.
Which isn’t enough to give up paid employment nor enough to hire support staff.
So the only way to correct the imbalance is to switch to a subscription model. So, in that two year model above, I might say have revenue of $20,000 in the second year. Revenue would grow to match the user base so I could then always afford to provide better support.
For the customer, a subscription model means the developer not being dependent on sales,doesn’t have to keep making new products to find new sales, and thus digging a deeper hole for himself. (That was the trap I dug for myself.)
I am looking at the suscription model for my add-ons (Headway theme extensions). But I’m also pondering an intriguing idea…
Would you pay for free software?
That is, if I made my add-ons free but required any support (besides a community forum) be paid for on a subscription model, would people go for that?
The benefits are much wide take up of my add-ons and my income being linked to the quality of my product.
It’s not too disimilar to the donation model, but at least guarantees some income.
Some folks would never pay; some would pay simply because they like the product or want to support you; some would pay because it’s like insurance; and others would hold out until they needed it.
As a dev, you want to make sure your product is solid so people don’t feel like your making buggy software to trick them into paying.
So just an idea that’s floating around my head and wondering what people think.
@Chris – I complete agree with all your mention about support. Tom McFarlin started a good discussion about plugin support on his blog. As for subscriptions, if you can pull it off with your user base I think that’s be best approach for keeping you in the black. And as for the “not enough to…” problem, been there myself with a non-WP related project so I know how frustrating it can be.
I personally don’t think subscriptions for extensions (or plugins or themes) works, instead you should consider premium support subscriptions. With EDD, we offer basic support to all users free of charge, but then we offer the option for customers to subscribe in order to get priority support. While most users only use the basic support, a fair enough number pay the support subscription to help off set the cost.
Hi @Pippin,
Ah, understood. I was confused as the “Social Sharing Buttons” extension had a “3rd party” banner but “Social Links” extension didn’t so I assumed it was yours.
Yeah, 3rd parties building extensions is a different analysis; they need to be compensated too.
Yeah sadly I don’t have a good answer either. 🙁
@Pippin. Yeah, that model (buy than pay for premium support) is in-between again, and probably the most agreeable.
I’m happy to pay for extensions because I know that it’s helping to fund a vibrant marketplace of things I need. Not only does it keep the core light as you explained, but it also encourages useful niche functionality to be developed that wouldn’t otherwise be part of the software.
Spot on, Doug. And if the original developer was expected to be the one providing all the additional functionality… then their product would become very expensive! Not to mention, some extension they
might never develop anyway.
Contrary to some folks thinking, it also keeps the user cost down, as they only need to pay for what they they need.
Spreading the development responsibility across multiple independent developers with a vested interest benefits everyone. With each committed to their own part only, you are assured of each being of higher quality.
I completely agree with you on this. In fact Easy Digital Downloads was a pretty big catalyst for us switching to a free core plugin with extensions for Ninja Forms. It definitely makes the code a lot more manageable.
Pippin
As a dev, is there any good tutes on writing extensible WP plugins? Or do I jsut examine other folks code?
Here you go:
http://wp.tutsplus.com/tutorials/plugins/writing-extensible-plugins-with-actions-and-filters/?search_index=1
http://wp.tutsplus.com/tutorials/the-beginners-guide-to-wordpress-actions-and-filters/?search_index=2
http://wordpress.tv/2012/11/29/pippin-williamson-modular-plugins/
https://pippinsplugins.com/lets-talk-extensible-code/
Sweet, thanks!
Thanks man. I wish I could say we planned it from the start, but our model just sort of evolved as we tried to find ways to keep our core framework lightweight, while still building features that a smaller minority requested.
We’ve had far greater complaints about lack of features than we do about pricing, and I love your 20% rule. That’s a smart way of doing it.
One of my favorite reasons for building extensible plugins though, is because it enables commerce in and around your platform. Now with our plugin and our new theme framework, we can show others how to build and sell their own extensions and child themes, which is sure to make our product better in the long run.
It’s a win-win.
Several of my plugins also evolved in the same way; I never intended to build extensions for them, then it just kind of happened.
It’s also great for the original developer who will want to extend their features. I didn’t have the knowledge or skills when I started to even accidentally make mine extensible. But with the continual tacking on of new features over the last 2 or 3 years has really highlighted that it would be hugely beneficial to me for my plugins to be extensible. So, hence I’m going back to the drawing board. 🙂
From a company that spent a lot of time debating how to sell plugins, this article is a great resource. I also really appreciate your notes about being greedy. As unfortunate as it is, most plugin developers can’t make and support truly great plugins if they don’t make any money from it.
For example, if I can develop a plugin that generates enough revenue for me to work on it full-time then I’ll be doing exactly that, working on it full-time. If I offer the entire system for free, then most likely I’ll have to work another full-time job, which means less time and focus on making the plugin awesome.
Great post Pippin.
The ability to continually maintain and support a plugin is one of the number one reasons to monetize it, at least in my mind.
This seems to me an extension (no pun intended) of WordPress’ own plugin model. The WP core itself is capable in its own right, but adding plugins is where the fun really begins. If all of this extra functionality was part of core, just imagine the resulting size and complexity. So it goes with plugins and their own extensions.
Sure, WP itself is free, and so are many plugins – but not all. Again, so it goes with plugins and their extensions.
It absolutely is.
In a previous lifetime (more than ten years ago), I might have been one to be annoyed by the pricing on web software, mostly because I spent so many hours downloading and testing and finding out that they were cumbersome (if not impossible) to make work the way I needed/wanted. The more I learned about how the code worked, the more I could visibly see what was wrong with it, which made it even worse for me in some respects. Ignorance is bliss, perhaps? 😉
Over time, I began to feel increasingly ripped off, and as a result, I went through a short bitter phase, wherein I refused to pay for any plugins at all. I was determined to write what I needed myself. But I eventually realized that I only have two hands, and while programming is something I understand on an intellectual level, it’s not a skill that brings me the level of fulfillment I can get from other areas that are better suited to my talents and personality. So I knew I needed to outsource the backend stuff somehow.
I’ve purchased a heap of extensions from you, and so far they all seem to do exactly what I need them to do, without adding a bunch of junk that serves to complicate the interface (or make the site run painfully slow). Although I haven’t officially launched the project I’m implementing with the EDD ecosystem, I can visualize what the result will look like, and I’m so glad I decided to fork over the cash. It would have taken me years of frustration to piece all of these features together, if I’d have managed to maintain focus long enough. While I may be able to recognize good programming when I see it, I’m just not very good at doing it myself.
I like the fact that the core of EDD is free to use. I didn’t play around with it much before buying extensions, but I can see how lots of people might prefer doing that.
My opinion is that once people spend hundreds or thousands of hours learning a skill or craft or talent, they are less likely to think it’s greedy to ask to be compensated appropriately for the effort required. I spent years hesitating to charge fairly for my own work because of the guilt conditioning many of us receive around the concept of money and profit. If people don’t think your work is worth the price you charge, whatever it may be, they can simply choose to *not* buy it. Nobody is holding a gun to their heads and forcing them to choose your software over others that are free.
I do understand the economic challenges faced by certain demographics, as I grew up in the American version of that. Sure, it’s not nearly as pronounced or publicized, but it still exists here. I’m not sure how to address the issue, though, without ruffling the feathers of those who *do* pay your asking price. Your paying customers are the people who keep you in business and allow you to pay your personal living expenses.
Bottom line: you can charge whatever you want for your extensions. If it has at least that much value to me, I’ll pay the price you ask, even if it takes me a few months to accumulate all of the pieces I need.
Well put, Crystal, and a big thanks for all of the extensions you have purchases, and even more for all of the top-notch feedback you have provided!
I tried another way of selling the premium features of my plugin. I included the upgrade process with a paypal gateway inside the plugin to receive the serials and unlock more features of the wp-ecommerce-shop-styling plugin.
This works quite fine, but due to too many feature requests I think about a crowdfunding for additional features.
I read about the fundify theme for edd this week and want to set goals of 120$, 300$ or 90$,… Or whatever the amount of working hours will be for a specific feature. Has anyone tried this way of selling features before? Any hints?
Regards, Hannes
It is a good, solid way to try and fund additional development, but be careful because many users will be off put by a paid plugin that is attempting to get money donated to further development, simply because they will see it as “greedy”. Right or wrong, there will be users that see it that way, so just be careful.
One of our customers did this: http://piwik.com
We wrote a little story about it f you’d like to check it out: http://ignitiondeck.com/id/piwik-crowdfunding/
Thanks for sharing! Pikwik is great.
Thanks for sharing this article. I like Piwik, but of course it has much more features than my plugin and much more users…
As a customer I like the basic features for free so I can try out, but am totally willing to pay for support, extensions, or done for me installation or set up.
On plugins I’m using regularly, I now donate, but I’d much rather have a way to buy an upgraded version and see continued development, instead of see a genuinely useful product fade away because someone did not charge for it.