« MTOtherBlog (v 0.25) | Main | New MT Plugin Idea: Interface Plugins »
January 08, 2003
MT Plugin System Of My Dreams
I've been kicking it around in my head for a while, so I figured I'd better sit down and write something out before it got too stale. Before I start, I should probably mention that I'm a big fan of FreeBSD's ports system, so that may color my thoughts somewhat.
So, to start with, we first have a central plugin repository, whether it be on movabletype.org, some other site, or some evolution of Kristine's MT Plugin Directory. On this site, in addition to a web-based listing of plugins, with docs, links, etc. But, the heart of the system is the XML version of this site that it makes available to the world.
Now, on the other end of things, in each installation of Movable Type, there lives a little program, which for the time being I'll call the Plugin Manager. When instructed to, this Plugin Manager will query the Plugin Repository for the XML file. It will parse the file, and present the user with a list of available plugins, as well as which ones are installed and which ones can be upgraded. If a user chooses to install/upgrade a plugin, they are informed if they need to install any other plugins or Perl modules first. Once the system is prepared for the plugin, the Plugin Manager follows the link provided in the XML file and downloads the Plugin Archive.
Now, about the Plugin Archive. In this archive, beyond the plugin itself, there are a few support files. An XML file describing the plugin itself and the files is uses (basically an extended version of what is already available on the Plugin Repository site, and which is probably used to build that site as well), a Pre-Install Script, a Post-Install Script, and the Plugin Files themselves. The XML file will be registered/filed in a local repository to be used for an On-Demand Plugin Documentation module in MT. The Pre-Install Script is a Perl scipt eval-ed by MT to prepare for installation of the Plugin. If it fails, the Plugin Files are removed and unregistered with the system. The Post-Install Script is a Perl script eval-ed by MT to setup anything supplemental that the Plugin might need (database tables, or what have you). If that fails, the Plugin Files are removed and unregistered with the system.
And about the On-Demand Plugin Documentation module, the idea there is that a user should have access to documentation for every available tag. They could go into the module and get a listing of every tag available to them, then click on one and get some documentation for that tag, maybe an example, and so on.
So what do you think?
Update: Just wanted to add a couple more thoughts, which I mainly forgot to put in last night. Anyways, The main Plugin XML File on the Plugin Repository Site, which contains links to Archive Files for the Plugins, will also contain MD5 Hashes for those Archive Files for security purposes. Or perhaps something can be worked up with Cryptographic Signatures for the Archive Files. The is all to make sure that the Archive File you download through the Plugin Manager is truly the Archive File you want, and not one containing malicious code.
Posted by rayners at January 8, 2003 12:17 AM
Trackback Pings
TrackBack URL for this entry:
http://mt.rayners.org/mt-tb.cgi/121
Listed below are links to weblogs that reference MT Plugin System Of My Dreams:
» Plugin thoughts from kadyellebee
I weighed in on David's newest plugin brainstorm posts. He has some great ideas, and I'm glad to be a [Read More]
Tracked on January 8, 2003 06:13 PM
Comments
this is an very interesting idea! i will think about it tonight - Thnax
Posted by: Büro Schreiber at July 21, 2003 03:16 PM
Great idea David. I am also a an of the ports usage in BSD (I use OpenBSD). This sounds like a very cool thing that would be a great addition to MovableType. If you need someone to develop with I'd be glad to do something on this project.
Posted by: Michael Schuld
at April 29, 2005 09:13 AM
Great idea David. I am also a an of the ports usage in BSD (I use OpenBSD). This sounds like a very cool thing that would be a great addition to MovableType. If you need someone to develop with I'd be glad to do something on this project.
Posted by: Michael Schuld
at April 29, 2005 09:13 AM
I really like your ideas :) How hard will it be to make an addon program for MT like this? Will any of the existing plugins need to have modifications made so they can be detected by this manager program? How much new information would need to be written by the plugin authors for the pre-install/post-install methods? Or would that be a generic thing that could work acrossed multiple plugins?
I can definately add on to the Plugin directory. In fact, I'd really enjoy doing that. For the first stage, I could make a new individual archive template that is xml with the data that I've collected so far on each plugin. Obviously, there's probably more data that you'd need to add to it as we figure out what would need to be added to "communicate" with the plugin manager.
If you need more brainstorming on this, let me know :) I'm sure I could write a few more paragraphs, but I'm in the middle of a script that's been in process for a few days!!
Posted by: kristine at January 8, 2003 05:34 PM