Plugin Dependencies (Yet Another Plugin Dependencies Ticket)
|Reported by:||Viper007Bond||Owned by:|
|Cc:||batmoo@…, danielbachhuber, pippin@…, apeatling, ben@…, djpaul@…, tollmanz@…, lol@…, bk@…, ben@…, beau@…, boonebgorges@…, brad@…, thomasgriffinmedia@…, goldenapplesdesign@…, nowell@…, scribu, sabreuse, travis@…, kurtpayne, jbobich, mike@…, td@…, contact@…, pogidude, dougal@…, pbaylies, public@…, info@…, johnciacia, mzaweb, jonathanbrinley@…, ashishsainiashfame@…, joseph@…, mike@…, info@…, andrew@…, jltallon@…, erick@…, coolmann, atimmermans@…, retlehs, a.hoereth@…, pauldewouters@…, herb@…, whiteshadow@…, jarednova|
It's been a few years since we looked at plugin dependencies and this still seems to be a feature people really, really want, especially for shared functionality that isn't a plugin in itself. For example a PHP library that isn't popular enough to be in core but is popular enough to be bundled in multiple plugins.
A bunch of us sat down and talked about this at this year's WordPress Community Summit and there was a lot of enthusiasm for this type of functionality.
We didn't know about the existing tickets at the time but the general summary of what we came up with was this:
- Plugins list WP.org slugs of their dependencies in their readme.txt, or perhaps better their plugin's header.
- When you go to install a plugin via the plugin directory UI in the admin area, the WP.org API returns a list of dependencies along with the data about the plugin being installed. WP would say like "these following dependencies will also be installed". This means it's seamless to the user -- they install a plugin and the other plugin(s) that are needed get installed too.
- No versioning support. It's too complicated and what if one plugin wants an older version of a dependency than another plugin does? If your plugin is listing another as a dependency, then it's your job to make sure it stays compatible with the latest version of the dependency. On the flip side, hopefully plugins that get listed as dependencies are made to be forwards and backwards compatible.
- Probably not allowing the disabling of plugins that are dependencies while their dependents are active. This seems better than disabling the dependents when the dependency is disabled ("why did Foo get disabled? I only disabled Bar!").
- On plugin re-activation or on activation of a plugin uploaded via FTP, make sure it's dependencies are already installed. If not, offer to install them. If installed but disabled, just enable them for the user.
So while the previous tickets were closed as wontfix in the past, I think this is worth taking another look at. A lot of planning and thought will be required though to get this right.
Change History (68)
comment:28 follow-up: ↓ 32 MikeSchinkel — 14 months ago
- Cc mike@… added