====== Plugin Survey 2011 - Compatibility ====== (This is a part of the [[start|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. {{ best_compat.png?350|}} 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 ([[plugin:ical]], [[plugin:iframe]], [[plugin:linkbonus]], [[plugin:orphanswanted]]). With 3 new there are now 10 plugins (1%) are tagged in this way. * [[plugin:content]], [[plugin:html2pdf]] (new), [[plugin:includeuserpage]], [[plugin:isbn]], [[plugin:livepreview]], [[plugin:meta]], [[plugin:recent]], [[plugin:refworks]], [[plugin:statdisplay]] (new), [[plugin:userhistory]] (new) ===== 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 [[plugin:addnewpage]] v.s. [[plugin:addnewpage_old]], are removed. * [[plugin:quickedit]] v.s. [[plugin:sidebar_template]] v.s. [[plugin:dblclickedit]] v.s. [[plugin:fckglite]] v.s. [[plugin:inlineeditor]] v.s. [[plugin:odt]] * [[plugin:vshare]] v.s. [[plugin:dailymotion]] v.s. [[plugin:google_video]] v.s. [[plugin:youtube]] v.s. [[plugin:youtubev2]] * [[plugin:dokucrypt]] v.s. [[plugin:edittable]] v.s. [[plugin:aceeditor]] v.s. [[plugin:pagemod]] v.s. [[plugin:searchtablejs]] * [[plugin:indexmenu2]] v.s. [[plugin:lightboxv2]] v.s. [[plugin:indexmenu]] v.s. [[plugin:yalist]] v.s. [[plugin:navi]] * [[plugin:jquery-syntax]] v.s. [[plugin:code]] v.s. [[plugin:code2]] v.s. [[plugin:code3]] * [[plugin:force_preview]] v.s. [[plugin:enforcesummary]] v.s. [[plugin:enforcedcomments]] v.s. [[plugin:livepreview]] * [[plugin:definitionlist]] v.s. [[plugin:newline]] v.s. [[plugin:data]] v.s. [[plugin:qc]] * [[plugin:backlinks]] v.s. [[plugin:autolink2]] v.s. [[plugin:backlinks2]] v.s. [[plugin:shortcut]] * [[plugin:include]] v.s. [[plugin:header2]] v.s. [[plugin:mediasyntax]] * [[plugin:s5]] v.s. [[plugin:processing]] v.s. [[plugin:s5reloaded]] * [[plugin:inlineeditor]] v.s. [[plugin:dw2pdf]] v.s. [[plugin:odt]] * [[plugin:sidebar]] v.s. [[plugin:discussion]] v.s. [[plugin:noprint]] * [[plugin:stats]] v.s. [[plugin:charter]] v.s. [[plugin:pchart]] * [[plugin:numberedheadings]] v.s. [[plugin:htag]] * [[plugin:pageredirect]] v.s. [[plugin:asiansearch]] * [[plugin:xbr]] v.s. [[plugin:highlightjs]] * [[plugin:linkback]] v.s. [[plugin:badbehaviour]] * any_wysiwyg_editors v.s. [[plugin:preservefilenames]] * [[plugin:searchstats]] v.s. [[plugin:docsearch]] * [[plugin:form]] v.s. [[plugin:bureaucracy]] * [[plugin:saveandedit]] v.s. [[plugin:blogtng]] A more detailed analysis were done for [[plugin:asiansearch]] and [[plugin:pageredirect]]. They both use the [[devel:event:tpl_act_render|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. :!: [[plugin:boxwh]] is one plugin that never should be installed together with [[plugin:box]] or [[plugin: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|popularity points]] (from all variants). ^Original (gets popularity) ^New version (no popularity) ^ |[[plugin:backlinks]] |[[plugin:backlinks2]]| |[[plugin:box]] |[[plugin:boxes_mod]], [[plugin:boxwh]]| |[[plugin:code]] |[[plugin:code2]], [[plugin:code3]]| |[[plugin:doodle]] |[[plugin:doodle2]]| |[[plugin:fckg]] |[[plugin:fckglite]]| |[[plugin:gallery]] |[[plugin:galleryv1.5]]| |[[plugin:geogebra]] |[[plugin:geogebra2]]| |[[plugin:gitlink]] |[[plugin:gitlink2]]| |[[plugin:googleads]] |[[plugin:google_adsense2]]| |[[plugin:indexmenu]] |[[plugin:indexmenu2]]| |[[plugin:folded]] |[[plugin:inline_folding]], [[plugin:inline_folding2]]| |[[plugin:math]] |[[plugin:math2]]| |[[plugin:mp3play]] |[[plugin:mp3play2]]| |[[plugin:source]] |[[plugin:sos]]| |[[plugin:stars]] |[[plugin:stars2]]| |[[plugin:svgimg]] |[[plugin:svgimg2]]| |[[plugin:translation]] |[[plugin:translation3]]| ===== Syntax ===== Are the wiki syntax used by [[devel:syntax_plugins]] compatible? The 802 downloaded plugins have been scanned for * addEntryPattern() * addExitPattern() * addSpecialPattern() Although there are no rules for syntax [[devel:syntax_plugins|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 ^ |[[plugin:code2]] |%%'\x3Ccode(?=[^>]*\x3E\r?\n.*\n\x3C\x2Fcode\x3E)'%% | |[[plugin:commentsrc]] |%%"!-.*-!"%% | |[[plugin:deflist]] |%%'\n\x20{2,}\s*\x3F\x3F(?s).+?(?=::(?s).*!!\n\n)'%% | |[[plugin:deflist]] |%%'\n\t+\s*\x3F\x3F(?s).+?(?=::(?s).*!!\n\n)'%% | |[[plugin:imagereference]] |%%'.*?)'%% | |[[plugin:ipmap]] |%%'.*'%% | |[[plugin:mailto]] |%%'~~MAILTO:.*~~'%% | |[[plugin: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 [[devel:syntax_plugins#patterns]]. A lot more than ten plugins do not feature a lookahead pattern. Some plugins allows adding of syntax through config files, for example [[plugin:sqlcomp]] and [[plugin:vshare]]. Locale dependent syntax using ''%%$this->lang["keywordpattern"]%%'' is also available, like in [[plugin:datefilter]] and [[plugin:chessdiagram]]. So see for yourself, here is a list of the [[syntax]] at time of survey, or here [[devel:plugin_programming_tips#use_correct_regular_expressions|Use correct regular expressions]]. ===== Replacement renderers ===== [[devel:renderer_plugins#replacement_default_renderer|Replacement renderers]] are inherently conflicting with each other because only one can be [[config:renderer_xhtml|selected]] at a time. There are 12 replacement renderers. * [[plugin:footnotestyle]], [[plugin:header2]], [[plugin:highlightjs]], [[plugin:html5]], [[plugin:linkprefix]], [[plugin:mundart]], [[plugin:noblankcells]], [[plugin:nodetailsxhtml]], [[plugin:pirate]], [[plugin:purplenumbers]], [[plugin:refererremove]], [[plugin:xbr]] Continue to => [[source_code]]