entries friends history user info Previous Previous Next Next
sneJ - wow wow monotone
A Giant Moose
snej
[info]snej
Add to Memories
Share
wow wow monotone
I've just discovered the coolest thing ever; or at least, the coolest thing since Katamari Damacy. Monotone is a newish version-control system. Which isn't usually a very exciting topic (though everyone enjoys harshing on CVS), and new version control systems are popping up like mushrooms these days, but monotone is making me bounce up and down because it involves so many things I'm interested in:

• Peer-to-peer networking
• Delta encoding [XDelta]
• Using hashes to track documents
• Digital signatures and key-centric PKI
• Many-to-many synchronization
sqlite
Lua

It also enables a development model I really like, and encountered briefly while I worked at Sun, and have missed ever since: instead of having a single repository, a project has a tree or graph of them. Every user has a local repository to which they commit their changes. Then there are operations to propagate changes between repositories. This makes project integration work much more smoothly.

Monotone has excellent documentation with a very clear tutorial; always a plus. The concepts are pretty easy to understand, I think. (As opposed to some of the new systems, at least one of which is based on concepts from quantum mechanics. Really.)

So far the only drawbacks I've found are that, as a new tool, it's lacking in GUI front-ends or integration with IDEs; and more significantly, that there doesn't seem to be a way to transmit revisions through means other than its whizzy P2P protocol, which is awkward if you don't want to punch through your firewall and/or leave a machine running as a server.

Tags:
Mood: ooooh shiny

Comments
jmissig From: [info]jmissig Date: December 4th, 2005 06:20 pm (UTC) (Link)
Was this the one some people were proposing as the new version control system for Linux (the kernel)? I think I remember reading about it and being pretty impressed.
snej From: [info]snej Date: December 4th, 2005 06:24 pm (UTC) (Link)
No, I think that's the one that was being called "Git" (you can find it via my link to the list of other VCS systems.)

Really, most of these systems sound pretty neat. I'm especially taken with Monotone because it is in many ways eerily close to some of the ideas I've been developing this year. But in general I'm just really glad that so many developers are thinking outside the CVS box. (I count SVN, nice though it is, as being inside the box, since it's really just a cleaned-up CVS with much-needed new features and a better architecture.)
xaosenkosmos From: [info]xaosenkosmos Date: December 4th, 2005 07:42 pm (UTC) (Link)
I'm pretty sure people were proposing the use of monotone for the kernel. Linus "designed"/developed git exclusively for the kernel tree. It just happens to work pretty well outside that context, mostly because it's stolen all the good ideas from bitkeeper and avoids any kernel-specific hackery.
From: [info]evan Date: December 4th, 2005 07:35 pm (UTC) (Link)
People had proposed monotone, and in fact git was partially based on monotone (Linus wrote something like "they have a lot of the ideas right, but ...").

Monotone was made by [info]graydon who has been one of my geek crushes since I was a teen. He's really bright.

Regarding development models: the discussion here (from a subversion developer) and ensuing comments (the last two are from monotone developers) are worth a read.

(As for darcs, the quantum physics thing is sort of a red herring. I've played with it a bit, and I like it -- I think it's much more simple and clean than the others -- but I'm sorta scared away by reports of slowness.)
snej From: [info]snej Date: December 5th, 2005 01:27 am (UTC) (Link)
Ah, very interesting discussion you pointed to! Graydon's comment about a 'marketplace of branches' really makes sense to me ... it's another step in the "cathedral vs. bazaar" evolution.

I remember you mentioning graydon before ("geek crush" is a great term!) I'll have to take a look at his journal. It's a small world.
xaosenkosmos From: [info]xaosenkosmos Date: December 4th, 2005 07:43 pm (UTC) (Link)
[info]evan has raved about monotone a few times in [info]evan_tech, but i haven't cared enough to install the billion and a half prerequisites. And the versions in debian were always a few steps behind the main tree.

As cool as monotone seems, the recent version control pandemic has pushed me further into my CVS shell. I'll come out when there's a clear winner or three. I'm leery of joining the repo-of-the-month club, the project manager's equivalent of the language-of-the-month club. Worth noting: monotone managed to include both clubs, a deft piece of politics =)
From: [info]evan Date: December 4th, 2005 10:44 pm (UTC) (Link)
Nah, monotone is C++. And they claim "no prerequisites" on their front page... (apt-get build-depends monotone ought to do the trick in any case.)
snej From: [info]snej Date: December 5th, 2005 01:10 am (UTC) (Link)
According to the FAQ, its only dependency is on a single C++ utility lib called "Boost", which can be statically linked.

Plus, you can download prebuilt binaries right off the home page. I just grabbed the OS X binary, dropped it into /usr/local/bin (it's just a single executable file), and I was ready to roll. It took less than a minute.

I've imported my personal projects into Monotone today. I'll let you know if it wipes my hard drive or kills any kittens or anything like that.
chanson From: [info]chanson Date: December 5th, 2005 10:07 am (UTC) (Link)
Boost is pretty big and gnarly. It's sort of like saying that TextEdit.app depends on a single ObjC utility framework called Cocoa...
snej From: [info]snej Date: December 5th, 2005 03:54 pm (UTC) (Link)
Ah, point taken. No wonder the monotone executable is 6MB =)
jmissig From: [info]jmissig Date: December 5th, 2005 07:15 pm (UTC) (Link)
Oh Boost.. I love it and I hate it at the same time. It's great in that it provides basically the "next step" of things that should eventually be in STL, but practically everything about it is nonstandard. I wish they'd just use regular autotools instead of all that custom jam stuff.
snej From: [info]snej Date: December 5th, 2005 01:16 am (UTC) (Link)
Oh, and re. LOMC: As Evan said, Monotone's not written in Lua; but it uses Lua as an extension language. There are a bunch of Lua "hook functions" it calls, which you can override with your own. Looks very powerful (there's a whole section documenting the hooks in the manual.)
chanson From: [info]chanson Date: December 4th, 2005 09:41 pm (UTC) (Link)
Have you seen svk? It also does many-to-many synchronization with local repositories, but it's built on top of Subversion.
snej From: [info]snej Date: December 5th, 2005 01:12 am (UTC) (Link)
Yes, I looked at it briefly a month or two ago, but not in depth. Have you tried it?
chanson From: [info]chanson Date: December 5th, 2005 01:15 am (UTC) (Link)
Not yet, mostly because it looked like it would take more effort than I cared for to build, and because at the moment distributed version control and merging induces this slight pressure right behind my eyes...

I suspect that dealing with traditional multi-way Subversion merging will, I'm sure, get me used to that.
snej From: [info]snej Date: December 5th, 2005 01:35 am (UTC) (Link)
It sounds as though the distributed systems have more sophisticated merge algorithms than SVN or CVS, partly out of necessity. From what I've read about SVN, it sounds like merges can get really messed up the second time you merge changes from another branch, which sounds scary.

Monotone is trivial to install, btw. Click the "OS X" link on the homepage, unzip, chmod +x, and mv it to /usr/local/bin/monotone. That's all.
chanson From: [info]chanson Date: December 5th, 2005 10:12 am (UTC) (Link)
My impression of cross-tree merges in Subversion (there aren't really "branches" per se, it's all zero-cost copy-on-write tree copies that know their point of origin) is that they're pretty straightforward, but that repeated merges of the same changeset are undefined. Instead of being defined as an identity, which would be intuitive but require more tracking under the hood of what came from where and how.
snej From: [info]snej Date: December 5th, 2005 03:56 pm (UTC) (Link)
Right, I think we're talking about the same thing. The SVN docs were giving me warm fuzzies about branching, until I came to that section; then my hair went back into its usual raised position.
18 comments or Leave a comment
profile
sneJ
User: [info]snej
Name: sneJ
calendar
Back April 2012
1234567
891011121314
15161718192021
22232425262728
2930
links
page summary
tags