Skip to content


Scriptable Debugger

Adam Leventhal mentioned on twitter that he'd found my umem slab allocator port on macports. I commented that he might miss some of the umem debugging features that are available on its native Solaris platform in mdb, and we dreamed briefly of a portable version of mdb.

This weekend I took a peek at the mdb sources (via the Illumos Gate) to see how hard this might be. As it happens, this isn't the first time I've looked at porting mdb, so I was bit better prepared to go snooping around in there.

mtrack repo ACLs

Updated: Added schema and UI for Projects to own repos and manage groups.

Following through on user repos and SSH, I revised the ACL support in mtrack and added a permissions editor for the repo editing screen. When you create a repo, it defaults to granting you (the creator) full access and denying everybody else access (equivalent to a private repo in services like Github and Bitbucket).

mtrack user repos and ssh

I've just pushed a somewhat experimental change to the default branch of mtrack that enables per-user repositories, repository forking, SSH key management, and SSH repository serving integration.

It's important to stress that this is preliminary in as much as restrictive controls are missing. There are some ACLs and rights around repo creation that are not yet implemented. Additionally, if you are using OpenID, any authenticated user will be able to add an ssh key and access the mtrack created repos (but nothing outside of that).

What you get in the current tip:

  • Users can create Mercurial, Git or Subversion repositories
  • Delete your own repositories
  • Fork Mercurial or Git repositories
  • Associate your SSH keys with your mtrack login
  • Integration with SSH and Mercurial/Git/Subversion repo server

What you don't get (yet):

  • ACLs to control forking or access within repos
  • Pull requests, patch queue management
  • Graphs of forks and non-merged changes from forks

If you'd like to try these features, I'd love to hear your feedback. To update your instance:

$ hg pull
$ php bin/schema-tool.php

Then navigate to help.php/SSH (source text) to read about setting up SSH.


mtrack: burndown and postgres

It's that time of the month... mtrack update time. Not a huge number of items to report on this time around, but it's a decently significant stepping stone--the schema management code takes us one step closer to an upgrade/deployment process.

  • If you don't explicitly include the burndown macro text in a milestone, a default burndown graph will now be displayed when the milestone summary is rendered in the roadmap section.
  • Added schema management code to handle upgrades that change the schema
  • Added preliminary postgres DB support on top of the schema management code.
  • Revised attachment processing so that the database stores a canonical copy of each attachment. This step helps to enable multiple front-end web servers to be used with the same backend pgsql DB.
  • Created a stable branch that holds the changes up to just before the PostgreSQL DB changes

mtrack: custom fields, snippets

It's time for another mtrack update; here's what's new:

  • Add "Snippets" feature; works like pastebin, but allows for comments to be supplied in wiki syntax in addition to the code or text snippet that you're pasting
  • Add Custom Field support. This is implemented by modifying the schema (custom fields always have an "x_" prefix).
  • Improvements to the "custom ticket query" screens, including ability to select which columns (including custom fields) are included in the results
  • Fix an issue with sorting the "Remaining" time column
  • Fix some IE compatibility issues
  • Improve presentation of tickets in read-only mode
  • Refactor search engine code and allow the use of Apache Solr as an engine. Indexer logs are now viewable in the Admin section
  • Improve perceived search engine performance by forcing it to work in smaller batches
  • You may now delete attachments from both wiki pages and tickets
  • Add post commit hook for the wiki repo, so that changes made outside of the mtrack UI are noticed and indexed
  • Improve diff visualization
  • Add syntax highlighting facility
  • File view now allows blame and line numbers to be turned on or off, and renders with syntax highlighting
  • Allow optional "hour", "hours" and "hrs" unit after the spent time command in the commit hook (Thanks Andrei!)
  • Display remaining time as 0 if the ticket is closed

mtrack: facelift + other progress

I've been working on some changes to mtrack (a software development tracker implemented in PHP) this weekend, with a focus on improving the user experience for the mtrack administrator. To be brutally honest, it was at best a meagre experience for the administrator, but now things are better. They're still not perfect, but it should be a low enough bar to encourage more folks to play with mtrack. I've also spent a little bit of effort to add some caching to improve performance for certain pages.

For those that have tried it in the past, there's a brief summary of what's changed and a couple of screen shots below. This effort is in alignment with the roadmap that I published a little while ago.

OSCON 2010 Redux

Another OSCON is done. As usual, it was a great mix of folks and ideas across many different areas of OpenSource technology.

The most valuable track at these conferences (for me, at least) has become the hallway track. This is due in-part to my becoming a big-headed know-it-all; you pick up a lot of knowledge after you been to a good number of these conferences/conventions. But it is really important to me to be able to converse with fellow OpenSourcerors, whether they are working on the tools that I use on a daily basis or are working on something outside of my familiar tool box.

I like to think of OSCON as a melting pot for OpenSource; an excellent opportunity for cross-pollination between projects.

A particularly interesting development at OSCON this year was the announcement of a new Distributed Version Control System, under the Apache License (v2); it is called Veracity and is the product of SourceGear, LLC. This is interesting for me for a couple of reasons; the first is the license (wouldn't it be cool to embed DVCS to keep track of configuration information?), and the second is the feature set; they provide everything from source control through to distributed issue tracking. Veracity isn't done yet, but I'll be keeping an eye on it.

I'm also pleased to have shared Gimli at OSCON. Gimli is a crash tracing and analysis framework that provides watchdog and tracing support for Linux, Solaris and Darwin (OS/X) systems. You can find my slides on slideshare and find the Gimli project on bitbucket.

It was great to be at OSCON this year, especially with it being back in Portland, and I look forward to returning next year.

mtrack: roadmap RFC

I wanted to share some of my thoughts on future development in mtrack, and solicit some feedback. Some of these are driven directly from user requests, and others are things that I've been thinking about on-and-off for a little while.

I really want to hear your thoughts, whether they relate to ideas and feature suggestions, or whether you have some experience or anecdotes on these topics.

Custom Fields

I was hoping to avoid having to enable this as a feature, as I find the implementation approach taken in the original Trac to be sub-optimal, both in terms of run time efficiency and in terms of user experience when it comes to reporting on the custom fields.

Gimli at OSCON

OSCON 2010

Update: the session is complete; you can find the slides on and the code on bitbucket

I'm speaking at OSCON again with another new topic. This year, I'm spreading the news about Gimli, a Server Process Monitoring and Fault Analysis framework that I built at Message Systems and will be sharing with the world at OSCON.

In a nutshell, Gimli will supervise a process and capture an extensive crash trace (using DWARF 3 debugging information if possible) if the process crashes or wedges, and then restarts the process.

For more details on the OSCON session, check out the session details at

As usual, I'm excited to attend; I still regard OSCON as the best OpenSource conference and greatly value the opportunity to catch up with fellow OpenSourcerors; I hope to see you there!