Motivate yourself by doing it in public
Sunday, 16 November 2008Productivity and motivation are strange and often elusive things when it comes to your personal projects. You start a project with the best of intentions, have a hyper-productive 2 to 3 day burst right at the start, and then get distracted by some new shiny project. You convince yourself that these projects have been postponed rather than abandoned, but your subconscious knows that they will never see the light of day. Your projects directory becomes a haven for rotting, neglected and increasingly obsolete code that will eventually be lost or deleted.
This is a situation I had accepted as a normal part of being a developer, right up until a week ago when a number colleagues past and present started to upload their personal projects to GitHub. GitHub is an online code hosting service that integrates with Git, a distributed version control system originally written by Linus Torvalds.
Code hosting services have been around for a while, and big hitters like SourceForge and Google Code have done wonders for open source projects. However, GitHub has one important feature that makes it so much more useful than the more established project hosting sites: a social graph. The ability to join a network of friends and automatically see when they’re updating their projects (or adding new ones), to watch or fork those projects for my own ends, gives me the impetus to keep my own projects moving a long.
Right now I only have two projects on GitHub: as3base64 (which was released a few years ago on this site) and AirShows. AirShows is a Adobe AIR-based GUI for editing the configuration file for pytvshows. It’s far from finished, and the code is really quite ugly, but the very fact that it’s now out in the open where my friends can see when I’m working on it (and when I’m not) means that I feel I’m more likely to keep up development.
If Git doesn’t suit your style you don’t have to use GitHub; there are plenty of other code hosting services that offer similar features, such as LaunchPad (Bazaar) and BitBucket (Mercurial). The important thing is that you chose the one that most of your friends are actively using, otherwise you’ll lose out on the very feature that makes these sites so useful for productivity.
A word about licensing
If you’re going to go to the effort of making your projects public, you might as well make them as useful as possible. A lot of developers have heard of the GNU General Public License and often use it for their projects. However, this license requires that the source code for all changes made to your code by third parties must be made available to the public. This means that businesses are often wary of using code licensed under the GPL as part of a project.
All the code I release publicly is licensed under the more liberal MIT License. This license grants developers the freedom to use the code in any way they choose without restriction, so long as the copyright notice remains in the source code. The BSD License is similarly liberal. I urge you to choose one of these two licenses for the code you make available, or at least make sure you understand the implications of the license you end up choosing.





