I’ve made my first (popular) open source project since September, and it has been a very enlightening experience. It’s called Fallen Sword Helper, and it’s hosted by Google Code.
The project started when I started playing an online browser-based RPG game. I registered last April, but I didn’t really play before last summer (2008), as I found the instructions to be a little difficult. Anyhow, the game is (as you can see from the title) Fallen Sword from Hunted Cow Studios. After playing for a bit, there were some things in the game that somewhat annoyed me, which made the game less than enjoyable. After being accepted to a top 250-guild, which had a rule to not attack people of some guilds, I decided that I should enhance the game experience, as it would be very difficult for me to remember who were our “friendly” guilds – the ones I shouldn’t attack. So, I started working on a new Greasemonkey script to make those fixes.
Using a Greasemonkey script for Firefox was really a method I had used in another browser-based game. In fact, I had made a Firefox Extension first, because it would otherwise be impossible to send XMLHTTP requests. Of course Firefox extensions are a lot more difficult to develop, because each change you make means you have to restart your browser. So, since I discovered that Greasemonkey had an internal API that could send XMLHTTP requests (and also a way to persist variables), I decided that Greasemonkey scripts were the way to go.
After a while, I decided to post the Helper script on to userscripts.org, so that other people would benefit from it. I also put in an autoupdate feature, which I felt was a major requirement for me to keep my sanity.
As time progressed, there were many submissions to the userscripts forum, so I felt it was time to upgrade this project to a real collaborative environment – a true source control system, and, if possible a bug tracking tool. Google Code really is very good for all that. It provides a true subversion server, a trac-like (custom Google though) issue tracker, a wiki, and all of these on Google’s infrastructure. The only thing missing (for now) is a way to import/export the whole subversion repository, but I can live with that.
Doing that in a real scale was a new experience for me. From the project itself, I have become a lot more proficient with javascript and Firefox’s DOM, as opposed to mostly IE’s DOM which I used to work with. I also learned a lot about subversion in the process, to the point that I even managed to migrated a very old and very corrupt SourceSafe from work to a subversion repository (even though this was mostly done out of plain fear that the corruption would soon become terminal).
The best part of creating an open source project (even with just 3 active developers right now – but it would seem a lot more users) was finding out about that spirit of cooperation with people from all around the world (literally!). It feels really nice having other people reading and understanding your code, and being able to expand it without the “seams” being visible. By that I mean that they understand the code (I hope it doesn’t go to my head, but it would seem I make somewhat understandable code. Or they are supergeniuses), and what they add has the same “code smell”, you can’t see where my code ends and my collaborators’ code begins.
Another cool thing that has come out of that, is that I finally got to use a proper issue tracking software, and also to manage a project at a higher level than just writing code. Don’t get me wrong, writing code is still my favorite activity, but it’s nice to know that I could also manage a project from higher up. I’ve also started writing technical documentation for all that. All in all, I think I’m doing a more professional and complete job for this project that I’m not getting paid for, than the projects I’m really getting paid for at work 🙂 Of course the fact that for my project I’m the chief developer, project manager and main customer helps.