DokuWiki

It's better when it's simple

User Tools

Site Tools


devel:plugin_survey:compatibility

Plugin Survey 2011 - Compatibility

(This is a part of the plugin survey 2011)

Are my newly installed plugin compatible with the installation? The fast answer is yes - probably. But it is not easy for a new user to determine. Since last survey there has been three major releases of DokuWiki and the plugin developers assisted by the community have tried to keep the compatibility information up to date. This year 70% of the plugin homepages has been modified within last 12 months compared to 95% and 92% last surveys.

The result, 303 plugins (37%) explicitly states compatibility with at least one of the 4 recent releases. 45% have no, old or unclear compatibility stated. The pie chart shows “best” compatibility for each plugin and the table shows number of plugins for each release. The survey was conducted only 13 days after the “Angua” RC release so the meager result for this release is not really surprising.

Release Plugins stating compatibility
2011-11-10 “Angua” 7 ( 1%)
2011-05-25 “Rincewind” 135 (16%)
2010-11-07 “Anteater” 179 (22%)
2009-12-25 “Lemming” 191 (23%)
2009-02-14 96 (12%)
2008-05-05 95 (11%)
2007-06-26 57 (7%)

Tagged broken

A “!broken” or “!maybe.broken” tag is an obvious way of stating incompatibility with the current DokuWiki version. 4 plugins had their tag removed since last survey (ical, iframe, linkbonus, orphanswanted). With 3 new there are now 10 plugins (1%) are tagged in this way.

Marked conflicting

90 (+24 since last year) plugins state conflict with one or more other plugins divided into 34 separate “conflict groups”. Since 2009 the number has more than doubled, reason for this is unclear. One reason might be the large total increase of plugins, another might be that functionality in older plugins are enhanced by releasing a new similar plugin instead of improving the old one. Here is the list of conflict groups after the more obvious, like addnewpage v.s. addnewpage_old, are removed.

A more detailed analysis were done for asiansearch and pageredirect. They both use the TPL_ACT_RENDER event. Asiansearch replaces the default code for action 'show' to create better search highlighting while pageredirect uses it to add a notice “You where re-directed here from page xxx” on the page top. Using them both unfortunately creates the “You where re-directed..” at the bottom of the page as asiansearch already have output the page content when pageredirect catches the event.

Shared class names

Sharing class names with another plugin might cause problems. PHP does not allow a class to be declared more than once. Having two plugins installed at the same time (and enabled) sharing the same class name will cause a fatal error “Cannot redeclare class …”. Then the poor admin has to manually remove the files to get the wiki started again.

:!: boxwh is one plugin that never should be installed together with box or boxes_mod as it uses a class name not matching the used folder. It also have an extra folder __MACOSX which will show up as a broken plugin in the plugin manager.

Mostly this is no problem. Plugins like code, code2 and code3 uses the same class name but will overwrite each other while installing so the are never installed at the same time. However only the plugin with same name as class name will get popularity points (from all variants).

Syntax

Are the wiki syntax used by syntax_plugins compatible? The 802 downloaded plugins have been scanned for

  • addEntryPattern()
  • addExitPattern()
  • addSpecialPattern()

Although there are no rules for syntax mentioned some “de facto” standard has evolved. In this survey it looks like a majority of special patterns are either {{…}} (160 cases) or ~~…~~ (80 cases). A very common entry/exit pattern (231 plugins) is something like an XML tag even if some use upper case letters.

Automatic checking of regex strings is beyond SurveyBot's abilities, it even fails resolving static variables. But some observations can be made reading the list. Here are a couple of cases of greedy regex'es.

Plugin Regex
code2 '\x3Ccode(?=[^>]*\x3E\r?\n.*\n\x3C\x2Fcode\x3E)'
commentsrc "!-.*-!"
deflist '\n\x20{2,}\s*\x3F\x3F(?s).+?(?=::(?s).*!!\n\n)'
deflist '\n\t+\s*\x3F\x3F(?s).+?(?=::(?s).*!!\n\n)'
imagereference '<imgcaption\s[^\r\n\|]*?\|(?=[^\r\n]*>.*?</imgcaption.*>)'
ipmap '<ipmap.*>.*</ipmap>'
mailto '~~MAILTO:.*~~'
xslt '&&XML&&\n.*\n&&XSLT&&\n.*\n&&END&&'

A lot of plugins still have the workaround with \x3C instead of '<' for early versions of the DokuWiki lexer lookahead bug described in patterns. A lot more than ten plugins do not feature a lookahead pattern.

Some plugins allows adding of syntax through config files, for example sqlcomp and vshare. Locale dependent syntax using $this->lang["keywordpattern"] is also available, like in datefilter and chessdiagram.

So see for yourself, here is a list of the syntax at time of survey, or here Use correct regular expressions.

Replacement renderers

Replacement renderers are inherently conflicting with each other because only one can be selected at a time. There are 12 replacement renderers.

Continue to ⇒ source_code

devel/plugin_survey/compatibility.txt · Last modified: 2014-11-27 17:49 by Klap-in

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki