Plugins vs. Components
The most frequent question developers have is “what is the difference
between a component and plugin?” On a technical level there is actually
very little difference, but conceptually there is a big difference.
The intent of a component is to define a set of semantics for the
central Movable Type registry. In the process they also define the
features and functionality that utilize the semantics they define. A
plugin on the other hand adds features and functionality utilizing
pre-existing registry semantics.
A perfect example of this differentiation is found in the extensible
importing framework. The core “CMS Component” is what provides the
blogging and publishing system of Movable Type. Without the CMS
component there is little relevance to any import functionality because
the CMS component defines the core data model for the system that data
would be imported into. Therefore the import framework is not “core.”
The import framework is a set of APIs provided by the CMS component.
Other components within the system define their own internal and
external APIs to be utilized by developers, bloggers and readers.
Jay Allen on December 4, 2007, 1:39 p.m. Reply
So in general, most developers will be creating “plugins” and not components meaning that their work modifies or extends the componenents shipped with the app.
However, if you want to create completely new functionality which goes beyond extending the bundled components, you’ll be creating a component instead.
Does that sound about right?
Jay Allen on December 4, 2007, 2:02 p.m. Reply
Furthermore, would it be accurate to say that a component is, in MT 3 parlance, an “app” or is that too limiting? Can components be comprised of a number of MT3-style apps?