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.
This is probably the most important branch. This is where reviewed changes are put. Since bzr.dev is now pqm managed, things that show up here should show up in bzr.dev 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)
Finish converting commands into using self.outf which does unicode conversion appropriate for the command. (~50% done)
- 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.
- 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)
- (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).
- Be able to read that format back in, and add its information into the local repository.
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.
- (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)
- Just get this merged into mainline
Win32 fixes (branch: win32)
- bzr has a few small bugs still on win32, the selftest doesn't pass all sftp tests.
My proposal for handling tags is available from http://bazaar-vcs.org/BzrTagging, 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.
- Implement RIO support for both the pqm, and pqm-submit.
- 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.
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.