WordCamp Orange County 2015 held the first ever “Plugin-a-Palooza” – a contest where developers are tasked with creating a WordPress plugin and then judged upon its usefulness, code quality, and originality. We’re happy to announce that our plugin WP Rollback won first place.
[bctt tweet=”Read the story behind WP Rollback and winning the first ever WordCamp Plugin-a-Palooza!”]
About WCOC’s Plugin-a-Palooza
We have been a fan of WordCamp Orange County for a long time. It was the first WordCamp to accept me as a speaker and the area’s WordPress community is thriving. The organizers, speakers, sponsors, and attendees are some of the best. When we first heard about the Plugin-a-Palooza it was via a newsletter on Feb. 10th:
This year, we’re introducing a new event at WordCamp OC: Plugin–a–palooza 2015. We want everyone to come together in the spirit of competition, show off your mad developer skills, and create a plugin that will wow the judges.
A few specifics on the competition rules:
- Plugin pitches were due February 20 (10 days to think up an idea)
- Each team member can only be on one team in the competition
- The plugin had to be able to be released in the WordPress repository by May 29
- Teams were required to present their plugins at WordCamp.
- No shenanigans!
After reading this email and knowing those who were involved I knew that we should definitely enter this contest, and I had the perfect idea.
As with many good ideas, WP Rollback was born from a need. Good plugins solve real problems. The problem: easily switching between versions of a WordPress plugin or theme. The idea came to me when I had to do just that. At first, I thought there must be a solution out there already. So I Googled, and Googled, and nothing came up. The only thing I found was using WP-CLI, but what non-developer is going to know how to do that? There should be a native, simple, and intuitive way to switch between various versions of a WordPress plugin or theme. That’s why we created WP Rollback.
[bctt tweet=”Good #WordPress plugins solve real problems.”]
The Art of Naming a Plugin
Coming up with a name for this plugin was a bit tricky. We knew we wanted the user to be able to set a version ahead, behind, or equivalent to their current version. No handcuffs. There was some discussion on whether to limit the ability, but ultimately we didn’t want to place any restrictions on the functionality. The word “Rollback” came up in a naming meeting along with “revert”, “versions”, and “version jumper”.
We came to an agreement that the word “rollback” can mean more than reverting to a previous version. Rollback can also mean to go back to a version number that may in fact be higher than the one you are currently on. As well, we thought that most users would use the plugin to get out of a sticky situation like a new theme version causing style issues or a plugin function that may not be working as expected.
More than a Rollback
When we began concepting the plugin we found there were more use cases than just rolling back versions. Here are a few use cases:
- Incremental upgrades – upgrading to a current version of a plugin by stepping up through the versions.
- Plugin code refreshing – perhaps a file is corrupt or an upgrade failed. Now you can reinstall the currently installed version.
- Version jump testing – Useful for developers to quickly test how their code handles broad version upgrades (v1.0 -> v8.0)
The success of any project lies in the hands of the team behind it. For this plugin, our team had excellent communication and task management. We worked together and remotely. It took a total of 3.5 weeks to get the first beta version out the door. Team members include:
Since launch, other community members have contributed to the project in the form of code reviews and translations. The plugin is currently translated in Russian and Swedish. Do you speak another language or want to contribute? Check out WP Rollback on GitHub.
Developing the Plugin
It’s important to plan properly before jumping into development. We had a number of planning meetings and discussions to get this plugin right. I created a few wireframes to express the thoughts I had to the team:
We discussed the wireframes in depth and kicked around a few ideas like switching the version selection field from a radio to a select dropdown. The argument for it was that you could quickly select versions and some plugins or themes with many versions could run down the page. I didn’t like this style because select field options are hard style and add useful information like the “installed version” or tooltips into. As well, it made the Rollback page look much smaller and less easy to understand in my opinion.
Under the Hood
WP Rollback uses the Singleton pattern which only allows access to one and only one instance of the class. The code uses many WordPress hooks, APIs, and classes to function. We also placed a ton of plugin specific hooks for developers to extend WP Rollback to work for their own plugins and themes. All strings are translatable. Any bugs or issues will be promptly fixed and WP Rollback will always be free.
Here are a few screenshots of how the plugin currently looks as of 1.2.2:
During the months leading up to WCOC we were always curious who else was building plugins and what they would be. We hadn’t heard much until we saw Suzette Franck, a well respected WordPress community member, announced her entry into the competition with WP Art Store on twitter.
Her teammate Chris Reynolds is a developer at WebDevStudios, one of the most respected WordPress agencies. Essentially, WP Art Store lowers the barrier of entry for photographers and artists to begin selling their images online. The plugin is built utilizing CMB2, which we are contributors and big fans of. We felt this plugin was a serious contender.
After that, we heard very little of our other competition for weeks so there was a lot of anticipation. A few days before the competition I heard news of a plugin called CC Devs from John Hawkins of 9seeds. This plugin is pretty handy for developers who regularly hand off websites to clients and forget to swap the admin email. WordPress likes to send regular emails and this can lead to inbox bloat. John’s plugin allows you to unsubscribe within the admin emails. Pretty cool.
The Day of the Contest
The Plugin-a-Palooza was held on Sunday afternoon and had around 50-60 attendees. We had a number of team members at the Camp to support the our plugin. This proved to be a good idea, because Chris Lema had the crowd judge based on applause.
The contest started with Chris introducing each plugin, and showing a funny “Jib Jab” video to kick things off. After that, each contestant had around 20 minutes to showcase their plugin to the audience and judges. Here is the slide deck I presented:
After the presentation Chris asked each contestant a few questions specific to the plugin like why they built it and who they built it for. Next, each judge got the chance to give their feedback and ask questions. I liked the format and thought it brought up a lot of good discussion. I believe the success of our plugin was ultimately due to its:
- and… controversy
Did one of those stick out to you? Maybe the last one? I said controversy because not every judge liked our plugin. Mika Epstein, a gatekeeper of the WordPress Plugin Directory and very respected core contributor, had some issues with the functionality. She first brought up a bug whereupon if the user clicked on the temporary “rollback” menu item created by the plugin they will be brought to a permissions error page. This bug has since been fixed.
More importantly, she brought up philosophical issues with the plugin’s very existence. Mika argued that many plugin developers don’t use SVN properly (the versioning tool the Plugin Directory is built on). If the plugin version isn’t properly tagged then it can’t actually rollback at all. Secondly, let’s say a new user tried to rollback the plugin to a version that contained a fatal error, it could cause more harm than good. Admittedly, this stung a bit to hear after all the high praise, but truthfully, neither of those issues speak to the plugin itself, but rather to higher-level issues with SVN and buggy plugin code. It is nevertheless a really useful conversation, and we will be chatting with Mika more about these issues and we’ll post the conversation in a future post this summer. Ultimately, it was a great experience, and the outcome of those conversations will continue to make the plugin better.
And we still won! The plugin is incredibly powerful and we believe the community needs it. We will also continue to improve it and release more documentation.
But now, we celebrate!
Announcement Tweet from WCOC on Twitter:
— OC WordCamp (@ocwordcamp) June 7, 2015
Sucuri is a company you always hear about if you’re even remotely involved in the WordPress community. Tony Perez, Sucuri’s CEO, is a stand up guy and helped bring the competition to life by sponsoring the event. They asked him, and he delivered. As first place winners we won $500 cash, which will go directly in supporting future development of WP Rollback, and a 1 year business website security package. Score!
Sucuri even tweeted us too:
— Sucuri (@sucuri_security) June 8, 2015
What We Learned
The Plugin-a-Palooza was a fun and rewarding experience. I hope to see many more contests in the future, especially a “Theme-a-Palooza”. That would be great, but hard to organize. Part of the difficulty in putting on a contest like this is that developers are already pressed for time and coding for free usually takes last priority. I believe this why we didn’t see 20 teams enter the contest. I think if more sponsors chipped in to spread the prize pool and more time were provided the number of entrants would be higher. For the first go at it, WordCamp Orange County did an excellent job and as an organizer of WordCamp San Diego I’m going to bring this up in our next planning meeting for 2016.
See you next year at Plugin-a-Palooza!