= Required Trac Refactorings = Some of the Bitten features require extensions and refactorings of Trac itself to allow seamless integration. This page describes the required work and tracks the progress made. [[PageOutline(2)]] == Custom Database Tables == === Objectives === The Bitten plugin for Trac will require a set of custom tables in the Trac database. There needs to be a way to allow plugins to create their own tables when an environment is initialized, or in retrospect when the plugin is enabled for an existing environment. === Status === [http://www.third-bit.com/trac/argon/wiki/BioKeirMierle Keir Mierle] checked an initial implementation into [http://www.third-bit.com/trac/argon/ Argon] that allows the {{{trac.Environment}}} to itself be a component with extension points, and defined an extension point that would get invoked when the environment is first created. This change was improved upon and ported to Trac in [http://projects.edgewall.com/trac/changeset/1785 r1785]. Still need a way to allow components to add their tables after the environment has already been created, and to upgrade tables when the schema changes. == File Annotations == === Objectives === To integrate the display of metrics such as code coverage or style problems into the Trac [wiki:TracBrowser repository browser], the {{{trac.mimeview}}} framework needs to be extended to allow annotation of files in an extendible way. === Status === Preliminary support for custom file annotators has been checked in to Trac in [http://projects.edgewall.com/trac/changeset/1764 r1764]. The API will need further refinement to deal with additional annotations, for example: * The user should be able to select which annotations are shown. By default, only line numbers are displayed. * The current implementation assumes that every annotator provides one annotation type, and adds exactly one column to the rendered table. We might need to allow an annotator to contribute multiple columns (but probably still all belonging to a single annotation type?) * There needs to be a way to deterministically order the annotation columns. Line numbers first, some columns before the actual content lines, some columns after, etc. * In addition, annotators may not (only) want to add a column, but also do things like give a line a certain background color. == Notification on Repository Events == === Objectives === The Bitten plugin needs to be notified when Trac detects new changesets in the repository. === Status === Work on this has not started yet. == Plugin-specific Permissions == === Objectives === The current permission system in Trac needs to be revised so that it either becomes more generic, or allows plugins to define their own actions and meta-permissions. === Status === Some preliminary work has gone into the branch [http://projects.edgewall.com/trac/browser/branches/cmlenz-dev/perm/ cmlenz-dev/perm]. Also, there has been a [http://lists.edgewall.com/archive/trac/2005-May/003206.html proposal] for a redesigned permission system on the mailing list.