In the past couple of years, WordPress has matured from a blogging application, beyond a content management system, into a platform on which teams, organizations, and individual developers are building solutions.
In fact, WordPress has matured to the point where people are building entire businesses around the platform: authors are using it as a publishing platform, photographers and artists are using it as a way to showcase their portfolio, and new roles – such as professional blogging – are emerging.
It’s an exciting time, isn’t it? I’d argue even more so especially if you’re a developer. In addition to being great way to publish content, WordPress is a solid platform for building software. It has rich documentation for it’s API, free source control, and an incredibly active community around it for both plugins and themes. I’ve been fortunate to be a part of a stellar team that has begun to make a living by building products for WordPress.
But, as with most things, it comes with its share of learning curves. Although it’s completely possible to build, market, and profit off of a product for WordPress, there are a few things that can be done that will help you (and your team) go further, faster. In my experience, there are three things you need in order to build successful products – be it themes or plugins – on top of WordPress.
Although most software developers are familiar with source control in some capacity, there are many budding programmers that are not. Simply put, source control (also known as version control ) is a way of keeping snapshots of your source code throughout the development lifecycle. Its benefits lie in being able to easily roll back code that breaks a release, test a new feature before releasing it into the wild, and allowing teams to all work on the same codebase without tripping over each others changes.
For a number of reasons, I believe that source code is critical in maintaining a successful WordPress-based project.
- Roadmaps. As with most projects, there are only so many features that can make it into a single release. As such, you’re left with having to create a roadmap for when you’re going to release several features. Source control makes it easy to release a version, tag it, move on to the next milestone on your roadmap, and then repeat.
- Forking. Occasionally, there are times when you may want to create a separate project based on the same codebase as your initial work. In this case, you’d want to branch (or fork) the codebase into a new project. Source control systems make this really easy all the while keeping the new code under version control, too.
- Bugs. There are no perfect software applications – bugs will plague your work. Once your project is released for others to use, an issue will likely manifest itself. Source control makes it easy to grab a copy of the last build, patch a bug, then track the file (or files) that need changing or fix. Additionally, it makes it incredibly easy to check code in for a new build.
That said, there are a number of different source control systems available. These include Subversion, Mercurial, Git, and CVS. There are a number of organizations that provide free hosting and it’s relatively easy to get started with each:
- Beanstalk offers a single repository for Git or Subversion
- GitHub provides free, public Git hosting
- Kiln also offers a free Mercurial account.
Source control is only one part of maintaining a project, though. Assuming that your work becomes widely used, it becomes increasingly difficult to track bugs and user requests on a notepad or in your inbox.
Doing several rounds of testing during development is very common (and I highly recommend it), but it’s practically impossible to simulate every user’s hosting environment. Once your work is in other people’s hands and running on their servers, they are going to encounter issues and it’s best to be prepared for it sooner rather than later.
To that end, it’s worth spending some time investigating a number of ways for tracking issues. You’re going to want to track bugs as they are submitted in order to help plan patches and product roadmaps. Three viable options to consider:
- Email works best in the early stages when you have a couple of hundred users and is usually just enough, but it doesn’t scale well. When you begin hitting up against 1,000 users, the workload becomes tough to manage. It’s fine to launch with this, but plan on upgrading in the near future.
- Google Spreadsheets is a slightly better way to track incoming requests. It’s free, hosted in the cloud, and provides an organized way of tracking issues, descriptions, and any other information – such as when the bug was submitted and whether or not it has been patch – but it still requires a bit of manual overhead to manage.
- Hosted Help Desk solutions such as User Voice, Trac, and GitHub are great options for outsourcing bug tracking. Systems like this are designed specifically for tracking issues. As such, it’s incredibly easy for users to submit their issues and for you to access.
But this leaves what’s arguably the most important aspect of maintaining a WordPress project – gathering feedback from your users.
One of the most important things you can do for your users is to be available – nothing beats being able to interact directly with the people that are building the product. Aside from keeping your customers happy, it is also a great way for you to keep your pulse on your product – its bugs, what people would like to see more of, and what they’d like to see less of as it grows.
Similar to bug tracking, there are a number of great options each of which can scale with your work as it becomes more popular.
- Email is always a great way to start. You do run the risk of people ultimately bypassing future forums to go directly to you, but this is the easiest way to stay in close contact with your users short of having a phone call. Besides, there’s very little stress in answering a few emails early in a product’s lifecycle.
- Self-Hosted Forums are a good option when your customer base outgrows your inbox. Systems such as bbPress, vBulletin, and similar packages are easy to setup, install, and configure. On top of that, this gives users a way to not only interact with you but with one another as well. Of course, this option is only as manageable as the bandwidth available on your hosting account.
- Hosted Support Forums, such as Zendesk, are great for when your customer base has outgrown your web server. These systems typically specialize in forum software, provide solid uptime’s, and make it incredibly easy for you to curate the requests coming into the system ultimately helping you foster community, track issues, and provide feedback.
Don’t under estimate the effect of solid customer service – a great experience with you and your product can do wonders for keeping users coming back for additional work. It only makes sense that the customer experience should be as positive as possible.
Perhaps the most important thing to note is that your source control, bug tracking, and support solutions should grow with you. I’m a fan of only having enough in place for the current situation and scaling upwards as the product grows. As such, you’re not going to find me releasing a plugin and then directing the handful of users to a premium level support system. This helps to make sure that responsibilities are on par with the scale of the product.
Of course, these aren’t the only things to consider – I’m sure many of you have other suggestions for running in successful projects so be sure to share them in our comments section below! Thanks for reading and staying tuned!