Braindump work in process
Current Work
Introduction
We have lots of code developed over the last decade. Some of the tools/plugins we currently have in moin1 need some work to get them into moin2. The plugin system we have in moin1 is not useable for moin2. There are several pages ... which discuss what we likly want to have. Besides of moin1 plugins we have also several monkey patches used to change some core functionality without adding a new plugin.
The work on moin-2.0_experimental_plugins tries to figure out what is needed to make from current moin2 implementations plugins which can be handled by pip. It is very draft but it is promising an easy way to install different kind of plugins and manage them per wiki instance. I have already once extracted all kind of current used xstatic packages for making experimental_moin_plugin but haven't published the changes to the repo. For all of them the current approach works. I do currently only one example per type because the API of e.g. contenttypes is in progress. The splitting makes currently too much extra effort on refactoring in different repos.
There is no decission done yet what remains builtin or will be a plugin only (besides the experimental_moin_plugin_mathjax, which is currently plugin only) For example we could have only the core base classes for contenttypes in the main code and all derivated contenttype definitions as plugins. This is similar to e.g. gnome, unity, firefox.
Some of the js libraries (jquery, svgweb) should remain builtin. Currently svgweb and also html5shiv is needed for some IE browsers. Other plugins based on jquery should not require to install this too.
Try out
Installation
For trying out here are some of the different examples for contenttype items.
mkdir ~/mointest cd ~/mointest hg clone ssh://hg@bitbucket.org/ReimarBauer/moin-2.0_experimental_plugins hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_mathjax hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_twikidraw hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_ckeditor cd moin-2.0_experimental_plugins ./quickinstall source env/bin/activate # those are configured into wikiconfig.py currenly pip install --upgrade ../experimental_moin_plugin_twikidraw pip install --upgrade ../experimental_moin_plugin_mathjax pip install --upgrade ../experimental_moin_plugin_ckeditor moin index-create -s -i moin
installing httpauth
example how to add an auth plugin
cd ~/mointest source moin-2.0_experimental_plugins/env/bin/activate hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_httpauth pip install --upgrade experimental_moin_plugin_httpauth
also you can create the dist package beforehand and install that e.g. python setup.py sdist
1 diff -r ab838b439807 wikiconfig.py
2 --- a/wikiconfig.py Sat Oct 27 12:13:13 2012 +0200
3 +++ b/wikiconfig.py Sat Oct 27 12:13:16 2012 +0200
4 @@ -82,7 +82,7 @@
5 except KeyError:
6 mplugins = None
7 if mplugins:
8 - plugin_packages = ["mathjax", "twikidraw", "ckeditor",]
9 + plugin_packages = ["mathjax", "twikidraw", "ckeditor", "httpauth", ]
10
11 pkg = __import__('moinplugin.pkg', fromlist=plugin_packages)
12 template_dirs = []
13 @@ -108,6 +108,7 @@
14 except AttributeError:
15 pass
16
17 + auth = [pkg.httpauth.HTTPAuthMoin()]
18 MOINCFG = Config # Flask only likes uppercase stuff
19 # Flask settings - see the flask documentation about their meaning
20 SECRET_KEY = 'you need to change this so it is really secret'
Verification
Create a wiki text item and write
$ \alpha $ is a mathjax enabled greek alpha
or create a twikidraw item