Table of Contents
Plugin Manager Rewrite
This idea has been implemented |
---|
The rewrite of DokuWiki's Plugin Manager plugin was part of Google Summer of Code 2011 with Piyush Mishra as developer and Håkan Sandell as mentor.
Summary: Currently we have already a plugin repository at plugins but this repository can't be browsed from the admin area of individual installations like this is possible with Wordpress. This idea is about improving the plugin manager that can already install plugins from a download URL to use the repository at dokuwiki.org.
Links
- DokuWiki branch with rewritten version of Extension Manager: https://github.com/dokuwiki/dokuwiki/tree/extension_manager
Todo
Things to do besides https://github.com/ofpiyush/dokuwiki-extension-manager/issues
Needed before merge:
- Needs two default icons/pics for plugins and templates
- CSS/js positioning and color of floating info box not finished
Nice to have:
- Give user feedback about why some actions are missing (i.e. download url is missing)
- Show compatibility info in a cleaver way (current solution commented out, users didn't like it)
- Decide how to deal with starting disabled plugins versus showing info with getInfo()
- Improve offline support
- Caching of “browse all” page
- Refactor translation strings to minimize translation effort
- Support RTL
- Add a easy way to fix dependency issues. Action button in the info message? The action exists but the UI where too cluttered with an additional download button.
- “Download as disabled” was removed to avoid cuttering the UI. Maybe it should be a config option?
- Support for example content (pages) in to data dir
General Features
- Provide overview. List installed plugins AND templates with (a typical installation have 13 plugins, max known 136):
- link to homepage
- enabled/disabled status
- update status by comparing installed version with lastupdate in meta data (see below)
- compatibility status
- maybe add TOC for wikis with a lot of plugins
- list tags
- Display detailed information. Show all available information
- from installed files: version, author, details, feedback/discussion
- from repository API: similar plugins, more by same author etc
- from plugin manager data: install date, enabled/disabled, compatibility which version of Dokuwiki, conflicts with other plugins, list required plugins
- Manage plugins/templates
- Install, by browsing repository, or using URL textbox or upload a file (for wiki's with restrictive firewalls). For templates a “browse by screenshot” would be cool
- Enable/disable all or a single plugin (Template special handling: one and only one template must be used at a time)
- Uninstall (delete)
- Update. When updating never delete files (A plugin might have user created files. Example: the dw2pdf plugin has a folder where users can install custom PDF templates. You wouldn't want to delete them on an upgrade.)
- should handle wikis without internet access
Today bundled plugins are shown in light red background, a signal not obvious to a new admin, which should be changed to something else. A bonus feature where if the plugin manager was compatible/aware of Wiki Farms with DokuWiki
Plugin/Template Meta Data
The plugin manger should get info from dokuwiki.org, where the Repository Plugin exposes available plugins and templates as an XML API. This API was exclusively written for this project and is never used (yet) and might need adjustment. For example there is no caching currently.
Security/Trust
This is some thoughts about security, none of them implemented Oct-2012.
- How do people know what they download?
- Maybe a config option to always install plugins as disabled
- Maybe creating a web of trust by having trusted people (splitbrain, chimeric, Chris-S, foosel, …) who then can examine code by others and trust them?
- Should we sign download URLs? Or maybe just servers (to make autoupdating github links easier)
- Add code review before installing. Eg. download and extract to tmp, let user view the code before install
- There should be more security warning levels, at least one that gives a warning but keeps the plugin visible. Used for “Don't use this plugin in public wikis”
Compatibility
- It would be nice with a “I've tested this in my installation” button that could update compatibility information at DokuWiki.org
Plugin Package Install
Today plugin developers can package more than one plugin into a single zip and it's handled by the plugin/extension manager. However it would be useful to be able to install several plugins by supplying some sort of metadata file. Imagine using the URL from
- mybestplugins
<pkg> <plugin>data</plugin> <plugin>sqlite</plugin> <template>artic</template> </pkg>
this would be handy in the “Solutions namespace”. Problems to solve include handling updates and traceability.