I have been saying for a while (considerably long while) that I had decided to remove my plugins from official WordPress plugin repository. As things go — the more you talk about intentions the less action happens.
So I had mostly shut up about it for a while longer, until it was all too obvious that now is as good time as any.
Since I plan to blog more about WordPress things — the perfect opportunity to explain my reasons in a post it is.
Technicalities
The repository
It is ironic how we spell out “official” plugin repository, because WordPress never intended to have any other repositories.
Its core code is written in line with that assumption, interacting only with WordPress.org API. Notably API with infrastructure (code and logic both) that is private and undisclosed to public.
While implementing alternate repositories is technically possible, it is not supported (or even reasonably conventionalized) and such implementations are disallowed to be hosted in official one for distribution.
Development
WordPress uses Subversion (SVN) version control as storage and interface for plugins’ code. While SVN is usable it is hardly pleasant or popular for modern development, lacking in newer distributed version control paradigms, performance, and other conveniences.
More so WordPress actively discourages using its repository for active development, reducing it to storage mechanism with updates only happening for release versions.
Simply put that is not how development happens these days. Adjusting to the requirements is not particularily challenging. Having to adjust is one of many disregards to development realities and workflows in my opinion.
Updates
Compatibility
The process of releasing new versions is one of the most important functions for repository. From the perspective of WordPress users it is highly polished, friendly, and robust process.
From the perspective of WordPress developers it is a disaster.
The technical implementation of updates works as following:
- WordPress core submits all of the plugin data to the API
- API responds with available updates, which are displayed to user
It sounds reasonable until you bash your head on all of the data, including plugins that have never been intended to be hosted in official repository.
For such plugins completely invalid updates are routinely suggested, destroying them in the process of installing completely different plugin on top of them.
The exclusion of plugin from updates is technical nightmare, requiring excluding them from the data at the stage of HTTP request being made.
Adding insult to injury the data format had been changed last year, breaking all of existing implementations of such exclusions in the wild. In a project with extreme backwards compatibility commitments this came across as blatantly uncaring on top of already dismissive state of it.
Privacy
And let’s go back to all the data for a second. For example a data like specific developer producing specific plugin for a specific client (typical information contained in plugin’s header). Which is between them and no one else’s business.
Yet WordPress just helps itself to that information, without clear opt–out or even warning about it.
The privacy debates about data submission had been going longer than I am even using WP. They had never achieved anything above being laughed off.
Socialities
Promotion
The one commonly mention laud of repository is supposed “promotion” it brings to your plugins. Well, personally I hadn’t seen any. Unless the fact that there should only be one repository is promotional for hosting in it.
The only plugins that do receive promotion are those with highest downloads count and short “featured” list.
User base
I can understand restricting repository–hosted plugins to getting updates only by official process and not via third party sources/locations.
However, this technicality turns into de–facto lock–in, in lack of procedure for migrating away. The users of your plugins are not actually yours, WordPress considers them on loan on condition of using the repository.
Support
Repository automatically provides plugin with support forum and prominently displays stats from it.
The thing is — it is not a choice, it is an obligation. The option to not have support forum was explicitly considered and explicitly denied. Regardless of what makes sense to developer as support venue (if anything for free plugin), the presence of support forum is mandated.
I would be less irked about it if WordPress forums weren’t that horrible for my taste. Relatively less.
Legalities
I could as well omit this section, but I feel it would come across as holding back. Some people rather enjoy my recurrent meltdowns on topic of licensing.
There is very little licensing related in my decision to leave.
Yes, this in rules:
If you don’t specify a compatible license (such as in a license.txt file or referencing or declaring a license somewhere in the code or readme.txt file), what you check in is considered GPLv2 or later. By committing code to our repository at all, you accept this condition.
is batshit crazy. Needed to be said if we are on topic, but who cares.
Doing it for myself
To be very clear this isn’t manifesto or call to action. It is hardly even worth noting, coming from someone with such a small amount of plugins in repository and downloads of (barely above ten thousands).
Just a summary of reasons for my personal decision. I would never think less of anyone for using repository or more for leaving it. I very well might host client work in repository if necessary.
Naturally all my released plugins remain public, open source, and will be maintained to exactly same degree. I had added the list, including latest plugins that had never been released at official repo, to my WordPress category archive.
But energy, attention, nerves, and lines of code I am wasting on these issues are better dedicated to other things — I trust in and enjoy.
Is WordPress way always your way?
I had long learned that WordPress plays by certain rules and developers are rarely priority in those rules.
It is important to recognize the force in the market these rules had made WordPress. They also made the bubble of priorities and expectations around it, plain alien to many of processes happening in modern PHP community right now.
I think for developers it is extremely important to recognize (and admit to themselves) when playing by the rules WordPress gives is holding you back. Repository is not the first WordPress “rule” I abandoned (rest in peace PHP 5.2, really) and it won’t be the last to get in (and showed out of) the way of my professional direction and growth.
WordPress way or the highway.
You know what? Highway is exciting, I can’t wait to experience more of it! :)
David Coveney #
Andrey “Rarst” Savchenko #
Ændrew Rininsland #
Andrey “Rarst” Savchenko #
Rene #
Andrey “Rarst” Savchenko #
Mayeenul Islam #
Andrey “Rarst” Savchenko #
Julien Maury Ⓦ (@TweetPressFr) #
Andrey “Rarst” Savchenko #
Hunter Satterwhite #