the Fiddler's picture

Moving to Bazaar/Launchpad (part 1 - planning)

Ok, I'm officially fed up with SVN. For the past 4 years, I've lost countless hours to its peculiarities and general slowness. It's time for a change.

Enter Bazaar:

  1. it is fast and powerful
  2. it is extremely intuitive
  3. it is cross-platform
  4. it integrates well with Launchpad (more on that later)

In short, it has the right balance of features, speed and usability for a project like OpenTK.

I have to add that I was very tempted to go with Git, but ultimately decided against it. Git is a great tool but it has two deal-breaking deficiencies:

  1. it is significantly less intuitive than Bazaar and has a pretty steep learning curve (the manual for "git log" is 24 pages long)
  2. git-svn takes more than an hour to pull OpenTK from Sourceforge.

On the upside, Git is blazing fast and has a huge community behind it. While this doesn't outweigh the disadvantages for OpenTK, it is the weapon of choice for many open-source developers - git-bzr should take care of that.

Now Launchpad. I must say that I really like the Launchpad-Bazaar synergy. Downloading OpenTK is as simple as:

bzr branch lp:opentk

and a few seconds later you have your local copy.

Another great feature is the ability to upload branches to your account and link them to bug reports. Hacking OpenTK now becomes trivial: branch, modify, upload. I'll be notified of your branch automatically and will review and merge as necessary. Great!

Now the plan goes something like this:

  1. Import opentk/trunk and opentk/branches/gl4 to Launchpad (done).
  2. Enable OpenID logins on so you can use your Launchpad login here.
  3. Bug Canonical to implement feature #210943, so you can use your login in Launchpad (if you happen to have a Launchpad login, please upvote this issue!)
  4. Pick between the Launchpad or the local bug tracker and disable the other.
  5. Ensure everything is working correctly and disable the SourceForge repositories.

(If you've read this far, let me share a little secret:


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
opcon's picture

Sounds good. I have used bazaar and Launchpad for my own project and although I was mainly using it for backup and history as it was only being developed by me, it seemed very intuitive and straight-forward. I particularly like the way the Launchpad site works.

Tal's picture

I like Sourceforge more, but I guess it would be better for development.

test bot's picture

Unfortunately, SourceForge only supports Bazaar 1.10 repositories, not the newer (and faster) 2.0 ones.

criswell's picture

Have you considered Mercurial? Generally speaking it outperforms Bazaar, it runs on SourceForge, it is a DVCS (like Bazaar), is cross-platform (I've personally used it on cross-platform Windows/Linux/Mac projects), and is typically an easy migration for users used to SVN to pick up and learn.

Ultimately, bzr, git, hg (Mercurial) will all get you the same long term results (a reliable DVCS system) so the most important thing that matters is that the core developers are happy.

kwaegel's picture

I have used Bzr, Hg, and git and I don't think it really matters which you go with. Anything to get rid of SVN.

(I am currently using git for personal projects and I love the flexibility, but the docs are very long and Windows GUI support is spotty at best.)

phq's picture

Is the choice of bzr done?

If so I think you should drop the OpenID requirement and just finish the transition.
About the bug-tracker I would guess that Launchpad has some nice integration with commits and bugs that makes it a better choice than the current one.

But since it has taken so long time since the original plan I hope there might be room for other choices.

Sorry but the deal-breakers are not fair.
The intuitive part aside, which is a fair argument but the one about git log having many options is not, what matters is whether the default operations are OK.
The other about importing to git takes long time is sad considering the original post was written over a year ago, I hope it is not the git-svn import that is taking the time.

Personally I would recommend git/GitHub. Compared to Lauchpad it is more code focused encouraging forks.

Git itself has IMO a better management of remote branches which makes it easier to pull contributions from multiple people into your own repo which would allow the experimental development to continue much faster while the stable branch is managed by the Fiddler. I'm not sure what capabilities bzr has here, I'm guessing bzr branch into multiple directories one for each remote branch?

golkeeper's picture

AFAIK OpenTK development was stopped by maintainer 4 month ago (no updates to svn, no news about project state). Possibly it might be a community maintainance, but requests about moving it to modern code hosting (primarily to github) were ignored.

criswell's picture

With regard to the project seeming possibly orphaned (golkeeper mentioning no updates in several months), wouldn't it be a good idea if someone were to take the initiative and pull it over to something like github or bitbucket anyway? IIRC, there are other projects depending on OpenTk (including MonoGame, last time I checked) so it would be a shame to see it vanish.

I mean, converting from svn to something else is pretty trivial. I've got a (likely dated) guide on my site for converting from svn to hg ( I'm sure guides exist for conversion to git or any number of other DVCSes. It would just take someone with initiative to get it started.

flopoloco's picture

I like GIT and GITHub for popularity, but it has very steep to curve to learn.

I have never looked into Bazaar, generally it looks like GIT but it's very easy and straight forward. That fact that within two minutes I got up and running with it it's very interesting.
Also it comes out of the box with a practical GUI application.

golkeeper's picture

I remember, folks even suggest maintainer a help with moving to git, but no dice :)
Moreover, project code and commit story is already on github but this was made as "temporary repository" and OpenTK maintainer didn't comment on this too.