1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- Generated by Docutils 0.9 -->
3 <document source="original/WikiRequirements.rst"><paragraph>#FORMAT rst</paragraph><section ids="requirements-for-an-oekonux-wiki" names="requirements\ for\ an\ oekonux\ wiki"><title refid="id1">Requirements for an Oekonux Wiki</title><topic classes="contents" ids="contents" names="contents"><title>Contents</title><bullet_list><list_item><paragraph><reference ids="id1" refid="requirements-for-an-oekonux-wiki">Requirements for an Oekonux Wiki</reference></paragraph></list_item><list_item><paragraph><reference ids="id2" refid="introduction">Introduction</reference></paragraph></list_item><list_item><paragraph><reference ids="id3" refid="requirements">Requirements</reference></paragraph><bullet_list><list_item><paragraph><reference ids="id4" refid="non-functional-requirements">Non-functional requirements</reference></paragraph></list_item><list_item><paragraph><reference ids="id5" refid="functional-requirements">Functional requirements</reference></paragraph></list_item><list_item><paragraph><reference ids="id6" refid="requirements-for-policy-choices">Requirements for policy choices</reference></paragraph></list_item></bullet_list></list_item></bullet_list></topic><comment xml:space="preserve">############################################################################</comment><comment xml:space="preserve">############################################################################</comment></section><section ids="introduction" names="introduction"><title refid="id2">Introduction</title><paragraph>In <reference name="Project Oekonux" refuri="http://www.oekonux.de/">Project Oekonux</reference> there has been a long discussion about setting
4 up a Wiki for the project. Also several attempts to establish a Wiki
5 have been made. Most of these discussions took place on <reference name="the projekt mailing list" refuri="http://www.oekonux.de/projekt/liste/">the projekt mailing list</reference>
6 which is the organizing body of the project.</paragraph><paragraph>One of the most important questions was which Wiki software to use.
7 Finally a decision has been made based upon the requirements being
8 raised.</paragraph><paragraph>The following lists all the requirements which have been found and
9 lists the alternative solutions for them. One reason for this list is
10 to document the design decisions / choices taken and their basis in
11 the requirements. This way it is easier to</paragraph><bullet_list bullet="*"><list_item><paragraph>understand the decisions</paragraph></list_item><list_item><paragraph>change decisions while not forgetting about reasons for the original
12 decision</paragraph></list_item></bullet_list><comment xml:space="preserve">############################################################################</comment><comment xml:space="preserve">############################################################################</comment></section><section ids="requirements" names="requirements"><title refid="id3">Requirements</title><section ids="non-functional-requirements" names="non-functional\ requirements"><title refid="id4">Non-functional requirements</title><enumerated_list enumtype="arabic" prefix="" suffix="."><list_item><paragraph>The software must have an active developer community and must be
13 Free</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Only an active developer community of a Free Software
14 project guarantees for a constant development.</paragraph></field_body></field></field_list><paragraph>Discussion came down to two candidates which met this requirement:
15 <reference name="MediaWiki" refuri="http://wikipedia.sourceforge.net/">MediaWiki</reference> and <reference name="MoinMoin" refuri="http://moinmoin.wikiwikiweb.de/">MoinMoin</reference>. The following requirements list
16 alternative solutions only for these two Wiki implementations.</paragraph></list_item><list_item><paragraph>The software must be easy to use for people used to Wikipedia</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Because of the overwhelming success of Wikipedia many
17 people are used to the way how Wikipedia is operated.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Given by definition.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>The typical use cases need to be identified and a
18 special help page must be created for these users.</paragraph></field_body></field></field_list></list_item></enumerated_list><comment xml:space="preserve">############################################################################</comment></section><section ids="functional-requirements" names="functional\ requirements"><title refid="id5">Functional requirements</title><enumerated_list enumtype="arabic" prefix="" suffix="."><list_item><paragraph>Email notification must be possible sending diffs and other changes</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Email notification is a basic requirement for any
19 offline processing.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Rumor has it that there is a plug-in for email
20 notification but nobody saw it yet (2005-03-26).</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Supports email notification as diffs for arbitrary pages
21 and page groups (regular expression). Only notifies on moves and
22 deletion of pages.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>It must be possible to limit changeability of a page (for instance
23 for user's pages)</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Some pages are private pages or should not be changes
24 for other reasons.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Don't know whether this can be enforced technically.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Implements access control lists (ACL) allowing for
25 arbitrary rights.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Categories must be possible</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>With categories can form arbitrary non-hierarchical
26 structures</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Navigation panels must be available</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Useful to create overviews.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available as <literal>Navigation</literal> macro for hierarchical
27 structures and as <literal>PageList</literal> macro for structures based logical
28 expressions on regular expressions over page names.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>A version history must be available</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Needed to get an overview of the change history of a
29 page.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>List of changes for a given user must be available</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Nice to have.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Not available.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>A watch list must be possible reporting about the latest changes
30 for a given set of pages</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Nice to have.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Can be simulated by email notification.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Automatic links by using CamelCase (aka WikiWords) must not be the
31 default</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>CamelCase makes sense only in certain language. In
32 particular German is a language where automatic CamelCase links
33 are not too useful.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>CamelCase words never create automatic links.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>The <reference name="NoCamelCase" refuri="http://moinmoin.wikiwikiweb.de/ParserMarket/NoCamelCase">NoCamelCase</reference> plug-in makes this the default.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Support for other than the standard Wiki syntaxes like
34 <reference name="reStructuredText" refuri="http://docutils.sourceforge.net/rst.html">reStructuredText</reference> must be available</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>All Wiki languages suck so support for more sane
35 syntaxes is a very useful thing. In particular support for
36 <reference name="reStructuredText" refuri="http://docutils.sourceforge.net/rst.html">reStructuredText</reference> being a powerful language and a good candidate
37 for a standard ASCII based markup language.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>There is no support for any other syntax than the
38 MediaWiki syntax.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Offers several syntaxes by the concept of parsers. Among
39 the available syntaxes are <reference name="reStructuredText" refuri="http://docutils.sourceforge.net/rst.html">reStructuredText</reference> and <reference name="LaTeX" refuri="http://www.latex-project.org/">LaTeX</reference>.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Arbitrary attachments must be possible</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Nice to have to attach arbitrary data to a page. In
40 particular it makes possible to include material not marked up in
41 the Wiki syntax.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Unknown but probably available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="11" suffix="."><list_item><paragraph>Shortcuts for links must be available</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>In particular it is useful to be able to reference
42 entries in the Oekonux mailing list archive as easy as possible.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Implements this by templates.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Implements by InterWiki links.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="12" suffix="."><list_item><paragraph>Page templates must be available</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Page templates are a good way to support policy
43 decisions by offering standard templates for all page types.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Not available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="13" suffix="."><list_item><paragraph>It must be possible to revert page changes</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Useful to undo unwanted changes.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="14" suffix="."><list_item><paragraph>It must be possible to know who did a change in a page</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Nice to have.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Available.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="15" suffix="."><list_item><paragraph>Offline usage must be possible as far as possible</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Not everyone is always online so offline facilities are
44 generally useful. Offline usage includes</paragraph><bullet_list bullet="*"><list_item><paragraph>a push feature for change notification</paragraph></list_item><list_item><paragraph>browsing</paragraph></list_item><list_item><paragraph>editing</paragraph></list_item></bullet_list></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Not available. At most email notification is available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Email notification allows for monitoring changes and in
45 principle the diffs can be used to update a local copy. A local
46 installation of <reference name="MoinMoin" refuri="http://moinmoin.wikiwikiweb.de/">MoinMoin</reference> only needs Python and <reference name="MoinMoin" refuri="http://moinmoin.wikiwikiweb.de/">MoinMoin</reference> so it
47 is easy to accomplish. Because <reference name="MoinMoin" refuri="http://moinmoin.wikiwikiweb.de/">MoinMoin</reference> uses a file based
48 storage scheme it is at least easy to update a local copy in
49 short online phases for offline use so at least offline browsing
50 is available.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="16" suffix="."><list_item><paragraph>Pages must be locked during they are edited</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Page locking prevents parallel editing of a page which
51 is useful in a highly frequented Wiki.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Not available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Editing a page locks it for 10 minutes and the lock can
52 be renewed.</paragraph></field_body></field></field_list></block_quote><enumerated_list enumtype="arabic" prefix="" start="17" suffix="."><list_item><paragraph>It must be possible to edit sections of a page</paragraph></list_item></enumerated_list><block_quote><field_list><field><field_name>Rationale</field_name><field_body><paragraph>Makes parallel editing of a page less dangerous which
53 is useful in a highly frequented Wiki.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Not available.</paragraph></field_body></field></field_list></block_quote><comment xml:space="preserve">############################################################################</comment></section><section ids="requirements-for-policy-choices" names="requirements\ for\ policy\ choices"><title refid="id6">Requirements for policy choices</title><enumerated_list enumtype="arabic" prefix="" suffix="."><list_item><paragraph>Pages standing in a certain close relation to a certain other page
54 must be possible in a sane way</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>There are several ways in which a page can have closely
55 related pages (e.g. discussion pages). It makes sense to have a
56 uniform way to express this relation.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Implements discussion pages as one a special type of
57 closely related pages by suffixing <literal>Discussion</literal> to the
58 namespace of a page. For other closely related pages there is no
59 fixed implementation.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>By making sub-pages possible all types of closely
60 related pages can be implemented by some fixed names being part
61 of a policy and supported by page templates.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Structuring of content must be possible by a page hierarchy</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>The maintenance policy may decide to have a page
62 hierarchy as a structuring principle.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Implements a top level structure by namespaces and
63 allows for structuring otherwise.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>With sub-pages arbitrary hierarchies can be build on any
64 level.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Sub-Wikis must be possible</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>The maintenance policy may decide this makes sense.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Not available.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Could be done in a page hierarchy on any level.</paragraph></field_body></field></field_list></list_item><list_item><paragraph>Underscores and white-space in page names must be possible but
65 insignificant</paragraph><field_list><field><field_name>Rationale</field_name><field_body><paragraph>If the maintenance policy decides that underscores and
66 white-space may be used in arbitrary ways the software must be
67 able to reflect this.</paragraph></field_body></field><field><field_name>MediaWiki</field_name><field_body><paragraph>Unknown.</paragraph></field_body></field><field><field_name>MoinMoin</field_name><field_body><paragraph>Underscores and white-space is significant.</paragraph></field_body></field></field_list></list_item></enumerated_list><comment xml:space="preserve">############################################################################</comment><comment xml:space="preserve">############################################################################</comment><substitution_definition names="projekt"><reference name="the projekt mailing list" refuri="http://www.oekonux.de/projekt/liste/">the projekt mailing list</reference></substitution_definition><substitution_definition names="NoCamelCase"><reference name="NoCamelCase" refuri="http://moinmoin.wikiwikiweb.de/ParserMarket/NoCamelCase">NoCamelCase</reference></substitution_definition><target ids="project-oekonux" names="project\ oekonux" refuri="http://www.oekonux.de/"/><target ids="the-projekt-mailing-list" names="the\ projekt\ mailing\ list" refuri="http://www.oekonux.de/projekt/liste/"/><target ids="mediawiki" names="mediawiki" refuri="http://wikipedia.sourceforge.net/"/><target ids="moinmoin" names="moinmoin" refuri="http://moinmoin.wikiwikiweb.de/"/><target ids="restructuredtext" names="restructuredtext" refuri="http://docutils.sourceforge.net/rst.html"/><target ids="latex" names="latex" refuri="http://www.latex-project.org/"/><target ids="nocamelcase" names="nocamelcase" refuri="http://moinmoin.wikiwikiweb.de/ParserMarket/NoCamelCase"/><comment xml:space="preserve">LocalWords: diffs CamelCase InterWiki MoinMoin rst projekt MediaWiki aka</comment><comment xml:space="preserve">LocalWords: Wikipedia PageList WikiWords reStructuredText</comment><comment xml:space="preserve">LocalWords: Wikis NoCamelCase</comment></section></section></document>