Development Status

MirrorBrain is used in production, and serving millions of requests each day, since spring 2007. There were no security incidents.

It is actively maintained, and new releases happen every few months. (see the news archive).

There are open bugs and problems, with any piece of software... usually only non-critical.

The most critical part, mod_mirrorbrain (the actual redirector) is dependable, feature-complete and there are no significant bugs known.

The (optional) module mod_asn was added at the beginning of January 2009 and also proved stable since then. It's also feature complete, although one has to note that it is IPv4-only at this time. An extension of the AS (autonomous systems) database towards IPv6 might become feasible in the future. See issue 58 and this page

mod_autoindex_mb is stable and feature-complete.

Mid-term goals:

  • extend the documentation - continually happening, but slowly - and it is still incomplete in some areas. (In case of questions, remember to ask on the mailing list or on IRC.)

  • a web frontend to the mirror database would be very useful. It would be possible to reuse lots of code as-is from the mb Python module. Of course, any other framework would do, for instance Ruby on Rails; it just needs to talk to the database as usual. Expertise and contribution in any form would be welcome.

    Django would be a perfect candidate for this anyway (at least in my view). Some initial work has been done, implementing the custom data type that's needed for mod_asn as extension to the Django ORM (seemed quite straightforward). So there is a proof-of-concept, with few lines of code, but fully functional. It is not in svn yet — please ask on the mailing list and I could dig it out!

  • implement the buffer-cache friendly mirror selection described here: http://postr.poeml.de/a-buffer-cache-friendly-mirror-selection-algo

  • integrate the download counter discussed here: http://mirrorbrain.org/download-statistics/ (proof-of-concept runs at OpenOffice.org and the Document Foundation)

  • implement more (and more detailed) means for mirror monitoring

  • integrate a framework for push-syncing mirrors (syncing mirrors and knowing about their file lists goes hand in hand very well)

  • rewrite the scanner as a Python module, to get rid of code duplication and additional requirements, and in order to make parts of it reusable. There is prelimary code for that in the subversion repository. The critical parts are done: collecting files via FTP and rsync in memory-efficient way, in the form of a Python generator pipeline. The current scanner is a monolithic Perl script, but many parts of its functionality would be useful when they'd exist as modules available for reuse; for instance, the check for mirror capability of delivering large files.

Contributions would be highly welcome!