Last year (2009) I went to the Ubuntu Party 2009 in the Cité des Sciences de Paris la Villette. It was nice, and I had a great dinner with most of the staff. I didn’t expect much from this event, I have just been there by curiosity; because I didn’t like Ubuntu a lot. And yet, I was impressed by Mark Shuttleworth’s conference¹, which changed my mind and my considerations on it. I thought and I still think it is a crappy Operating system which is also simple to deploy and to use. What has changed is that now, I know that this “imperfect” software is based on very good ideas, and that the Ubuntu team seems to be very dynamic (which means that the correction of any bug or defective design is just a matter of time).
First, Mark told us about cadence (or to plan releases on milestones rather than functionalities). He said that it:
- Energizes a project
- Regularises project releases (on a 3/6/12 months basis; adapt the time cycle to the project)
- Force developers to release their work to the project
- Gives a rapid feedback from users
- Makes collaboration between projects easier
- Allows users to help each other (since they have similar versions of software)
I think this might be a good practice for middle-sized and big projects; while I would prefer “when it’s done” releases for little projects, since it allows more flexibility and give me much more free time when I work alone on a project.
Then, he spoke of the quality of a project, and said that:
- Projects witch have tests are more open to contributions
- Automated package creation from stable software branches increases the number of people who really use an up to date version of the software and allows a great feedback on latest versions.
- It’s important to be aware of the difference between a new software development and the maintenance of the current version of an existing one.
- There is less pressure to back-port new features (rather than to maintain stable branch) when people know when the next version will be out (see cadence).
- More aggressive changes can be done since more accurate feedback is available from more users.
- Automated crash reporting gathers all crash information (mainly from log-files) and spot all problems as they happen.
And finally he got into design, or the way you approach a problem.
- Best open source software are made by people who instinctively understand (grok) good software design.
- Design as skill is a profession.
- Creating both a design and engineering space on a projects make the project healthy.
- Ask tests from unexpected (aka. random; as instance, people picked from street or at a shop, friends of friends, etc.) people gives a more complete feedback
- Design is also about functionalities integration into the window manager and all its parts.
In the end, I liked to be there, I learned a lot of things, and now, I still use Ubuntu, but I don’t grumble as often as before about it.
So, see you at the next Ubuntu Party²
¹ A post on Mark’s blog about time based release and cycles in free software.
² For the moment, the page doesn’t exists.