Remove Google Analytics
[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://git.koumbit.net/moin2iki.git
8
9 It doesn't feature support to migrate from Tikiwiki anymore and focuses on MoinMoin support.
10
11 Issues can be filed in the redmine bugtracker: <https://redmine.koumbit.net/projects/moin2iki>
12
13 [[!toc levels=2]]
14
15 ## Usage
16
17 Usage instructions are in the `README` file.
18
19 ## MoinMoin importer features
20
21  * supports latest MoinMoin versions (tested with 1.9.x)
22  * uses `git fast-import` to improve performance (10 minutes and 200M of ram for a 7 years old 2GB Moinmoin wiki)
23  * multistep process allows bulk edit through git before markdown conversion, or staying with a 
24  * imports attachments as subpages
25  * uses the per-page edit log
26  * consistent: multiple runs will generate the same repository
27  * re-entrant: can be run multiple times to import new changes
28
29 ## MoinMoin converter features
30
31  * most of the inline markup
32  * links
33  * attachment links
34  * smileys
35  * images (not well tested), into [[ikiwiki/directive/img]]
36  * preformatted and code areas, including [[ikiwiki/directive/format]]
37  * ordered, unordered and definition lists
38  * tables (although only with HTML and no styles)
39
40 ### Supported macros
41
42  * TableOfContents, through [[ikiwiki/directive/toc]]
43  * Navigation, through [[ikiwiki/directive/map]] (so as a nested
44    vertical list instead of an horizontal list)
45  * PageList, through [[ikiwiki/directive/map]]
46  * MonthCalendar, partially, through [[ikiwiki/directive/calendar]]
47  * FootNote, through markdown
48  * Anchor, through markdown and plain HTML
49  * `<<BR>>`, through the weird line ending thing
50  * AttachList, through a weird [[ikiwiki/directive/inline]]
51  * FullSearch, partially, only through [[ikiwiki/directive/inline]] (so no textual search)
52  * Include, partially through [[ikiwiki/directive/inline]] (so missing boundary extraction and heading level generation)
53  * PageCount, same name even :)
54  * OrphanedPages, through [[ikiwiki/directive/orphans]]
55  * Date and Datetime, should be through [[plugins/date]] instead of
56    current hack
57
58 ### Supported parsers
59
60  * the main "moin wiki" markup
61  * highlight parser, through the [[plugins/format]] plugin
62  * other parsers may be supported if an equivalent plugin exists in Ikiwiki (example: [[plugins/rst]])
63
64 ## Current blocker
65
66 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:
67
68  * figuring out exactly which pages should exist and which should not, as there is ambiguity in the internal datastructures of MoinMoin, which become apparent when running the conversion script, as files a missing
69
70 ## Todos
71
72 There are also significant pieces missing:
73
74  * inline parsers and hackish styled tables
75  * turn categories into tags
76  * name converted page to the right name depending on the `#format` parameter on top of page
77  * finish a full converter run on the Koumbitwiki
78  * improve the output of the converter (too much debugging)
79
80 ## MoinMoin features missing from ikiwiki
81
82 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.
83
84  * [[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
85  * [[todo/internal_definition_list_support/]] - includes tabling the results ([MoinMoin's DictColumns macro](http://moinmo.in/MacroMarket/DictColumns))
86  * [[todo/per page ACLs]] - ([MoinMoin's ACLs](http://moinmo.in/HelpOnAccessControlLists))
87  * [MailTo](http://moinmo.in/HelpOnMacros/MailTo) macro spam protection
88  * list pages based on full text page search
89  * extract part of other pages with the inline macro
90  * specifying a template when creating a page (as opposed to matching a pagespec)
91  * specifying a style for a sub-section (MoinMoin's inline parsers
92    allow the user to specify a CSS class - very useful see
93    [the documentation](http://moinmo.in/HelpOnMoinWikiSyntax#Using_the_wiki_parser_with_css_classes)
94    to get an idea)
95  * the above also keeps the SectionParser from being properly supported
96  * regex matching all over the place: pagespec, basically, but all
97    full text search (which is missing anyways, see above)
98
99 ### Missing macros
100
101  * RandomPage(N) - lists N random pages, skipped
102  * Gallery() - skipped
103  * Gettext - translates the string accordign to internal translation
104    system, ignored
105  * AdvancedSearch - an elaborate search form provided by MoinMoin
106  * Goto - a simple "jump to page" macro
107
108 Comments and feedback always welcome! --[[anarcat]]