«« Next Year I'm Getting the Flu Shot Durham Spec in the Pipe »»
blog header image
Mozilla Releng and Openness

It's funny and yet so sad how software professionals are secretive; protecting methods of "modern" software development like they're trade secrets. Then people write books about ten year old methods which lets the cat out of the bag for everyone and the rest of the people using twenty year old development methods "catch up" to ten years ago. Repeat cycle.

The funny thing is that the methods are not revolutionary; it's how they are used in the right combinations and adjusted according to development conditions. Software development is controlled and constant microevolution -- it's a learning process, but what's learned should be applied and not forgotten as development progresses. The process that's used should allow breathing room for this learning and changing.

No one wants their competitor to exploit their competitive edge but public discussion about software development often ends up ten years behind in yawn territory. Then along came open source projects and blogs.

Take Asa Dotzler's blog for example, where he's starting to talk more about the details of Firefox development. Firefox is part of a larger group of Mozilla projects that use common code, so all of this common code has to be coordinated and the CVS branching done in such a way as to not interrupt active development in one project while another is preparing for a release.

A specific Mozilla example is how Firefox 1.0 used a very old but stable branch of Gecko, the Mozilla project's rendering engine used in The Mozilla Suite (Seamonkey), Firefox, Thunderbird, etc. When Firefox 1.0 was finally ready to release Gecko was already half a year of development down the road and not held up by the Firefox stabilization and testing effort. Now that Firefox 1.0 is out the door the Firefox team will catch up to a more current version Gecko with the 1.1 release and then probably be well behind the bleeding edge of Gecko again by the time Firefox 2.0 arrives.

The Mozilla project is truly a great public example of modern release engineering (releng) practices. The Linux kernel is actually very straightforward and uninteresting in comparison because kernel development uses multiple active and completely independent development trees instead of Mozilla's CVS branching, committer access, bug tracking, patching and fairly formal peer review process.

A lot can be learned from Mozilla releng if you're paying attention. This is how big companies are doing releng and when the projects get this big and interdependent, you have to. But even for small projects a good releng plan can make development smoother and the team more flexible. Why doesn't your company have a releng plan?

Posted at February 02, 2005 at 03:03 AM EST
Last updated February 02, 2005 at 03:03 AM EST
Comments

I was looking for open source CASE tools the other day and started to think about how funny that term is. Computer Aided Software Engineering. Because we don't spend enough time on the computer. Now we have to do all the non programming work on the computer too. It's funny, because they are trying to replace paper documents and diagrams, with ones done on computer. Of course, very few people have ever done software design documents on paper. I think that detaching from the computer and writing stuff down, drawing it out by hand, really helps the design process.

» Posted by: Kibbee at February 2, 2005 07:29 AM

That only works if you are doing a small diagram, don't have to share it with many people, don't have to modify it, and not making something that other people can easily help improve.

If you want to get the warm fuzzy feeling of drawing, use a white board when talking to someone.

What will be great is when *all* docs that you would need that reflect the structure / functionally of a system would be easily generated from the code / running app.

And I don't understand what your comment really has to do with the post. I'm a bit confused.

» Posted by: Jim at February 2, 2005 09:28 AM

I've never been a fan of long term "artifacts" (diagrams or specifications) because the codebase often changes right underneath them and they get out of date. Then they become misleading.

If I make an artifact I don't dress it up too much. I treat it as a temporary document to aid in short term communication with other people. In the future I don't depend on it to be completely accurate, I just use it as a guideline. My blog was good for that with AudioMan ... because the designs were often transient.

» Posted by: Ryan at February 2, 2005 09:54 AM

It kind of fit in when looking into development processes. It's kind of just something that I've been thinking about that roughly related to development. Just felt like posting. Anyway, One thing that current software design tools don't do is help you to keep the documentation in sync with the actual code. Maybe something like this is needed. Also something which shows the changes in the design over time, allowing for documentation of why things changed.

» Posted by: Kibbee at February 2, 2005 10:58 AM
Google
 
Search scope: Web ryanlowe.ca