This week marks two interesting anniversaries for me. I've been writing here at ZDNet for six years, and I've been supporting adopted open source projects for one year. While my experience here at ZDNet has been incredibly rewarding, and I hope it will continue for many more years, this article is about the other anniversary.
Last March, I became the keeper, curator, and father confessor for the first of what would eventually be ten adopted WordPress plugins. In this article, I'll tell you why the experience has been challenging, rewarding, and ultimately transformative.
A bit of background
This isn't just a WordPress story, it's really an open source story. WordPress, as you probably know, is a GPL-based open source project. It supports a wide range of plugins and themes that extend and modify its capabilities and customize its look. Each of the plugins and themes is also GPL.
I will admit to you with no shame that I have, more than once, thought about abandoning those plugins and just running away.
Since plugins are smaller open source projects, most have just one or -- at most -- a few maintainers. That means if the maintainer gets tired of working on the plugin or has life circumstances that make it impossible to keep supporting it, there are two choices: let it wither, or put it up for adoption.
Because WordPress is enormously popular, it is often a target for hackers. As such, WordPress is updated and hardened constantly with security updates. Plugins and themes also need to be updated, particularly if there's an exploit discovered that can be injected through sites running that plugin.
For example, a few years back an image resizing plugin was found to allow bad actors to inject and execute a PHP script on the server. Because TimThumb was very popular and also included with many themes, the exploit impacted thousands of site operators the world over.
When a plugin no longer gets support from its primary developer and is somewhat popular, there's the chance that it will become a target for hackers. So letting plugins wither and fade away can be problematic, and it's why you should generally only use actively updated plugins and projects.
The WordPress community came up with an innovative approach to this problem, the adopt-me tag. Developers who wanted to move on, but didn't want to leave their plugins unattended could tag their projects with "adopt-me" in the WordPress.org plugin repository. That was the signal that another developer was welcome to come in, reach out, and possibly take over the project.
That's where I come in
A little over a year ago, I finished up about 18 months of intense academic research. I had pretty much reached my fill of writing academic papers and wanted to find a side project that was about as far away from citing sources and computing p-values as it was possible to get.
At just about the same time, I discovered the adopt-me tag. I also noticed that a plugin I relied on for the ZATZ Archive, Better Recent Posts Widget (by the incredibly talented Pippin Williamson) was up for adoption. Pippin has been busy building a business around some major plugins and BRPW just didn't fit that model.
This would be a perfect project for me! I reached out to Pippin and we transferred the project to me. It was great. I had the opportunity to work on early code by one of the most prolific WordPress plugin authors, and maintain something I relied upon.
In the past year, BRPW has required very little maintenance. It needed a security update and it needed a couple of compatibility updates, but that's about it.
On the other hand, the next plugin I adopted proved to be a handful. I had used Seamless Donations to manage donations for a nonprofit I've helped out in the past, and it, too, was up for adoption. Its developer was finding his career taking him places where he wouldn't be able to maintain the plugin, so I agreed to take it over.
I had no idea what I was getting myself into
This is where things become instructive for you, if you're interested in the behind-the-scenes of open source.
See, Seamless Donations had more than 10,000 active users on the day I adopted it. I expected my workload would be roughly the same as for the widget. I'd make a few security fixes as they came along and tweaks for compatibility.
I was wrong.
I also expected the users to be seasoned webmasters. After all, if you're installing an open source project on your server, you're obviously going to be experienced with Linux and PHP and all the rest, right? Right?
Oh, how wrong I was.
Before I go into more detail, I'll tell you about the third adoption I made. This turned out to be a set of eight more plugins. I was an active user of one of them, My Private Site, which basically allows you to easily put a password front door on a WordPress site. I used it to keep my random projects from being reachable by passersby, and I relied on it.
My Private Site was one of eight plugins produced by a developer whose family had taken ill. He needed to give up the plugins and if I wanted to keep My Private Site up to date, I had to adopt them all. Two of this set of eight plugins also had more than 10,000 active users. The rest had a bit more than a thousand users each.
In other words, across all ten plugins, I inherited an active base of roughly 50,000 users.
I now had responsibility for a plugin that manages donations, a plugin that secures sites from unwelcome visitors, a plugin that can let you run multiple themes concurrently inside one site, along with seven others with more limited feature sets.
Remember where earlier I mentioned my expectation that WordPress users were seasoned webmasters? You might expect that the people using these tools would be experienced IT folk. I sure did. But, as I said, I was wrong.
It turns out that WordPress site owners range from those with towering programming experience (at the very end of the bell curve) to those who are complete novices with limited computer experience. For those folks, something like CSS (the way you style web pages), PHP, and HTML are completely foreign.
You know how it feels when you go to Thanksgiving dinner with your family and every family member somewhat cluelessly and desperately presents you with a broken computer or device that needs fixing? I inherited roughly 50,000 of those people, overnight.
I will admit to you with no shame that I have, more than once, thought about abandoning those plugins and just running away.
Many of the users are not only clueless, but they also somehow feel entitled to commercial-level support for the free, open source plugins they download. And they can get abusive, while at the same time doing the dumbest of things.
I'll illustrate that with a bit of a story. Right after adopting Seamless Donations it became apparent that a lot of users wanted it to have new features. Fortunately, WordPress gives plugin developers a way to create APIs that allow users to easily (for a PHP programmer) tap into the plugin though hooks and extend the tool.
I decided that the best plan of action, one that would allow me to get back into the swing of cutting code and would make the plugin future-proof, would be to add hooks to Seamless Donations and redefine its data structures to be compatible with how WordPress stores its data.
I did an early update to the plugin which included huge 24 point red letters explaining that the plugin would be updated, and that it was important to backup and test before moving to the new version. I also built a default legacy mode into the update, so that the only way the new version would fire up was if the user hit the Convert button -- which itself was surrounded by big red warning letters.
Wouldn't you know it? Users went ahead and did the conversion, ignoring all the warnings, without doing any of the testing, without watching the tutorial video I took great care in creating. And wouldn't you know it, some of the conversions broke? And wouldn't you know it, those users didn't make backups, lost their minds, and came after me with pitchforks?
Yeah, you knew it would happen. I didn't. I initially couldn't fathom that people wouldn't make backups before a big conversion, especially when they were so visibly warned.
Yeah, not so much.
To be fair, many of the users are charming, pleasant, helpful, and a joy to work with. And lest you think that I'm just complaining about users, it's actually something quite different. That's the part of this story that other columnists, pundits, managers, and executives need to read.
The fact is, I haven't had to encounter real users in my professional life since the 1990s. In the late 1980s and all through the 1990s, I ran a software company. I did some tech support for a while, and eventually hired full time tech support people. But I've been out of the software sales business since the day I sold my database engine to Macromedia (now part of Adobe) and moved into online publishing.
As another side project, I did produce a set of 40 silly iPhone apps when the app store first opened up. But at a buck an app and with virtually no actual features, I rarely encountered any actual users.
I haven't had to talk to real people running a product I maintain or publish for a very, very long time.
Talking to users can be transformative
Until you talk to real users, you forget just how important your product is to them. You might think of it as a product, but they think of it as part of their life.
You might also think of users as a statistic in a spreadsheet, or a number on a PowerPoint slide. But when you're emailing with someone who's trying to keep her nonprofit alive and is desperately concerned, not just about the technology, but about the animals she won't be able to save if her donations stop coming in, things start to get real again.
Users aren't just statistics. They are people: excited, scared, dedicated, trusting, desperate, involved, worried, generous, innovative, caring people. They are real. They are human. That becomes apparent once you start talking with individuals, not just getting reports and reading summaries.
In the case of Seamless Donations, there are nonprofits doing truly good work that rely entirely on the donations gathered by Seamless Donations to fund their work. If it breaks down or stops running, they can't run their food bank or their outreach program or their educational program, or any of the thousands of other important and wonderful activities they do.
When you talk to users, you start to understand. Your project or product gains more meaning. You learn what people need, you truly get a grasp of their pain points, and you get a better feel for where your solution fits compared to others.
In my case, as a columnist, advisor, and educator, it reconnected me with the lifeblood of our industry -- the people actually doing stuff and using technology. Even the abusive ones. That's because as I got better providing user support, and as I improved the project, the desperation among users diminished. Their needs were starting to get met.
A year ago, no one was using my updated, far more maintainable code. Now, 75.9 percent of all active users are running my code, and, across all ten of my adopted plugins, more than 350,000 copies have been downloaded.
There are two other notes to this year-long retrospective I'd like to share with you.
First, back in July, I released my first major update for Seamless Donations and expected users to take advantage of the extensibility I provided. But, as I mentioned before, I vastly over-estimated their technical skills.
These were not PHP geeks using an open source tool, these were nonprofit managers trying to do good for their constituencies. They were unable to write their own extensions.
The problem was, I had pretty much allocated a weekend or so a month to this project, and I suddenly found myself owning responsibility for an ongoing, living system. I initially thought adopting plugins would be about the same amount of it takes to own tropical fish. You feed them and they're fine. But adopting plugins is more like adopting a puppy. You have responsibility for its care and feeding every day, in every way, for a very long time.
The problem is, adding to Seamless Donations would both take time and money -- money I couldn't justify as a side, pro-bono project. So I decided to charge for add-ons. I'm not making it into a business, I get a few hundred bucks a month from them, but they cover the cost of licensing, tools, and hosting, the out-of-pocket costs I've incurred to keep the plugins alive and fed.
All told, since I released the first add-on in September, I've made about $3,000 and I'm starting to break even on the costs of maintaining the plugins. Only Seamless Donations has add-ons, but the income from Seamless Donations helps cover my hosting and support costs for the other plugins.
This is important, because the plugins are nights-and-weekends work, and if they both took my time and took money out of the family budget, my wife wouldn't go along with the effort. As it is, supporting the plugins -- and ongoing coding -- has taken time away from family projects, so we've had to hire handy folk and some yard help to make up for the honey-do time I'm not putting in.
There was another factor in this first year as the proud keeper of adopted plugins: both of my parents died. My mom passed away in September and four months later, my dad passed away.
Obviously, my attention was diverted from open source coding and support to family matters. I posted some notes on the support boards and here's where the users started to feel more like family than free-roaming, vaporous, full torso apparitions. I got many very kind notes from users, and I can't begin to tell you how much that meant to me. The folks here at ZDNet and CBS were also incredibly supportive, something I'll forever be grateful for.
It's been quite a year
I have adopted a total of 10 plugins and have, by extension, adopted a worldwide family of users. I've had some deep frustrations and some very rough periods. But I've also gained a tremendous degree of gratification and satisfaction from interacting with so many interesting people.
Would I do it again, knowing what I know now? Well, in a year where there isn't so much personal turmoil, yes. The value I've gained as a columnist, advisor, and educator that has come from interacting with users from so many nations with so many different skill sets and missions has been off the charts.
I thought I'd keep my programming chops up, and I've certainly done that. But I never expected I'd gain a much broader perspective that I'd be able to apply to all of the areas of my professional life and meet so many cool people.
If you're a manager, executive, writer, or pundit, I strongly recommend you reconnect with real users. Don't leave all user support to someone in your chain of command. Spend some time regularly interacting with the actual people who use your products and services. There will be ups and downs, but you will be a much better, more well-rounded, and considerably more connected professional for the experience.