Right after creating my first WordPress plugin, Auto Maintenance Mode, I came across a situation on a high-traffic blog where the visitors just rush to the website immediately after a blog post is published and shared (automatically) via social media. It created chaos in the server and the initial visitors didn’t get the cached version of the blog post, because it wasn’t even ready.
It isn’t uncommon to see freemium plugins in the official WordPress repo. The basic functionality of the plugin would be free. Some fancy features would come with a premium price. There is nothing wrong with such business model. What’s bad (business model) is switching the free features into paid features without notification. How does it feel if WordPress Foundation started charging a small fee to use the theme customizer?
Both Google and DigitalOcean are big businesses. So, they can afford something free forever (albeit for a *small* percentage of their customer base considering their constant growth every year). If you are a small business, and are offering something for free for now, please state that clearly when you announce it. Let me provide you a recent example, Gandi.net announced a new datacenter for hosting services in Paris. Here’s what it said…
And if you’re still not convinced, we’re only charging Gandi server credits (or your prepaid account) for bandwidth consumed. The consumption rates for services created in “FR-SD3” will still be displayed on the website but nothing be deduced from your resources.
We’ll be running Alpha and later Beta tests at least until the end of February 2017. While we tentatively hope to go live with this new infrastructure by March 1, we will let you know 15 days in advance so that you can plan for the return to our normal hosting rates based on resources consumed.
Technically, you don’t break any TOS, SA, or any other rules. But, morally?
What’s Bad Business?
Switching the free features into paid features without notification
Moving the (free) plugin (or theme) off the WordPress.org repo.
A couple of weeks, a plugin (with over 1000+ active installs) has switched some of its free features into paid features after renaming the plugin too. Fortunately, they have provided a link (to their internal server resource containing a zip file) to download the plugin for future updates if anyone wants to continue using the free features. You might ask me what’s wrong with that. Let me explain.
Why do we trust WP (repo)?
I don’t like WordPress. I don’t like its every growing complexity. It is generally bloated after each release too. I still trust WordPress and continue to use it for a foreseeable future for the following reasons…
WordPress is monitored constantly by almost every researcher in the world, looking for any loopholes.
WordPress plugins (and themes) in the wporg repo are monitored regularly monitored as well. So, when a plugin is found to have a vulnerability, it is taken down from the WordPress.org repo immediately. Of course, when it is patched up, it is included back into WordPress.org repo.
When a plugin is hosted outside wporg repo, I don’t think there would be enough interest in keeping an eye on it. It is good for that plugin, though. 😉 But, as a generic WordPress user, it is not safe to download from such sources.
That’s the reason I wouldn’t recommend Github hosted plugins too. It doesn’t mean you shouldn’t use such plugins. In fact, go ahead and try them all. It is a great way to learn. There are some gems on Github too. Just be sure to trust the author, if you don’t understand the code. I wouldn’t trust a plugin that switches the free features into paid features without an explicit note during its announcement or without any notice at all.
Matt Mullenweg has a good summary of what happened when MovableType changed its subscription model.
WordPress Object Cache system allows transients to be stored in object cache backend, such as APC, Memcached or Redis. Without an object cache, the transients are stored in the database itself. This is the default. You could verify this yourself by looking at the (wp_)options table in the database. Fortunately, we have options to store these transients in the memory using one of the backends mentioned above. Among these, Redis has become stable and is production-ready. There are two WP plugins available that use Redis as WP Object Cache. First one is Eric Mann’s plugin. The second plugin is by Till Krüss who forked the former and made it better.
Often, I create a development site, such as dev.example.com, test.example.com or staging.example.com, before making any change in the production site. I even have a dedicated server to host the dev site of all my clients. If you don’t have a development site on your own, please do create it. It’d save you a lot of time in the future. Your production site might become overnight success and you can’t afford to tryout important changes in the production site.