I've built a personal home page and a company web site and both times I built applications (first in Perl, second in Python) that I used to generate the HTML pages. Both of these contained different sub-sets of the functionality of MoinMoin such as:
Handling of StructuredText of some sort.
- Mechanisms for navigation.
Generation of RecentChanges and some kind of index.
- Consistent look through general headers and footers.
The main difference from MoinMoin is that I've been writing my structured text (and embedding HTML) in my favourite text editor (instead of a HTML form) and generated static HTML.
I've toyed with the idea of using MoinMoin for all of my new web site, and protect it so that only I can edit files, but I would like to be able to for instance embed arbitrary HTML, and it seems a little wasteful to run cgi-scripts on every access when the content is really static. I also have slightly different ideas on navigation, headers adapting to the current page etc.
So, MoinMoin itself is not a perfect fit, but large parts of it is. I don't know if this is what the ongoing redesign is about, but I would love to be able to use:
- Going from template and structured text to HTML
Automagic generation of RecentChanges and Index
- Search functions
without the Wiki things. I just want to be able to make static pages with the above convenience.
The refactoring will enable these things, or at least make them much easier. Creation of static pages can be done by writing a different "driver" script. Note that the current (current == in CVS) moin.cgi is just this:
from MoinMoin import cgimain cgimain.run()
I'll also add a way to export XML, which in turn will be implemented by using the Formatter/Writer interface, or a similar mechanism. And where's a HTML and a XML writer, there can be more... :)
There are three point in my arguing here:
Obviously, using the existing code in MoinMoin means less reinvention of the famous wheel. Since I'm about to fix http://www.thinkware.se/ I would probably hack things out of MoinMoin to do this anyway, but naturally I prefer to use nice modules that are made to fit this, and being actively supported together with the rest of MoinMoin. I'm sure others feel the same.
- Using the same code for wiki and rest of ones site makes it easier to give a common look and feel in the wiki part and the non-wiki part, not only for color and small print in the footers, but also to intregrate navigation, maybe use the same search page for both the wiki part and the rest of the site and so on.
- Suddenly we have much more than just a wiki, which means (?) a large user base and a better chance of a long and prosperous life.
The obvious downside is that the purpose of the project will be less focused. I think it's worth that complication--even if one should perhaps not underestimate that problem.
This can be solved by providing the necessary interfaces to plug extension stuff in (extend the core), or add said "driver" scripts (use the core, from the outside). Or both, in combination.