One feature that we want the new database to include is storing at least an audit trail of changes, so that we can tell who changed a group's entry (or added a signatory) and when. Ideally, we'd want to store complete old versions. Ideally, we'd use some third-party system to do this, instead of implementing it ourselves. Some projects that try to provide this functionality: * django-revisions (sometimes known as django-versions) * http://stdbrouw.github.com/django-revisions/ * License: Berkeley 2-clause (?) * Activity and sustainability * First commit August 2010 * Last commit March 2011 * Somewhat limited documentation * Design * Store every version in the table with the model * Provide accessors for getting the most recent version * Appears not to support linking to a "bundle" (an object, not a version) --- see https://github.com/stdbrouw/django-revisions/issues/5 * Performance may be an issue --- https://github.com/stdbrouw/django-revisions/issues/9 * "Single table" model seems dubious * It's not immediately clear to me how to make the admin also save the old version * AuditTrail * http://code.djangoproject.com/wiki/AuditTrail * License: none specified * Activity and sustainability * First "commit" August 2007 * Last "commit" August 2010 * Never had anything resembling a website or a source code repo, AFAICT * Very limited documentation --- just the one page on Django's wiki * Design * Store versions in a shadow table per-model * django-fullhistory * Listed under "Models, database, history, trails" on http://code.djangoproject.com/wiki/DjangoResources * License: GPLv2 * Activitiy and sustainability * First commit August 2008 * Last commit January 2010 * Design * Store all versions of all models in a single table, JSON'd * Metadata stored unpickled * Time * Editor * Some other stuff * django-reversion * https://github.com/etianen/django-reversion * License: Berkeley 3-clause * Activity and sustainability * First commit September 2008 * Last commit April 2011 * Decent-looking documentation * Design * Store all versions of all models in a single table, pickled * Metadata stored unpickled * Time * Editor * Comment * Performance * Slightly concerned that the "here are the changes that have been made" view might be too slow; as long as we limit to editor and time this should be fine