In July, about a month before version 1.0 shipped, I decided VolunteerPress would not go in the WordPress.org plugin directory. In the first post of this series I mentioned that you download it from volunteerpress.org and it gets updates from there like any other plugin. This post covers the reasons for that decision and how the updates work.
The directory is where most WordPress plugins live, and for good reason. It's built into every WordPress dashboard, so people can search for a plugin and install it without leaving their site. Each listing shows active installs, ratings, and the latest WordPress version the plugin was tested with, which helps people decide what to trust. Every new plugin is reviewed before it's listed. And updates come built in: publish a new version, and every site running the plugin is offered it. For most plugins, that's the right home.
Release timing was the first thing that pushed me the other way. A new plugin can't be listed until its review is done, and the author doesn't control how long that takes. I had a date in mind. Version 1.0 went live on August 22, the same morning I gave the first talk on it, and 1.0.1 followed a day later with fixes from that first round of feedback. Self-hosting meant that date was mine to set.
Owning the update path was the other. Every installed copy of VolunteerPress checks one file on a domain we control, so we can move where the downloads are stored later without touching any installed site. The download page also gives us a direct line to the people trying the plugin, which a directory listing doesn't. Both of those matter long after launch, which is why we have no plans to list it in the directory.
This isn't a new idea. Plenty of established WordPress plugins are distributed from their own websites and still update right inside the dashboard. Gravity Forms is one you may have used: you download it from your account on their site, and a license key unlocks automatic updates. I looked at how plugins like that work from a user's side and borrowed the pattern. Most of them are paid, and the license key is how they decide who gets updates. VolunteerPress is free and has no license key, so it takes the delivery model and leaves the licensing behind.
The updates run on Plugin Update Checker, a free, open source library by Yahnis Elsts that lets a plugin get its updates from somewhere other than the directory. On a regular schedule, it checks that file on volunteerpress.org, which lists the latest version, where to download it, the changelog, the WordPress version it's been tested with, and the PHP version it needs. When the file shows a newer version than the one installed, WordPress offers the update on its normal Updates screen. The site owner clicks update, and WordPress handles the rest.
The check is deliberately small. It only runs in the WordPress admin, during scheduled background tasks, and when someone manages the site from the command line, so it adds nothing to the pages visitors load. It needs no account, no email address, and no key. The changelog in that same file is the one you see when you open the update details in the dashboard, so there's one place that records what changed in each version.
Before trusting any of this, I tested the whole loop. A script sets up a test site with one version installed, publishes a newer one, and confirms WordPress finds the update and applies it. A second mode pauses partway through so I can look at the update notice and the details window in the dashboard myself, click update, and let the script confirm it worked. A broken update system can't deliver its own fix, so the loop had to pass before 1.0 shipped, and it did.
You get VolunteerPress once, through a short form on volunteerpress.org. You enter an email address, agree to a consent line that says plainly what we'll use it for, and the download link appears right away. After that, updates arrive through your dashboard, and you never have to sign up again to get them.
VolunteerPress is licensed under the GPL, and the full source ships in every zip. Anyone who has it can share it, change it, or host it somewhere else, and that's fine. The form on our site isn't a lock. It's the front door.
The real cost is discovery. Nobody browsing the plugin search in their dashboard will come across VolunteerPress, and there's no install count or star rating on a listing to vouch for it. Getting found is on us now: this series, the people we already know, and word of mouth from the sites that use it. I knew that going in and made the trade anyway. Being findable matters, but for this project, owning the path from release to install matters more.
If you've shipped a plugin outside the directory and handled some part of it differently, we'd like to hear how. And if you'd like to try VolunteerPress, it's at volunteerpress.org. Questions go to hello@volunteerpress.org.
Top comments (0)