What He Said

Tuesday, April 8th, 2008

I have used Mercurial for over a year, and started using Git on Agila Sverige. I really like Git and I have therefore kept a draft blog post trying to capture why I like better than Mercurial.

That draft was just deleted since I essentially share Dustin Sallings thoughts on the differences between Mercurial and Git. Apart from the Gnu Arch and Darcs parts - what he said.

git Is Winning The DVCS Battle With git-svn

Saturday, February 9th, 2008

I’ve been using distributed version control for over a year now, and if it is up to me, I will never use a centralized VCS again.

When I evaluated the alternatives last year, I choose Mercurial as the DVCS we are using at WeMind. The reasons were:

  1. Usability - git was quite obscure back then
  2. Speed - bazaar and monotone was quite slow
  3. Large enough uptake - OpenSolaris and Mozilla started using Mercurial at the same time.
  4. Runs on all platforms, if we ever employed someone who wants to use Windows
  5. Built in Python which could be a good think if I ever wanted to extend it

A year later we are happy with Mercurial, but the landscape has changed. In particular I am seeing a huge growth of people using git, especially within the Ruby community. Which in itself is something I am happy about.

The biggest reason I see for git’s resurgence is git-svn. It allows people to start using git locally while still having Subversion as the backend, and when everyones ready the switch is easy.

There is a hgsvn in the Mercurial world, but it is read only, so you cannot push your changes back to Subversion. I strongly believe that the Mercurial community should focus on this if it wants to regain its momentum.

Git still has weak support for Windows, but that seems to be a non-issue in the Ruby world.

I am pretty agnostic about which DVCS will be the dominant one. The most important thing is that people are moving away from the centralized VCS’s.

For a great post on the subject, read what Dave Dribin has to say about it

Merb, Leaner And Meaner Than Rails

Saturday, December 8th, 2007

I have used Rails on a daily basis for almost a year now, and before that I was a night time hangaround. While I am definitely a happier programmer using Rails than anything built on Java, I still feel that it can get better.

First of all I want more things to be plugins. And really, they should not be plugins at all but gems instead.

Why plugins? We use RSpec instead of Test/Unit, HAML instead of erb and are seriously looking into JQuery instead of Prototype. And of course, we are using Mercurial instead of Subversion. All of this is of course possible to use in Rails, but a lot of things are sort of made for the default choice, such as generators generating tests, and plugins having the -x switch for Subversion. And I am pretty sure that this is the way DHH wants it.

So, when 2.0 is now released, I see that the Rails community as a whole does not see the same problems as I do. If they did, they would have done more like the stuff above, instead of sexy migrations and ActiveResource.

This is where Merb becomes really interesting. I have looked at it before not understanding its value, but now I see a framework that does everything I want Rails to do. Gems as plugins and very agnostic about templating languages, Javascript frameworks and even ORM frameworks - almost a heresy in Rails. I will definitely think about using it instead of Rails in the future.

Distributed Version Control

Wednesday, October 17th, 2007

I just read this article on distributed version control by Ben Collins-Sussman who is a lead developer behind Subversion. If I understand his arguments, he basically says that DVCS is better than centralized VCS, but you probably should not use one since 80% of all developers are too dumbfounded too understand VCS at all.

I am one of the pretentious, self-righteous and obnoxious fanboys of DVCS. And let me tell you this: the difference between using DVCS and Subversion is on par with the difference in programming in Ruby compared to Java. If you have made the switch you just do not want to go back.

And finally: We have taught our GUI-guy Martin to use Mercurial. He has limited experience of using VCS’s, but he grasps the difference between commit and push. My face is straight saying this.

Mercurial and 3G - hg pull in the middle of nowhere

Wednesday, July 25th, 2007

I am currently on my way home from northern Dalecarlia, and I am making full use of the 3G card. I had received a couple of update mails from our central Mercurial repo, so I tried to do an ‘hg pull’, and expected it to take a while. Lo and behold, I got all changesets within 15 seconds! This says a lot about Mercurials protocol, as the reception was so-so; no surprise as we are driving here:

Driving between Särna and Älvdalen

Not speaking at RailsConf Europe

Friday, June 15th, 2007

I just got a mail confirming that I will not speak at RailsConf Europe this fall. I had submitted a proposal named “Version Control in Rails using Mercurial” which was going to show the benefits of using a distributed version control system when developing a Rails app. My opening line would have been “Hi, I am Marcus and I have been Subversion free for six months”.

For some weird reason, so many people in the Rails community - and the open source community as whole - still talk about Subversion as something great. It is not. Subversion is decent at best if you are comfortable knowing that you are using second or third best tools, but believe me, it is a crap choice knowing the alternatives in distributed version control.

I really wanted to point all this out to the a larger audience so that we maybe will move beyond the Subversion centric mess which is the Rails community today. Oh well, maybe next year.

For a very entertaining and opinionated view on version control systems, watch Linus Torvalds most awesome presentation on Git at Google.

Another Mercurial Convert

Tuesday, April 17th, 2007

Paul Duncan is another Mercurial convert, and explains his choice of VCS very well

Mercurial Is My New Favorite VCS

Friday, February 23rd, 2007

I am starting a new development project where I will do a lot of coding myself, at least initially. There will most probably be times when I have to work offline - perhaps a litte evening coding while at vacation with my family, definitely the days when I am home because the kids cannot be at kindergarten.

So I had this initial thought - can I make a offline copy of the Subversion repository, make changes to it and merge it back when I come online again?

It turns out that there are solutions for doing that - namely SVK and svn-mirror. However, while searching I around I also realized that there had been a revolution in the VCS world, and no one told me.

In the wake of the BitKeeper mishap, it appears that several groups of people found it their mission to create the next great distributed versioning system. These days we have:

These seem to the more prominent ones, but I am sure you can dig up a few that I have missed.

To make a long story short, I have decided to use Mercurial for my next development effort. In fact I am using Mercurial for versioning all my files. It is ridiculously simple to set up versioning for an existing folder (hg init; hg add) so there is simply no reason not to.

To learn more, I recommend reading this, this and this.