Moin for mixed environment development in non-software projects

Initially proposed for GSoC 2009, now put on hold until I have time. Suggestions to tune the spec are welcome.

Introduction

Development in non-software projects requires some added flexibility not provided by tools such as trac and redmine. While moin has potential in this direction, there are a number of usability enhancements possible that recognize the typical workflow and allow easier integration with the rest of the environment.

These are the ways non-software projects are different from software ones :

Here are some of the problems that seem to require addressing :

Proposed Implementation & Deliverables

Storage

Storage is already being worked on by ChristopherDenter. Using the storage system that now exists in Moin, we could write a new backend (and middleware) that knows how to communicate with a version control system. For this, I would work with bzr and hg, mainly because that is what I use / will use. It should be simple to extend it to svn. Once the backend is written, we would be able to do the following :

Milestones

Every milestone is actually a wikipage, containing macros or new markup that specify when it is due, what it is about (category, but not in the moin sense of categories). Macros would require, well, writing new macros. New markup would require extending the DOM specification. Additional markup/macro parameters specify degree of completion and tag a group (this time in the moin sense) for its implementation, and dependencies on other milestones. On one, or multiple, pages, a macro is used to list all the milestones in one category, assigned to one group, or in the whole group in chronological or degree of completion order.

Each milestone page can thus :

Any arbitrary page containing a macro can list :

Auth

LDAP groups integration is most easily achieved, although its somewhat a hack, by generating the appropriate groups pages from an LDAP group. The wiki will have to regenerate this page automatically at some sane interval, as well as allow for manually forcing an update. This could be done in a somewhat more elegant way with an LDAP backend that can generate said pages. The ideal way, of course, would be to rewrite the Groups part of the Auth and ACL system to accept LDAP groups as well. At this, I really dont know which of them is doable in the given timeframe, or if any of them is doable.

Related Pages are recognized not by an automatic system that generates the list, although that would be very nice. Unfortunately, the nature of the relationship is complex and different in different cases (two specification pages are related in that they are specifications. on the other hand, a specification page of section X is related to an implementation page of section X in that they are of the same section). Each page can declare that it is related to some set of specific pages. This system would either be independent of Moin's builtin Category system, or would extend it. I'm leaning heavily towards independent, since the RegEx for the Category system is baggage that is not something I'd like to have.

The typical use case would be having a hierarchial system of 'Categories' in a form of a 'tree' that starts from a point and extends downwards, and at each node branches but never merges between branches. Over such a tree, some nodes, mostly specification related nodes, would be linked to the counterpart nodes from another branch. Each page is then set to be related to all the pages it is directly connected to in the resulting graph. (These things probably have a formal name in graph theory. I'm afraid I dont know what they are).

Once implemented, every page will be able to :

Document Generation

Some clever collection of related pages should be able to, in theory, generate the required documents. However, since a number of these pages are likely to contain binary file formats, I'm not even going to try.

Broad Timeline

May :

June (before Mid Term Evaluation) :

June (after Mid Rerm Evaluation) :

July :

August :


MoinMoin: ChintalagiriShashank/StuffToDoInTheDistantFuture (last edited 2009-07-10 08:31:24 by ChintalagiriShashank)