While building a GUI application is pretty easy these days, designing a good one remains a difficult problem. It took many years before I found GUI emails clients more productive than pine and just as long before programming in an IDE was more productive than the best editors around. As a dedicated fan/developer of Bazaar, I’ve spent most of the last few years being a command-line junkie. In recent weeks though, I’ve started up a project that aims to change that: Bazaar Explorer.

Bazaar Explorer is a cross-platform desktop application that runs on Windows, GNOME, KDE and OS X. It doesn’t try to be a poor implementation of a file manager or a brain-dead IDE. Instead, it focuses on version control stuff: managing branches, managing changes and collaboration. While it’s not cooked enough yet for me to completely abandon the command line, it’s coming along nicely and is proving just as productive, if not more so, for some common version control tasks. Here’s a brief introduction by pictures.

On start-up, a Welcome page is presented if a location isn’t specified:

As shown above, I’ve created bookmarks to several of the repositories I have on my PC, one repository per project. I also have some bookmarks that navigate straight to commonly accessed branches. (”core” is the core Bazaar project btw.)

Double-clicking on a repository opens the repository view:

At the top are the branches (and other objects) nested inside the repository. Below that are details about the currently selected object. Double-clicking on a branch opens it:

This gives a status report on the current working tree: any conflicts found, what’s new, what’s changed, etc. From the report, you can click on a file to open it in your editor or see the per-file diff. The full diff, together with a heap of other branch operations, is available by clicking on the relevant toolbar button.

Easy access to Bazaar’s various configuration files is provided by the Settings menu:

Furthermore, you can define your own tools and launch them from the Tools menu. In Explorer, a tool is either a special bzr command (like lp-open or pqm-submit), a local application (like KCacheGrind or Qt Designer) or a web site.

Explorer recognises that many users have different needs at different times: one open source project vs another, work vs home, one client vs another, advanced user vs trainer, etc. As such, you can create, download and switch “hats” – collections of tools and bookmarks you want to use together.

Even better than defining your own tools is reusing a set of tools that someone else has already put together! If you’re a core developer or team leader on a project, you can define a hat for others to use and include links to all the important websites they’ll need: the issue tracker, wiki, build server, qa results, etc. That ought to mean less ramp up time for new contributors on open source projects or new staff on in-house projects. See http://bazaar-vcs.org/BzrExplorer/Hats for details.

In summary, I think Bazaar Explorer is pretty cool. For a weekend project that only started in June, I’m blown away by how quickly it’s come together. I can thank the combination of cool technology (Python, Qt, bzrlib, QBzr, bzr-gtk) and keen early adopters for that. A special thanks goes to Alexander Belchenko who has helped heaps, removing bugs almost as quickly as I’ve put them in. If you haven’t already, please give Bazaar Explorer a try. If you like it, please consider translating it to your native language and/or joining the Bazaar Explorer Developers team. We’d love to have more developers on board, particularly if you’re a KDE or OS X user.