I just read today that Trolltec^WQt Software (a Nokia Company TM, blabla) plans to move their internal source control from perforce to git, effectively from October 1st (read here and especially here). Now I’m not crying a tear for perforce here, but rather worry about the other “left” competitors of git, amongst them mercurial, darcs and monotone.
There is an almost regular attempt of different people to persuage certain projects to jump the ship from monotone to git over the last couple of months. Somebody now even writes a to make the process even easier to get away from monotone… This makes me really think. Are we really so bad? Or is git just that good?
Git draws a lot attention off the “others”. While this is good for distributed version control in general, its bad for the communities around the particular projects. People like me who’re still attached to one of those systems wonder if the work they’re doing is still honored somehow, if it will attract “fresh blood” anyhow – new people who carry the ideas and development further. Or if all these people are just absorbed by… you know…
git – resistance is futile.
I don’t know enough of git to measure exactly in which areas its better or worse than monotone. Actually, I’m not even interested in that. I’m biased in the way that I like to stick with the tool I love. Monotone provides accuracy and data integrity above all. It tracks renames perfectly. Its simple, yet efficient cert functionality allows many custom use cases. There are more than three dozen hooks which let you customize the behaviour of monotone. The documentation and test coverage is great and the community friendly and very helpful.
Again, do I care how this compares to git? No, absolutely not.
Still, I’m not biased enough to convince other people to use monotone. I guess most people from the monotone community won’t do that. Not because we think we have a bad product, but because we have this liberal thinking that diversity is good and that people will find us themselves if they’re fed up with their old version control system. The problem is that people tend to be more fed up with cvs or subversion, than with git or mercurial to actually find us…
Of course a software project lives and dies with the people around it. When Graydon (the original author of monotone) announced his official retirement earlier this year, I wrote a message entitled “The future of monotone” to monotone-devel, which broke loose a huge thread afterwards. So while my initial fears that not many people were interested anymore in the project vanished a bit due to the overwhelming amount of answers there and also because of the upcoming European Monotone Summit, where quite a bit new work started, this feeling slightly comes back when I look at the actual results of the past months after the summit. The last release (0.40) lies back more than four months and while a couple of small things happened in the meantime, almost nothing improved in the important areas like networking and security. But of course its bad to just point the finger at other people, in the end I have not done anything in the core areas either. Maybe because these things are not important enough for me, maybe because I think monotone works nicely as is, and maybe because I’m not smart enough to create the needed machinery f.e. to enable partial pull (you know, one of this “killer features” people of big projects ask constantly…). Of course, the time factor is also good for an excuse.
So, should we all just move to git and forget everything else? No, probably not. But I’d certainly look quite close on the requirements for a new project’s revision control system. Maybe git is what you look for, maybe mercurial, and maybe its monotone.
Maybe you’ll just learn to love monotone once you tried it out just like I did and maybe you don’t want to see anything else afterwards… the monotone community, me included, would certainly give you a warm welcome then – thats for sure!
By the way this article reminds me about discussion on git mailing list when someone from CERT, IPsec, or similar organization asked about ensuring that all commits are authenticated, something that I think can be done with git… but because (as far as I know) one of design goals of Monotone was strict control of authorship of commits (something that Linus deemed “a waste of time and misdesigned”), so we recommended Monotone to him, which is much more about security.
BTW. you forgot to add Bazaar (http://bazaar-vcs.org) to the list of Monotone contenders (distributed OSS version control systems).
Thanks for the recommendation – and yes, you’re right, I forgot bazaar. Sorry guys!