Thoughts on branching an open source project
I think any good manager will tell you that looking back over the choices you've made is an important step to improvement. In an effort to improve myself (and help anyone in a similar situation) I wrote this post with a few thoughts about branching an open source project (in this case branching Pootle to make Verbatim). My goal is not to criticize anyone's past decisions, including mine, but just to review the pros and cons and what I would do differently in the future. So, a few thoughts late on a Friday:
When I started the planning for branching Pootle I was very focused on scalability (or lack thereof) and most of my initial goals were to improve that including replacing flat files with mysql, creating a cacheable URL structure, etc. In hindsight, I should have realized that this project wasn't going to be getting nearly the traffic load some of our other sites were getting and my priorities were out of order. What I should have been thinking about was usability and interface improvements. Due to my lack of foresight the project launched with enhancements in both areas but I think the time we spent on scalability was premature and the user interface suffered.
Whether it's writing more comments than code or making sure meetings have agendas I'm a huge fan of communication. When branching a project, particularly when there are plans to merge the branch back into trunk, communication is vital. I think our meetings are productive but communication on a smaller scale is still a struggle. Both Pootle and Verbatim ended up writing the same code in a few cases which could have easily been avoided. In this particular case the timezones can make it difficult to synchronize but it's something I'll work at more in the future.
Something we have done a good job with is making a schedule and updating it with new developments. I really want to expand our effort here though. I think one of the difficulties of someone joining a project like this is direction; what are the goals of the project and how are we getting there? Several of us have talked about it on IRC and we all have a good general idea but for someone that isn't as involved it's hard to follow. Once we get over the next big hump (replacing jToolkit) I think this will begin to fall into place with smaller bugs/features revealing themselves and providing a way for volunteers to get footholds on the project as a whole.
Lastly, it might be obvious, but if you're planning on maintaining the branch or merging back to trunk make sure you get along with the lead developers. I'm fortunate to work with the Pootle developers who clearly care deeply about the project. From talking to them it's obvious they have the end users' best interests in mind and are excited that we can all work together to improve the end product. And really, that's what open source is all about and it's great to be a part of it.