]> sipb.mit.edu Git - ikiwiki.git/blob - doc/tips/convert_MoinMoin_to_ikiwiki.mdwn
51129a67d2c5986b6f7bed521160ee9affaa54b8
[ikiwiki.git] / doc / tips / convert_MoinMoin_to_ikiwiki.mdwn
1 This MoinMoin converter converts wikis to ikiwikis backed by a git repository, including full history. It simply parses the wiki pages into markdown using the MoinMoin engine.
2
3 The converter was originally written by [[JoshTriplett]] and included support for Tikiwiki, for which it parses the wiki pages to HTML then back into markdown using the `libhtml-wikiconverter` Perl package. That original version from Josh is still available from [his wiki page](/users/JoshTriplett). 
4
5 The MoinMoin side of things was completely re-written by [[anarcat]] and is currently still in development. That version is available at:
6
7     git clone git://src.anarcat.ath.cx/moin2iki
8
9 It doesn't feature support to migrate from Tikiwiki anymore and focuses on MoinMoin support.
10
11 The software is made of two pieces:
12
13  * the importer (`moin2git`) - which converts the wiki pages into a git repository with full history
14  * the converter (`moin2mdwn`) - which converts a set of moin-formatted text files into markdown + ikiwiki directives
15
16 ## MoinMoin importer features
17
18  * supports latest MoinMoin versions (tested with 1.9.x)
19  * uses `git fast-import` to improve performance (10 minutes and 200M of ram for a 7 years old 2GB Moinmoin wiki)
20  * multistep process allows bulk edit through git before markdown conversion, or staying with a 
21  * imports attachments as subpages
22  * uses the per-page edit log
23  * consistent: multiple runs will generate the same repository
24  * re-entrant: can be run multiple times to import new changes
25
26 ## MoinMoin converter features
27
28  * most of the inline markup
29  * links
30  * attachment links
31  * smileys
32  * images (not well tested), into [[ikiwiki/directive/img]]
33  * preformatted and code areas, including [[ikiwiki/directive/format]]
34  * ordered, unordered and definition lists
35  * tables (although only with HTML and no styles)
36
37 Supported macros:
38
39  * TableOfContents, through [[ikiwiki/directive/toc]]
40  * Navigation, partially, through [[ikiwiki/directive/inline]]
41  * MonthCalendar, partially, through [[ikiwiki/directive/calendar]]
42  * FootNote, through markdown
43  * Anchor, through markdown and plain HTML
44  * `<<BR>>`, through the weird line ending thing
45  * AttachList, through a weird [[ikiwiki/directive/inline]]
46  * FullSearch, partially, only through [[ikiwiki/directive/inline]] (so no textual search)
47  * Include, partially through [[ikiwiki/directive/inline]] (so missing boundary extraction and heading level generation)
48  * PageList, throuhg [[ikiwiki/directive/inline]]
49
50 Supported parsers:
51
52  * the main "moin wiki" markup
53  * highlight parser, through the [[plugins/format]] plugin
54  * other parsers may be supported if an equivalent plugin exists in Ikiwiki (example: [[plugin/rst]])
55
56 ## Current blocker and todos
57
58 This script is being used to test the conversion of the venerable [Koumbit wiki](https://wiki.koumbit.net/) into Ikiwiki, and so far progress is steady but difficult. The current blocker is:
59
60  * inline parsers and hackish styled tables
61  * turn categories into tags
62  * name converted page to the right name depending on the `#format` parameter on top of page
63  * finish a full converter run on the Koumbitwiki
64  * improve the output of the converter (too much debugging)
65
66 ## MoinMoin features missing from ikiwiki
67
68 The importer is pretty much complete, but the converter can only go so far as what features ikiwiki supports. Here are the MoinMoin features that are known to be missing from ikiwiki. Note that some of those features are available in MoinMoin only through third-party extensions.
69
70  * [[todo/do_not_make_links_backwards/]] - MoinMoin and Creole use `\[[link|text]]`, while ikiwiki uses `\[[text|link]]` - for now the converter generates [[markdown]] links so this is not so much an issue, but will freak out users
71  * [[todo/internal_definition_list_support/]] - includes tabling the results ([MoinMoin's DictColumns macro](http://moinmo.in/MacroMarket/DictColumns))
72  * [[todo/per page ACLs]] - ([MoinMoin's ACLs](http://moinmo.in/HelpOnAccessControlLists))
73  * [MailTo](http://moinmo.in/HelpOnMacros/MailTo) macro spam protection
74  * list pages based on full text page search
75  * extract part of other pages with the inline macro
76  * specifying a template when creating a page (as opposed to matching a pagespec)
77  * specifying a style for a sub-section (MoinMoin's inline parsers allow the user to specify a CSS class - very useful see [the documentation](http://moinmo.in/HelpOnMoinWikiSyntax#Using_the_wiki_parser_with_css_classes) to get an idea)
78
79 Comments and feedback always welcome! --[[anarcat]]