Übersicht über den Stand von moin 2.0.
Mit Beispielen von Unterschieden zu moin 1.9.
Übersicht über den Stand von moin 2.0.
Mit Beispielen von Unterschieden zu moin 1.9.
MoinMoin ist eine Wiki-Software, die in Python geschrieben ist. Die offiziell unterstützte Version ist noch 1.9. Derzeit wird aber an der Version 2.0 gearbeitet.
Projekt homepage: moinmo.in/MoinMoin2.0 Repository: github.com/moinwiki/moin
MoinMoin ist Freie Software (Open Source Software) unter der GNU General Public License V2+.
Sie können es verwenden:
Die erste moin Version ist 2000 released worden. Es ist seit damals von einer Datei zu hunderten Modulen und tausenden Codezeilen angewachsen. Vor mehr als 10 Jahren haben wir mit der Infrastruktur von moin 2.0 begonnen.
Sites, die das MoinMoin Wiki nutzen
gute Storage API - nicht wie in 1.9 über mehrere Module verstreut (Page, PageEditor, Attachfile)
Verwenden von PyPi Packages
Es gibt aktuell 3 Möglichkeiten um die MoinWiki Quellen zu installieren bzw. herunterzuladen:
$ git clone https://github.com/moinwiki/moin
Im Python package index unter pypi.org gibt es eine Pre-Version des Pakets. Das Paket wird von Zeit zu Zeit aktualisiert. Installation mit
pip install --pre moin
moin 2.0 basiert auf einer Vielzahl von Bibliotheken. Alle sind als PyPi Package verfügbar.
weitere siehe pyproject.toml
Im Gegensatz zu moin 1.9 ist keine Kopie dieser Bibliotheken in moin 2.0 enthalten. moin 2.0 ist mit pip installierbar und Abhängigkeiten sind in der pyproject.toml definiert.
moin 2.0 wird mit pip installiert. Einiges aus der Infrastruktur sind jedoch keine Python Programme, z.B.:
Diese Bibliotheken/Programme werden auf PyPi zur Verfügung gestellt, siehe auch XStatic Packaging Standard xstatic.readthedocs.io
moin 2.0 hat eine API für storage Backends und Stores.
Der Hauptaugenmerk liegt auf dem Filesystem Backend, für alle anderen gilt: Es wird noch dran gearbeitet! Dadurch muss schonmal der Wiki Datenbestand gelöscht werden. (ALPHA!)
Die Konfiguration liegt in einem Python File wikiconfig.py (Ausschnitt):
1 """
2 !MoinMoin Wiki Configuration - see https://moin-20.readthedocs.io/en/latest/admin/configure.html
3 """
4 acls = {
5 # maps namespace name -> acl configuration dict for that namespace
6 #
7 # One way to customize this for large wikis is to create a TrustedEditorsGroup item with
8 # ACL = "TrustedEditorsGroup:read,write All:"
9 # add a list of user names under the item's User Group metadata heading.
10 # Item content does not matter.
11 # Every user in YOUR-TRUSTED-EDITOR-GROUP will be able to add/delete users.
12 #
13 # most wiki data will be stored in NAMESPACE_DEFAULT
14 NAMESPACE_DEFAULT: dict(
15 before='YOUR-SUPER-EDITOR:read,write,create,destroy,admin',
16 default='YOUR-TRUSTED-EDITORS-GROUP:read,write,create All:read,write,create',
17 after='',
18 hierarchic=False, ),
moin 2.0 unterscheidet nicht mehr zwischen Dateianhängen und Seiten. Es gibt nur noch mimetype basierte Items.
Items können versionierbar sein. Revisionen haben Daten und Metadaten (Meta Daten sind Key: Value Paare). Die Meta Daten eines Items enthalten z.B.:
Ist das neue Include. Syntax:
{{item}}Sie können ein Item dadurch in ein anderes “transcluden”.
Die Operation wird intern sauber auf DOM-Tree-Ebene ausgeführt.
Via on-mouse-over können Sie zu dem Ursprung des Items navigieren, um es dort zu bearbeiten.
moin 2.0 kann verschiedene Markups rendern und konvertieren, u.a.:
moinwiki (http://moinmo.in/HelpOnMoinWikiSyntax)
markdown (https://python-markdown.github.io)
creolewiki (http://www.wikicreole.org/)
docbook (http://www.docbook.org/)
mediawiki (http://www.mediawiki.org/wiki/Help:Formatting)
Parser und Formatter werden durch Converter ersetzt.
moin 2.0 benutzt intern einen DOM-Tree (implementiert mit emeraldtree, einem Fork von elementtree).
Wir unterscheiden zwischen Input und Output Konvertern, ein Auszug zeigt was dann über den DOM-Tree in etwas anders ausgegeben werden kann. Nicht alles ist verlustfrei.
Verwendung ähnlich wie in moin 1.9, intern aber DOM-Tree basierend. Viele Macros sind bereits an die neue Version angepasst, Beispiele:
<<TableOfContents>> <<ItemList()>> <<TitleIndex()>> <<MonthCalendar>>
Die Makros stehen aktuell nur im Moinwiki-Markup zur Verfügung. Siehe auch help-en/MoinWikiMacros
Es gibt keine Actions mehr, wir sprechen als Entwickler von Views.
Durch die Verwendung von flask sind restful URLs gegeben. Die Views sind mit einem Präfix + versehen, z.B. für die Metadaten:
Andere Views:
...
Viele Macros wie z.B. RecentChanges sind nun als View implementiert.
Der View-HTML-Output wird mit der Jinja2-Template-Engine generiert. Wir verwenden autoescaping von Jinja2, was XSS-Problemen vorbeugt.
Das moin 1.9 plugin System ist zu komplex und dies würde durch die neue API noch erhöht werden.
Für die Migration eines bestehenden Wikis auf moin 2.0 existiert ein Befehl, siehe
moin import19 --help
Beispiel Ausgabe:
INFO moin.cli.migration.moin19.import19 Finished conversion! INFO moin.cli.migration.moin19.import19 Migration statistics: INFO moin.cli.migration.moin19.import19 Users: 72 INFO moin.cli.migration.moin19.import19 Items: 4149 INFO moin.cli.migration.moin19.import19 Revisions: 19501 INFO moin.cli.migration.moin19.import19 Attachments: 39 INFO moin.cli.migration.moin19.import19 Warnings: 1127 - missing_user INFO moin.cli.migration.moin19.import19 Warnings: 168 - missing_file INFO moin.cli.migration.moin19.import19 Warnings: 105 - del_item INFO moin.cli.migration.moin19.import19 Unknown Macros: 7 INFO moin.cli.migration.moin19.import19 ['TitleIndex', 'FullSearch', 'Action', 'SystemAdmin', 'Navigation', 'GoTo', 'ShowSmileys']
Unterstützung gesucht.
Treffen wir uns auf der FrOsCon 2024 in St. Augustin am 17./18. August 2024?