John Arbash Meinel

Email: <john AT SPAMFREE arbash-meinel DOT com>

This is just meant to be a simple Wiki page, where I can keep track of the things that I am working on.

I am one of the developers for bazaar-ng a pretty nice revision control system.

My personal page on Launchpad is jameinel. There I have a list of my bzr branches. I'll give a small summary of what is going on in the important ones.



This is probably the most important branch. This is where reviewed changes are put. Since is now pqm managed, things that show up here should show up in within a few days.


These are things that I am interested in working on, once I find the time. This is sort of like a grocery list of what I want to get done.

  • Unicode & user encoding (branch: encoding)

    1. Finish converting commands into using self.outf which does unicode conversion appropriate for the command. (~50% done)

    2. Handle unicode filenames. It turns out Mac OSX normalizes filenames into some weird normalization scheme. (Generally prefering two code points which combine to a character, rather than a combined character (NFD)). Internally we want to use (NFC) encoding, since that is the XML spec. So when we read filenames from the working tree, we need to translate.
    3. Allow unicode revision identifiers, and file identifiers. This requires a branch format upgrade, since we will (probably) be translating the paths when we serialize them to the filesystem.
  • Changesets (branch: changeset)

    1. (done) Create a serialization format for revision information so that it can be sent as an email as a text file. (in a patch-like format).
    2. Be able to read that format back in, and add its information into the local repository.
    3. Create bzr submit, etc commands and their associated data to make it easy to either submit changes to a PQM, or to submit to a mailing list for review.

    4. (future) Support a format that merges multiple revisions together so that the patches are easy to understand for a human.
  • Codeville Diff (branch: cdv-diff)

    1. Just get this merged into mainline
  • Win32 fixes (branch: win32)

    1. bzr has a few small bugs still on win32, the selftest doesn't pass all sftp tests.
  • Tags
    1. My proposal for handling tags is available from, this should be implemented

  • PQM, bzr is now managed using a patch queue manager. But its interface isn't very robust at this point. I have a plugin which makes it a little bit easier to submit changes. There is also the official pqm.

    1. Implement RIO support for both the pqm, and pqm-submit.
    2. Make the RIO support be complete enough so that specific revisions are requested rather than just requesting the entire branch be merged. RIO can also submit the short form of the testament, to make sure everything is received properly.
    3. Consider having the pqm use a URL format like "http://host/branch;revision=foo". This would allow simple submissions using a complete URL rather than fancy stuff.

  • Play around with C++ extensions for hotspots in bzr source code
  • Look into creating a C++ and Python wrapper for JudyTrees. These are neat little dictionary mapping objects, which have very good performance characteristics. In my testing, insert/lookup is significantly faster than std::map, iterating speed is slower, but you can still iterate in sorted order (which is not possible with a hash map). Their speed is primarily because they are a form of 'digital tree', and thus don't have to do any comparisons operations to insert in sorted order. They achieve this efficiently by performing lots of tricks about how data is stored.


JohnAMeinel (last edited 2008-08-06 16:16:31 by localhost)