The Plugin of All Plugins

I am the author of some relatively popular plugins for Movable Type, which is both a blessing and a curse. The “curse” comes from having to do the one thing most developers probably hate: support. And where do you think all my time is spent in supporting these plugins? Fixing bugs? I wish.

The majority of my time goes into helping users fix broken installation issues. A valuable service, but to those who have already installed the plugins, I am certain they would rather me fix the bugs or add new features. But alas, there is no time.

So I wrote Plugin Manager - a new Movable Type plugin that completely automates the installation and upgrade process of other Movable Type plugins.

pm-screen-sm.png

Once the plugin is installed, it works just like Firefox’s extension manager by providing a console where you can view currently installed plugins, and then automatically search for and install updates to those plugins.

firefox.png

But while the user benefits I think speak for themselves, one cannot overlook the audience this plugin was really created for: developers.

Any Movable Type plugin developer can include with their plugin a single file, adhering to a special XML format and instantly automate the installation process for their plugin. Why is this important? Not only does it make your users’ lives easier, but it makes your life easier.

With Plugin Manager developers no longer need to provide installation support for their users. In stead, developers can focus on critical bug fixes, and of course: feature requests. So you tell me, what would you rather spend your time doing: implementing a new feature, or helping a customer solve a permissions problem on their server?

Facilitating the upgrade process is handled by publishing a file on your webserver that points Plugin Manager to the latest version of your plugin. Plugin Manager will then automatically detect when newer versions of your plugin are available and prompt users to install available updates.

Ok, I am sold. How do I install Plugin Manager?

It would be sad if a plugin whose job it was to make easy to install plugins was difficult to install itself! So installation is accomplished by uploading a single file in your MT installation, and then accessing it. The installation script will ensure that you have all the prerequisites installed, and if everything checks out, it will install all the files into your system automatically.

Why delay, install Plugin Manager today and then install one of the many plugins already compatible with Plugin Manager!

16 Comments

This is cool plugins I waiting for... Thanks...

Looks great, but I'm having a devil of a job installing Archive::Extract. I've uploaded it and (I think) all of its missing pre-requisites to MT_CGI/extlib, but PM still doesn't say it is installed. It also says my static path isn't writeable, when actually it is.

Unfortunately I have to do this over FTP as I don't have shell access to the server that my site uses.

And trying to run it on Mac OS X produced this error in my Apache error log:

Prototype mismatch: sub main::head: none vs ($) at /Library/WebServer/CGI-Executables/mt/pm-install.cgi line 6 Can't locate object method "instance" via package "MT::App" (perhaps you forgot to load "MT::App"?) at /Library/WebServer/CGI-Executables/mt/pm-install.cgi line 30. [Tue Apr 18 09:06:37 2006] [error] [client 127.0.0.1] Premature end of script headers: /Library/WebServer/CGI-Executables/mt/pm-install.cgi

The script was in the MTCGI/ folder.

Neil T.: remove '::App' from line 30 and it should work, and also create a writeable 'plugins' folder inside your mt-static folder. This should solve your problems.

Anyone: When using postgresql, right after finishing the installation, but before going to the pluginmanager screen for the first time (or when you get the error screen :P ) go into the database and execute the following 2 commands:

CREATE SEQUENCE mtpluginmanageridseq; ALTER TABLE mtpluginmanager ALTER COLUMN pluginmanagerid SET DEFAULT nextval('mtpluginmanageridseq');

Neil, here are all the modules I had to install to get Archive::Extract working:

IPC::Cmd Params::Check Module::Load Module::Load::Conditional Locale::Maketext::Simple

Hope that helps...

Thanks guys. Still not got Archive::Extract installed (I think its dependencies have some dependencies of their own which are not yet satisfied) on my main site but I have it working locally on my Mac thanks to Steffen's tip. It required a lot of time using cpan though.

Byrne: I appreciate the need and urgency to get this out, but I really think you need to reassess the prerequesites to get this working. If Neil is having trouble getting it installed what are the chances of the average MT user using FTP? I don't think trying to include every module in the MT distribution should always be the answer. Complicating matters is that some of these require compilation.

As we discuss privately I'm pretty sure a pure perl solution could be devised. I'm also pretty certain that a single (albeit a bit large) Atom file could be used instead of an XML file of your own making in addition to all of the file that make up the plugin. You'd need a developers tool to package up the plugin using

You'd need a developers tool to create the distrubtion in Atom compressed by Compress-Zlib form, but could use (fallback) on Compress::Zlib::Perl and XML::Atom::Syndication for the installation. Both packages are pure perl, and more readily distrubted and installed via FTP.

I do agree with Tim. Modules that need compiling can be quite a pain and I try to avoid them as much as possible. As a person who deals a lot with big-endian non-i386 servers, I quite often run into problems with modules like these breaking during compilation. Luckily it all worked fine with the Archive::Extract module.

Tim - you're such a kill joy. This is alpha software.

But yes, I agree with everyone's feedback. I will be working to make the prerequisites easier to resolve.

As for Atom vs my own XML schema. Please don't preach to me about the benefits of using Atom. Honestly. :) Atom is very extensible and could be used here. But just because it can, doesn't mean it should. I preferred creating my own semantics which were clearer to the developer than trying to overload the semantics of another protocol. And in the end, its just XML, what difference does it make if its an <entry> or <file>?

Byrne: I appreciate the need and urgency to get this out, but I really think you need to reassess the prerequesites to get this working. If Neil is having trouble getting it installed what are the chances of the average MT user using FTP? I don't think trying to include every module in the MT distribution should always be the answer. Complicating matters is that some of these require compilation.

Who are you and how in the hell did you get access to Tim's TypeKey account?

Actually, Steffen, all that is necessary to get the sequences working correctly in postgres is to name them appropriately (MT has a sequence naming scheme). In this case (I don't have the plugin installed yet so I cannot verify it), the following SQL code should be sufficient.

CREATE SEQUENCE mt_pluginmanager_id START 1;

SQL code similar to that were enough to get MediaManager (and MTAmazon) working for me.

I want to report that I've successfully installed it -- and it looks quite cool!

Something to think about: How to handle already-installed-plugins? I'm already using the Sidebar manager. What would happen if I were to try to install it again using Plugin Manager?

Assuming that (in your case) Sidebar Manager's directories are writable, then Plugin Manager will re-install Sidebar Manager over the old files, and then enable Plugin Manager to check for Sidebar Manager updates.

I keep getting this eroor message: Error initializing Plugin Manager: Insertion test failed on SQL error Table 'mt_pluginmanager' doesn't exist . Can anyone help me?Shoudl I write a sql command to create this table manually?if so, can you help me in writing one?

Hi,

I have the same problem. Could you please post SQL command to create mt_pluginmanager table??

hi, plugin manager is cool. thanks bryne! for those who had trouble installing please see the forums page.

specifically, if you had trouble installing Archive::Extract, check if you have simple.pm installed in /extlib/Locale/Maketext. if you had trouble initializing Plugin Manager, running mt.cgi should fix things. have fun!

Leave a comment

what will you say?


Recent Comments

  • hi, plugin manager is cool. thanks bryne! for those who had trouble installing please see the forums page. specifically, if you had trouble installing Archive::Extract, check if you have simple.pm installed in /extlib/L...

  • Hi, I have the same problem. Could you please post SQL command to create mt_pluginmanager table?? ...

  • I keep getting this eroor message: Error initializing Plugin Manager: Insertion test failed on SQL error Table 'mt_pluginmanager' doesn't exist . Can anyone help me?Shoudl I write a sql command to create this table manua...

  • Assuming that (in your case) Sidebar Manager's directories are writable, then Plugin Manager will re-install Sidebar Manager over the old files, and then enable Plugin Manager to check for Sidebar Manager updates. ...

  • I want to report that I've successfully installed it -- and it looks quite cool! Something to think about: How to handle already-installed-plugins? I'm already using the Sidebar manager. What would happen if I were to t...

Close