Skip to content


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!

a new domain

I'm letting lapse this year after holding it for 11 years. For those that weren't with me back then, The Brain Room was my consulting company, providing graphic and software design services.

When I joined OmniTI, I chose to use for my blog in a kind of self-mocking move; I equated my efforts at taking over the world with superior software with the effectiveness of Dr. Evil. A lot of people thought I was styling myself after Dr. Evil, which wasn't quite right, but close enough :-)

Since I've been going around updating my account information with various services, I thought a change would be in order. I'm of the opinion that one should use their own name as part of their internet persona, I finally got a domain that did just that.

So here we are: I've taken the opportunity to give things a really minor facelift, and also migrated comments to the Disqus service.

The move may cause a re-post of some of my articles to aggregating services; I apologize for that. is not going anywhere anywhere soon, but if you have me on file using, you will need to update your information to instead.

mtrack: now with OpenID and reCaptcha support

Some of the feedback and questions that I've gotten about mtrack were around making it easier to deploy and use in an open or public facing environment.

To that end, I've added support of OpenID authentication and bot detection via reCaptcha.

To enable these features is quite simple; for OpenID, add the following lines to your config.ini file:

MTrackAuth_OpenID =

You should also remove any other Auth plugins that you may have there, as how they interact with OpenID is not currently defined.

This will cause mtrack to keep users classes as anonymous until they either request to log-in via a link in the navigation bar, or attempt to access a page that requires privileges that the anonymous user lacks.

Users authenticating via OpenID can contribute to tickets and wiki (unless you change their permissions, either directly, or via their user class), and those changes will be attributed to them using their OpenID identity URL.

mtrack has a system for aliasing users from different repos and authentication schemes, so if you had a code contributor named "wez" in one of your repos, an administrator can add their OpenID URL as an alias via the user administration screens.  The admin user would edit the "wez" user and add "" to the list of aliases.  This will cause mtrack to see that OpenID as being equivalent to the "wez" user.

You can, if you wish, make an OpenID URL recognized as an admin user by adding the following lines to your config.ini:

[user_classes] = admin

This will have the effect of giving me admin rights to your mtrack install.

What about captchas?

Captcha's allow you to require that the person submitting a request be a human and not an automated submission agent.  In practical terms, this helps to avoid spam by limiting it to human spammers instead of spam bots.

To enable Captchas in mtrack using the reCaptcha service, go and register your domain and get yourself a private and public key pair.  Then add the following lines to your config.ini:

MTrackCaptcha_Recaptcha = pubkey, privkey

Where pubkey and privkey are your public and private keys respectively (you must not use double quotes).

This will cause a captcha to be displayed and checked in the wiki and ticket editing screens for anonymous and authenticated users; admin users will not see the captcha.


mtrack home page:

mtrack mailing list:

IRC: irc://