Yesterday I released Bananajour, a LAN-based, bonjour-aware, git collaboration tool with a healthy potassium-enriched web interface.
It was at Railscamp 2 in November 07 that found I found myself in the the presentation pit trying to explain git to 20 of my fellow hackers. I wanted to explain how it worked and to demo the power of its commit and repository model.
Being fairly new to git it took just 3 minutes of rambling through the obscure git commands to send Lachie to sleep, the 19 others in the room quickly following. I wanted to get 3 laptops set up with a publicly served git repository that we could pull between and show decentralised collaboration. What I thought would be straight forward turned out to be friggin hard, especially compared to setting up a shared svn repository.
Luckily for us LAN collaboration with git has gone from total pain-in-the-ass to pretty-darn-good thanks to tools such as gitorious and gitjour. Gitorious was rad and served us well for while, and gitjour really kicked ass—hats off to Chad, Evan and Rich—and though it was a far cry from the comforts of github and gitorious it was light-weight and decentralised and was quite a hit at Railscamp 3.
Gitjour's old conference hack code (our railscamp fork not withstanding) combined with a few design gotchas warranted a new approach. Ever since Railscamp 3 and the prolific gitjouring I'd wanted to build a git network aggregator. It's pretty much impossible to do a git log of a remote repository without fetching the repository itself, and after wanting to build a good web UI for each repository I discovered I could simply have each web interface serve up JSON directly from its repositories using grit, advertise these feeds and projects via bonjour and BANG! We'd have all the ingredients we need for git world LAN domination.
Having started Bananajour before camp I thought I'd have it done in time. 33 hours after leaving Sydney, with zero sleep and plenty of drinking and hacking, and it was ready for a gem install. Apart from gem compatibility issues (damn you Rack 1.0.0 not playing nicely with Sinatra!) it got a fair bit of use at Railscamp, with muchos hacking from Nathan de Vries, Lachlan Hardy, Josh Bassett, Myles Byrne, Ben Hoskings, Brett Goulder, Tony Issakov, and Mark Bennett. After much refactoring on return from the sunshine state it is now ready for general consumption.
To get up and started you simply need to:
sudo gem install toolmantim-bananajour --source http://gems.github.com
Once that's done run bananajour and you're up and running.
The slides for the bananajour presentation I gave this week at Sydney Ruby Oceania group are up on slideshare and be sure to check out the readme on the github project page for more info on usage and hacking instructions. Support, feature discussions and rants should be forwarded to the bananajour google group.
Carla Hackett, the brain behind railscamp tee 1, 2 and 3, is reponsible for the awesome logo. Hit her up for all your design lovin.
The Bananajour aggregation app, a central app to show the commit activity across the entire network, never got built in the end—it was worth pouring more love into Bananajour itself—but if someone is keen there's already a name and a logo for it: Bananarama!
Oh, and keep an eye out for the peanut.

