The coders among us geeks will probably agree: The fuel that gets us going is the passion the create something new and see something grow that I created myself. Fuelled by that energy, you forget time, space and basic human needs while hacking on a cool feature. One catchy thing about passion is that it cannot be forced or bought. That is why software development for a commercial product is often not as fulfilling as hacking at home, in your private space and by your rules. What is the consequence of this?
You only contribute your time to the area that you enjoy most, maximizing the scratch for your geek itch. The outcome?
You start several promosing projects, only to find yourself switching to the next one when your previous milestone has been reached or simply another topic offers something more “sexy” to work on than your current one. This behavior is perfectly okay. You don’t get paid, you do it in your free time and for fun. So if you maximize your fun, you use coding exactly in the way you wanted to, you have the most fun possible.
So by this you get to know new technology, your software design skills emerge and you replenish your energy with rewarding “it works!!” moments. Unfortunately, this does not ultimately lead to better software, because good software is far more than coded features.
You have to do documentation, bug triaging (filing first would be good), give some love to your release page/space.. Oh, no, wait! I went too fast. *Before* doing all that you need to define release critical milestones, agree on a common goal for your release and drive the development into a road where it is actually targeted towards your release milestones, i.e. not working on features that are for the next release (because they are so big they essentially break the whole functionality until they are finished). And there is our main point! You have to *drive* the development. That means, restraining it from its pure hedonistic purpose of maximizing the fun of the coder towards getting the coder to code something that is not in his focus of interest.
Now you could argue that the focus of the coder is to produce quality software that people can use, but out of my experience I have to say that this is too optimistic. You want fast and sexy results, rushes of adrenaline and “whuhuuu!” moments rather than editing 200 docstrings or writing an tutorial on how to use a special function.
So why am I whining about this? The reason is that I have hit rock-bottom with my dearest pet project. It started of quick and we could “release” 0.1 quite early. The reason for that is that it was clear that the choices where either to redesign the codebase of stop doing it. We did the former and were quickly back to what 0.1 provided with beeing able to extend it so easily and really “get going”. It was then that there was a magical moment where the enthusiasm just faded. We were near to getting 0.2 ready, but deep inside i wanted to start hacking on post 0.2 features rather than finishing up that release. On the other hand it was clear that “release early, release often” (metalink
) is not just phrase, but a necessity if you want to draw peoples attention to what we are doing. Especially if we are talking about a framework.
So i tried *really* hard to get to the point:
- I created bug reports for the 2 main showstopper bugs
- I set up a webpage for the project
- I wrote tutorials, documented the code, posted screenshots, I even released the thing although I know that there is still much work to be done.
Now I just don’t know what else to do. When you browse the intarwebs you often come along webistes of projects that are deprecated or no longer beeing developed. But they were active once. They had a (vibrant) community around them pushing the next release.
I want to learn something out of this:
What can you do to prevent this? I mean there are many examples where small groups of people or even single persons are producing great software for many release cycles.
How do you actually drive the release of an starting open source project? There is no pressure. There is no way telling people what to do.
Are the great projects that we see and use every day really just the gems that survived the strong selection of time and motivation? That would be a hard lesson for me to learn…