This is a list of things that are to be implemented. If you miss a feature, have a neat idea or any other suggestion, please put it on MoinMoinIdeas. 
To discuss the merit of the planned extensions, or new features from MoinMoinIdeas, please use MoinMoinDiscussion.
A list of things that are added to the current source in CVS are on MoinMoinDone.
MoinMoinRelease describes how to build a release from the SourceForge repository.

Contents: [[TableOfContents]] 

=== CURRENT ===

Things to do in the near future:
 * Spellchecker: 
  * add a nice progress page, while the dictionary cache is built
  * add a means to build the dict.cache file from the command line
 * Macro that lists all users that have an email address; a click on the user name sends the re-login URL to that email (and not more than once a day).
 * Send a timestamp with the EditPage link, and then compare to the current timestamp; warn the user if page was edited since displaying.
 * Now that we can identify certain authors (those who have set a user profile), we can avoid to create a backup copy if one author makes several changes; we have to remember who made the last save of a page, though.
 * Implement the update script (copying new images etc.) described elsewhere on this page or MoinMoinIdeas.
   * By default, enable an as-if mode that shows what needs to be fixed.
   * Replace SystemPages by using the normal "save page" code, thus creating a backup copy of the page that was in the system. Only replace when diff shows the page needs updating.
 * UserPreferences
   * Send a regular "changes" mail? (checkbox, plus frequency setting hourly/daily/weekly/etc.)
   * Other things like color, icons, menu?
   * On request, send email containing an URL to send the cookie
   * Steal ideas from [http://www.usemod.com/cgi-bin/mb.pl?action=editprefs MeatBall:Preferences]
   * a CSS switch (needs more work on the formatter issue to really work)
   * configurable fonts, font sizes etc. (copy master CSS file to a user one, and send that)
 * MoinMoinRefactoring
   * create a dir per page in the "backup" dir; provide an upgrade.py script to adapt existing wikis
     * or go all the way, and store pages as data/pages/<firstletter>/<pagename>/(current|meta|...|<timestamp>)
 * Add backlink patch by Thomas Thurman
   * Page info: links to / from page.
 * Add a link to Wiki:EditThePageSimultaneously (or a link to a local copy) to the edit conflict message.
 * [[SiteMap]]: find the hotspots and create a hierarchical list of all pages (again, faster with caching)
 * ProcessingInstructions
 * Remember when someone starts to edit a page, and warn when someone else opens the same page for editing
 * macro for the server time/date (pass the strftime string as an optional argument)
 * Using the new zipfile module, add a download of all pages
 * Some of MeatBall:IndexingScheme as macros
 * Diffs:
  * Lynx-friendliness (keep >>> === <<< ?)
  * look at cvsweb code (color-coded, side-by-side comparisons)
  * or look at viewcvs www.lyra.org/viewcvs (a nicer python version of cvsweb with bonsai like features)
  * diff -y gives side by side comparisons
 * Create MoinMoinI18n master sets (english help pages are done, see HelpIndex, translations are welcome)
 * Document the config options (possibly ''after'' the refactoring)
 * Check generated HTML code for conformity

=== BUGS ===

See MoinMoinBugs

=== FEATURES ===

 * Script or macro to allow the creation of new wikis ==> WikiFarm
 * Setup tool (cmd line or cgi): fetch/update from master set of system pages, create a new wiki from the master tarball, delete pages, ...
 * Support URNs, see http://www.ietf.org/internet-drafts/draft-daigle-uri-std-00.txt and http://www.ietf.org/internet-drafts/draft-hakala-isbn-00.txt
 * Add ISBN links
    * IsbnInfo page and ISBN macro
    * pattern d{3}-d{8}-d{8}-[0-9xX]
    * calculate checksum
    * Link icon to IsbnInfo page, and the ISBN number itself to the main URL
 * Support for -- (&dash; ?), << and >> (french quotes) and possibly any (Latin-1) SGML entity.
 * A RegisterInterest macro
 * Add display of config params (lower/uppercase letterns) to the SystemInfo macro.
 * Add a "news item" macro (edit page shows a special form)
 * Implement http://sunir.org/apps/visits.pl
 * Make a sitemap using Wiki:GraphViz
 * System Info: number edits, views, whatever.
 * Add hidden field to editor, for two purposes:
    * recognize saves from the same author
    * prevent direct saves from outside (i.e. simple attacks), that did not load and parse the edittext page before saving
    * needs a way to save meta-info for a page
 * Add change counter to RecentChanges
 * Add PyUnit tests
 * WikiName|s instead of the obsessive WikiName' ' ' ' ' 's (or use " " for escaping)
 * Backslash escapes?
 * Support &''''''uuml; SgmlEntities
 * Configuration ''outside'' the script proper (config file instead of moin_config.py)
 * When a save is in conflict with another update, use the rcs/cvs merge process to create the new page, so the conflicts can be refactored. Warn the user of this!
 * Write timings to a log file (cgi_log) when configured accordingly, so we can check for necessary optimizations.
 * Wiki:WikiWordStatistics (or just add counters to the WordIndex?)
 * Document all MoinMoinUrlSchemes (i.e. action=whatever)
 * Make a ZopeMoinMoin product, to compete with ZWiki product.
   * I'll certainly not have the time to climb the Zope learning curve in the near future. The new source structure would allow to simply add a {{{zopemain.py}}} companion to {{{cgimain.py}}}. '''Volunteers?'''

=== UserPreferences ===
The following actions are needed:
 * On request, send email containing an URL to send the cookie (i.e. login from a click into the email)
 * Add password handling?

Preference settings:   
 * Use text links instead of images on RecentChanges
 * Checkbox: Send daily "changes" mail?   
 * Other things like color, icons, menu?  
