Jack Slingerland started hacking on WordPress in 2008, but recently his career has taken him a bit further afield from it than he would like. By day he is a Senior Software Engineer at CA Technologies in Raleigh, working in React/Redux, Node, ElasticSearch, Grails, and Groovy. But at night he is busy building Kernl, a service that provides private plugin and theme updates for WordPress.
Once a plugin has been added to the service, the updates delivered from Kernl will look exactly like updates from WordPress.org.
“Kernl’s core feature is providing private plugin and theme updates for WordPress developers. However, our differentiating features are what get me excited,” Slingerland said. “We have purchase code validation (so only authorized users can download updates) and continuous integration (CI) support.
“The CI stuff is really neat, because it allows WP developers to push their code into GitHub or BitBucket and then have it automatically packaged and deployed to their customers. CI has been traditionally hard to do on WordPress because your ‘production’ environment is often something you don’t control,” he said. “Kernl solves that problem.”
The idea for Kernl came to Slingerland after previous years trudging through client work.
“One thing that constantly nagged at me was how hard it was to get any bug fixes or feature updates out to my clients,” he said. “I often didn’t manage their sites, so getting them updates involved lots of emailing and communication overhead.
“I originally had the idea for Kernl back in 2011, but never executed on it until last year,” Slingerland said. “I was hoping that I could help other people solve the same problem I had.”
Kernl launched in private alpha in May 2015 with ~65 alpha users. In November he opened it up for public beta and the service now has approximately 100 beta users. Testers are currently putting Kernl through its paces:
- Kernl hosts 73 plugins & 43 themes (117 total)
- The service processed 4.07 million update checks since May
- Kernl processes around ~2 update status checks / second
- 14,100 updates have been downloaded from Kernl
How does Kernl compare to WP Pusher?
I asked Slingerland about how Kernl measures up to WP Pusher, which allows developers to deploy WordPress themes and plugins from GitHub and Bitbucket.
“Kernl doesn’t require your end-user to install anything besides your plugin/theme,” Slinglerland said. “If I understand WP Pusher correctly, you first install WP Pusher, then tell WP Pusher to manage updates for a given plugin/theme via it’s version control repository. But this has to happen on every end user installation and might feel complicated to non-technical users.
“Kernl works seamlessly with your plugin/theme, just like those that are installed from the WordPress.org repository. This makes installing and updating feel familiar and blend in seamlessly,” he said.
“We also have purchase code validation, which is going to be getting some love and an API after we go live. Kernl also supports versioning your plugin/theme, so intermediary commits don’t get randomly sent out to your customers.”
The Importance of Continuous Integration
One of the reasons Slingerland built Kernl is because he wants to help more WordPress developers add continuous integration to their workflows. This particular aspect of the app (the “push to build” feature) posed the biggest technical challenge but was one of the most important problems for Kernl to solve.
“There are a lot of edge-cases that I didn’t foresee, especially once I started integrating with both BitBucket and GitHub,” Slingerland said. “In these cases the beta testers were invaluable in helping ferret out bugs.
“Having a solid continuous integration and deployment workflow really changes the way you think about development,” he said. “Instead of having ‘big bang’ once a quarter feature releases, it becomes easier to iterate on your idea. Fail fast, validate your ideas/changes, and iterate again. It’s a big enabler of the Agile development methodology, and I feel that the WordPress plugin/theme community has kind of lacked that. It encourages good testing as well, which is almost required if you are deploying continuously.”
Slingerland is aiming Kernl at developers who create WordPress plugins and themes that are not hosted on WordPress.org. A handful of his beta users have even been using the service to distribute updates for their own beta testers before they publish an official release to WordPress.org.
Kernl will host any plugin or theme for free as long as it is both open source and freely available. Pricing for commercial plugins and themes will range from $5 – $25/month. The service is free to use during the beta period, which is planned to be wrapped up in mid-February.
Kernl Will Not Police Product Licensing
After further inquiry regarding Kernl’s position on the licensing of products it hosts, Slingerland states that he will not police his customers’ licensing. This means that authors of non-GPL themes and plugins would be welcome to distribute their software via his platform. Since themes and plugins are derivative works of WordPress, they are required to be licensed under the GPL.
Slingerland’s lack of willingness to police non-GPL software has the potential to make Kernl a hive for products that break WordPress’ license. The service makes it easy to distribute non-GPL software that masquerades in the admin as regular compliant plugins/themes when it comes to updates.
Distributing non-GPL software can be a deal breaker for WordPress developers who feel strongly about the GPL. The GPL protects users’ freedom to use and modify the software for any purpose, and many developers have built their businesses and reputations on upholding that freedom.
Software hosted by Kernl may or may not comply with GPL licensing, and the user may never know. This leaves the user vulnerable in a way that official updates from WordPress.org does not. Developers who don’t want to be parcel to supporting a platform that has the potential to distribute non-GPL software may want to look for an alternative.
Would be nice if they had a composer repository for private plugins. Private plugins are a real pain to deal with when managing WP projects using composer for dependencies.