Windows binary available and Outlook

I’ve just uploaded a windows binary for guitone 0.9 – sorry that it took a little longer this time. I’ve been quite busy during the past days and having no windows machine at home doesn’t help much either ūüėČ
Of course if there are other people willing to package guitone on windows, drop me a note. Its actually not much work. A detailed explanation and a InnoSetup installer script are already in place.

On a related note I’m working on a couple of new features for guitone. The next version will be able to create new monotone database and also create new projects from existing ones (basically a frontend for `mtn setup`). Furthermore I decided I should finally implement some workspace commands, so at least the equivalent of `mtn add` and `mtn drop` should be possible, `mtn revert` and `mtn rename` probably as well.

The monotone additions for netsync automation still not made it into trunk, mainly because I was not in the mood to finally fix the anticipated lua testing for stdio traffic (I really should not push this task further away, because the branch where the automate netsync stuff resides in diverges more and more over time…). And of course before this is not in monotone’s trunk it makes no sense to implement it in guitone either – so yeah, if you particularily wait for this feature, give me a kick in the butt so I get finally around.

Hacking on the Train back Home

I’ve been in Hamburg today with two other colleques to show off a milestone of our current project at work. Since the customer was quite satisfied, I was in the mood and finished a short hack for the next guitone release: A node info panel. Here is the obligatory screenshot:

The panel shows a particular new monotone feature which just popped up in 0.41, but was implemented months ago on the Summit: Information in which revision a particular file or directory was created (“Added in”). People can click this and go straight to the revision selector in which they can retrieve more information about the revision, compare it with others and so on.

The panel probably needs some more polishing (i.e. I don’t know if the icons render so pretty in 64x64px on Windows and Linux as well, or if I have to downscale them to 32×32 there), but it should basically work.

I’m yet undecided if I should do another point release for guitone. Not much has changed since then, a few minor bugs have been fixed and preliminary encoding support has been added for the file diff dialog. My plan was to add support for the automate netsync commands in 0.9, but since they haven’t yet landed on mainline, it makes no sense to implement support for them on guitone’s side. (Thats the drawback if you have to implement stuff on monotone’s side yourself before you can actually continue with your main goal.)

But since I just got a note from Ulf Ochsenfahrt today that he built Ubuntu 8.04 debs of guitone I’m now egged enough to do finally finish the missing tests for the nvm.automate-netsync branch and get this hopefully implemented later on in guitone as well.

We’re git – Resistance is Futile

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!

guitone 0.8 released – spring time is hacking time!

guitone 0.8 has been released today. Major improvements happened under the hood, the outstanding changes are:

  • guitone is now licensed under GNU GPL Version 3 or later. Please note¬†that you’re now only allowed to legally distribute binaries which¬†you’ve built with Qt 4.3.4 or later, since earlier versions of Qt¬†are GPLv2-only
  • new “driver” interface to call certain dialogs of guitone from the¬†outside, which should help for all sorts of integration wishes ondifferent platforms. A “TortoiseMonotone” project has already been¬†kicked off at the last summit – currently residing on the net.venge.monotone.tortoise branch –¬†and this project is still looking for help from people which are¬†fluent in Python and / or the Windows API
  • numerous improvement in workspace handling (faster, prettier,¬†more configurable, yatta, yatta…)
  • for a full list of changes check the NEWS file

You can download guitone at the usual location, a win32 installer (yes, we’ll have one!) should follow shortly.

montone hackery

As promised a few days ago I’m writing a few words on the Monotone Summit which took place in Wuppertal from 28th of April to 4th of May 2008. I could only attend for five days because my train left already on early saturday morning, and I almost managed to get too late to it – must have been the absence of sleep, but lets tell the story from the start.

Before I arrived in Wuppertal on monday noon my feelings were a bit mixed about the event. On the one hand I had not attended anything like this before in my life, on the other hand I was completly puzzled what should actually happen there, because virtually no conversations or communication about possible topics happened on the mailing list beforehand. Given the fact that only seven people attended our little summit (me included) and none of the core hackers managed to ship over from the US, I was also unsure if it would actually become a success. Last but not least I was not sure if there was actually so much I could do for the project, being only a casual contributor who most of the time fixes UI / frontend bugs or works on the automation interface.

So after about five and a half hours train riding I found my way to the W-tec building and to the summit room we’ve been invited to use for the whole week. The ice broke pretty fast. Thomas Moschny, Dan Carosone and Lapo Luchini arrived earlier and were already discussing and working on different topics. Our hosts, Christof Petig and Siegfried Herbold, were also there and provided us with everything we needed (well, you know a programmer is satisfied if he gets coffein and occasionally something to eat :-)). Richard Levitte arrived later at the same day after getting horribly lost while navigating to W-tec by car. I must admit that I wouldn’t have done any better as a Swede in Germany.

Since our little crowd contained at least two interface gurus (Thomas Moschny, who is the author of TracMonotone and me obviously, the guitone guy), one of the main topics were improvements in the automation interface. We had and still have the strong belief that with a better, more complete interface it gets easier to connect monotone to all kinds of other software, thus increasing the uses and the amount of users over time.

Dan’s and Christof’s first topic was cvssync, which should help projects which are still stuck on CVS to get into touch with distributed version control much easier, by providing tools to push and pull contents from a CVS repository to and from monotone.

Lapo created a new grammar for selectors with the help of ANTLR which also led to many discussions during the summit (most of these discussions were lead by Dan :)).

On wednesday or thursday Lapo, Richard and Dan started on moving our existing, completly spammed MoinMoin wiki installation over to ikiwiki. The nice thing about ikiwiki is that it provides many different backends to version control systems, so our new wiki (temporary URL here) actually has a fully blown history, merge support and can be edited just from our local command lines – neat! My task later was to make it look a bit prettier and similar to what our front page looks like – easy, given the fact that I don’t do much else on my daily job…

Beside working on the automation interface (here especially ticker support for commands which need those, like f.e. push, pull and sync) I did some work on guitone. Lapo gave me input for the file diff dialog (which now displays correct line numbers).

Christof and me also started on thursday working on a TortoiseMonotone version. Christof stole some code from TortoiseHg (which astounded us is completly written in Python!) and wrapped his head around the Windows API, while I started the work on making interfacing with guitone possible, in particular preparing guitone on the other side to make it run mainwindow-less on request. This was actually pretty easy thanks to the fact that I introduced the dialogmanager wrappers in 0.7, so main windows and dialogs were only roughly coupled together.

(Lapo, Dan, Christof, Thomas M. and Siegfried [from left])

More stuff will probably fall out within the next versions of monotone and guitone, when more work and polishing is done on the projects which just started at the summit, so don’t expect that everything is already in place the next time you pull the development head of either project.

In the end these five days have been a great time for me, because I finally met some of the people I only knew from IRC or the mailing list and I got the strong feeling that the monotone community – despite of all the competition it has to face – is still alive and keen on working on this great software.

Christof was an awesome and gentle host for Richard and me during the time – we’ve had our own little appartment in his house and he managed to spend a lot of time during the summit for us even though he has a wife and two kids which obviously needed some care as well. This was not always easy, given the fact that our usual day started on 9:30am and ended between 12am and 2am in the morning. I guess he needs a vacation after this “vacation” – so Christof let me repeat my invitation: If you ever want to go east and visit Leipzig, you’re very welcome here!

(Richard and me)

Perverted Logic / Monotone Summit

If you like to have a laugh today, read this. Found via Rob Weir’s blog.


The Monotone Summit goes on and its quite fun to meet and work with all the people I just know from IRC or the mailing list. I mostly worked on automation stuff so far and improved some things in guitone. A longer blog entry with other impressions (and maybe some pictures) will follow within the next days…

Google Summer of Code 2008 is up…

…and neither guitone nor monotone will be a part of it.

Google just put the list of mentoring organizations online and our direct competitors, namely git and Mercurial, of course got slots. On #gsoc on Freenode a Google employee told the crowd about a total of 505 applications this year, where only 20 or so have been spam, so it seemed to be a rather hard selection on Google’s side as well, because in the end only 175 organizations could be accepted, mainly for organizational reasons.

Now while I was almost sure that my application with guitone would not be accepted (this was kind of already written in the FAQ), it is surely a shame that we couldn’t bring up some ressources for a proper application for monotone.

Sure, no application is better than a half-baked application, which, in the end, may create bad karma and reputation for the project itself, but still, I’m feeling a bit depressed right now.

Maybe next year… in the meantime I hope people are at least willing to work on a successful European Monotone Summit

Summer Of Code 2008 / guitone Status Update

I’ve just read on Slashdot that applications for this year’s edition of Google’s Summer Of Code start in early March. I’m thinking about pushing this a little more this year for the monotone project, since we kind of “missed” it last year (we sent in our application too late). And I’m positive to also place at least one possible project for guitone there. While it certainly makes a lot of fun to code with Qt, it would make even more fun if somebody could team up and help out here and there…

In the other news: monotone 0.39 has been released yesterday and I’m once again astonished how easy openSUSE’s build service makes it to create rpms for a great variety of distributions and architectures. I’m currently using it to build openSUSE rpms for monotone and guitone there and its really easy and fun to do that.

I’m also pretty actively hacking on guitone at the moment, fixing bugs and implementing new features there. There are still some things on my TODO list before 0.8 is ready to release, amongst fixing bugs, f.e.

  • make the filesystem watcher implementation usable and working properly, so guitone updates the workspace view in the background if changes happen to the underlying filesystem
  • implement some of the workspace commands with native calls (i.e. add, drop), rename / move will be slightly harder, also wrt to view updates, maybe I’ll implement simple filename renames at first

The following things already have been implemented and are definitely part of 0.8:

  • restricted commit (right-click on any file/folder and hit commit!)
  • diff possibility for patched files in the commit and changeset dialogs
  • a new panel to view, add, edit and drop database variables
  • improved, more user friendly startup dialog which now also contains possibilities to edit the preferences and load recent databases and / or workspaces
  • improved loading times for huge workspaces, f.e. loading the complete org.openembedded.dev should run a couple of times faster now
  • and much more…

guitone 0.8 will also be the first version of guitone to be released under GNU GPLv3. Now that the Trolls released Qt 4.3.4 recently which allows licensing the library under the very same license, I’m positive that this change will not introduce too many headaches to distributors. Otherwise, drop me a note via private mail and we’ll work out a solution.

Based on my current workload and other activities (Chemnitzer LinuxTage, anyone?) I hope to get a stable version out mid march. No promises on this, though ūüėČ

guitone 0.7 released

guitone 0.7, my Qt-based monotone GUI, has just been released today. Most of the changes over the past 9+ months since the latest major version are under the hood, so there are only a few “new” things you can actually see (most notably the
file history browser, a new icon set and numerous other improvements in existing dialogs).
The main reason for all the internal overhaul is however, that guitone should now run much smoother, faster and less crash/error prone than previous versions. It also includes better mtn error detection and fixed some of the outstanding platform bugs on Mac OS X and Windows.

A complete overview of all the changes can be found – as always – in the
NEWS file. Make sure you grab your copy here.

If you encounter any problems, have suggestions or anything else, drop
me a note or open a new task in the task tracker.

And here is finally the mandatory screenshot – click to see more screens:

guitone changeset browser