We don’t have enough time. Some may even say, they have no free time at all. In my experience, that is always a matter of priorities. If something has a high enough priority for you, you find free time to spend for it.
If your top priority is your job and you keep spending ten hours or more at the office, there is hardly any time left for anything else. Depending on how you weigh your priorities, you may be able to accomplish quite impressive stuff in your free time.
A good living example I know is John Resig. He is working for Mozilla, where he is involved in quite a wide variety of activities. But he still manages to keep pushing jQuery forward: From planning of 1.2 over implementing and releasing it, to helping people on the discussion list with “plugin xyz doesn’t work with 1.2” questions.
The open-source field is great to observe other’s priorities. Another example of someone spending quite a chunk of his time on a great piece of software is Joe Hewitt and Firebug. Today Firebug is the one browser plugin that every web developer must have. Since the 1.0 release the project seems to be almost dead. Has Joe lost interest? Or is he lacking the necessary time to continue working on it, due to his new job for Facebook? I’m assuming that his priorities changed, and stuff like iPhone applications now get more attention from him.
Yesterday I found myself being glad about four spam comments out of 22 total comments in the moderation queue on this site. What the…? Well, I try to read and answer all comments, and the number of comments on the jQuery plugins here, mostly on accordion, autocomplete and validation, consume quite a lot of my free time. I don’t want to reach the point where I keep spending too much of my time just answering those comments, and where I have to say “darn, I must get rid of that”. Therefore I’m now thinking about gradually moving at least the validation plugin into the jQuery domain: Host it on jquery.com, move documentation to docs.jquery.com, move the current comment-forum to one of the jQuery discussion lists. If I can accomplish that, it would be easy for someone else to take up the task of maintaining that plugin, without annoying users.
I still hope that Joe Hewitt will at some point come back and at least release new Firebug versions on the official site. Branching opensource projects is often a sign of bad or no communication between the involved parties. And in most cases its the users of the product that suffer, because instead of one great piece of software, you end with two or more. One is official, maybe more stable or better documented. Another has that one feature that the original lacks, and for which you may even give up docs and support, because it makes your daily life so much easier.
The problem is quite visible when looking through the masses of jQuery plugins. There are quite a number of similar tabs plugins, validation plugins, autocomplete plugins and so on. One notable example is jQuery.YAV. Its a plugin that leverages the (rather heavy) YAV validation library to jQuery, enhancing it with a few useful features and simplifications. The author also took a few ideas from my validation plugin, but never contacted me about it. So I did that, and asked him to collaborate on an even better validation solution then what his and mine solution can offer so far. There isn’t anything to show yet, but at least we agreed to cooperate.
An ugly branching story I had to experience for about a year now is Subclipse vs. Subversive. Both offer an integrated visual Subversion (SVN) client for Eclipse users. Both use the same SVN client implementations under the hood (and both use a totally broken one as default, yuk). Subclipse is the older one, and was used by every Eclipse-using early SVN adopter. When Subversive was released, it had neater icons and a few features that made it more attractive then Subclispe. There were some flaming discussions about whether the one or the other was better (“all it has to offer are icons!”). When my current company switched to SVN in february this year, they started with Subversive. It was okay, but very slow compared to the previous CVS client, which all were used to.
Since then quite a few new version of Subversive were released, and each got worse. 1.1.2 seemed to be the last release that was somehow stable. 1.1.3 didn’t work at all. The last one I installed was 1.1.7, due to a reinstall of my IDE. It bugged me with the enter-your-credentials dialog for every single access to the repository (about 50 times a day?), and apparently that was reported on the Subversive lists without anyone caring about it. It was slow as hell. I got errors all the time (“An error occured. Click on Advanced to see the actual error message”). I had to do a manual “cleanup” several times a day – which was always the same click-this-menu-item – and never understood why the tool couldn’t do that itself.
In the end (yesterday), I removed Subversive and installed Subclipse. It was a pleasure: It was fast. And, err, it was, well, fast! Its impressive how great the effect of a little speed gain is when you work with a software the whole day. I could click on the expand-repository and it simply displayed its content, instead of letting me wait a few seconds. Wohoo! What I missed at first were those nifty icons from Subversive. But two mails later I got the interesting hint that I could just select the Subversive icon set from the preferences. Cool. Why is “no icons at all” the default?
Now, whats the point? Why did I bother at all with Subversive? Just because it was shiny compared to Subclipse? Seems like.
I’d like to hear your oppinions on these topics: How do you prioritize your free time? Have you dealt with branching? Where did you regret falling for shiny software?