Thursday 18 June 2009

You're doing it wrong!

Just yesterday I found a missing feature in one of the apps I just started using. My thought processes were something along the lines of “hey, I could add this feature and it would be good”. So I went to the project's website, found their source code repository, and got blown away by the comment that was with it:

Please note that code you get from this repository is not intended for productive use (unless it's tagged as a released version, of course, in which case the usual alpha/beta disclaimers apply ;-)). We like to break our codebase, config files, database schemas and all kinds of stuff. We sometimes commit non-compiling revisions to facilitate collaborative development. Running such an unstable version might trash your settings, your backlog and maybe your computer. You have been warned!


Eh? OK, I get the first sentence. It is even a good disclaimer. Tagged releases are more stable. People regularly commit code that is unpolished. Sometimes even with some known bugs or issues.

The second sentence has me going “NO!?! What are you doing?

The third sentence just blew my mind. This project is using a DVCS. Not my DVCS of choice, but really that doesn't matter. All DVCSs are made to have good merging and sharing of code between developers. Saying “We sometimes commit non-compiling revisions to facilitate collaborative development” is just a lack of understanding of how to use the tools. You are using a DVCS to facilitate collaborative development! This is centralised version control thinking.

Try this for a code to work by:
Trunk should always at least compile, run, and pass all the tests.


This hasn't stopped me wanting to work on the code, but it has raised my caution levels.

5 comments:

Sputnick said...

Said disclaimer was written when the quoted project was still using svn and we *had* a centralized development model :) Since switching to git, we take care about keeping the master branch in a working state, in particular considering that many users use the git version nowadays.

Maybe we should update the page at some point... :>

Unknown said...

Your attempts to disguise the name of the project in question are futile, as googling the paragraph brings your straight to Quassel. However, as sputnik says, it sounds like they do actually work to your rule, just have out-of-date dev docs.

Tim Penhey (thumper) said...

I wasn't trying to really hide the project, I just didn't want to make it the focus of what I was trying to get across.

I think it is great that now there is a pristine trunk, and I'm happy that the devs are doing this. Perhaps a wiki update is in order.

Anonymous said...

disagree

Tim Penhey (thumper) said...

Scott,

We're all entitled to our own opinion, but I'm interested in hearing exactly what you are disagreeing with.