Content Management (CMS) Plugins
Something I've tried to promote more recently in the community is that much like the other frameworks, the features of the onTap framework can be extended via "plugins". That aspect is not new. What's new about the onTap framework is that the term "plugin" is used to describe a much more powerful entity.
There's a page on the framework wiki that describes this difference in greater detail, but basically in Mach-II, Fusebox or ColdBox a plugin typically consists of what you can fit in a single CFC. So a plugin in those frameworks may be used within your controllers or your views, but generally won't have its own controllers or views. Some examples from the ColdBox Wiki include: FileWriter, Paging and Captcha. You can see that these are tools you might use within an application, but they aren't applications in their own right.
The onTap framework alread has one plugin that falls in this category, it's called TapMCE for a WYSIWYG editor (and admittedly, I'd like to overhaul the idea). But that's not the primary focus of plugins in the onTap framework. The primary focus in the onTap framework is on peer or sub-applications. Currently you'll find that the onTap framework includes a Members onTap plugin which is a security layer, but is also much, much more than that. The Members onTap plugin also includes a sign-up form and login with optional OpenID support, a lot of internationalization work for managing sites or applications where the users speak more than one language, customizable regional information for your company (country, state, city, plus custom regions like "midwest" or "sales territories"), etc.
There's only one other framework for ColdFusion that I know of right now that uses the word "plugin" to describe a similar kind of modular sub-application that can be installed when you install the framework, which is FarCry. If that's more your speed, by all means go get it and be happy! :) I personally have still not found FarCry to be what I want and I don't think that's very likely to change. Although like the onTap framework, FarCry does a lot for you, to me it seems to have an awfully steep learning curve, and it doesn't seem as flexible. But then my understanding of the FarCry framework is still fairly limited while my understanding of the onTap framework is pervasive, so the fact that I find FarCry to have a steep learning curve and haven't found it very flexible may not mean very much.
I will however briefly point out a couple of items that lead me to that thinking. First, while you can create a new type of object in a few minutes using its built-in ORM and Form Tools, FarCry is really not designed conceptually with the idea that you might use anything other than the built-in ORM and Form Tools. And the ORM in itself is very stringent conceptually about the idea of the developer not thinking about the database or really digging into the ORM at all - you're supposed to only think about your data types (events, news, pages, etc.).
Comparatively the onTap framework has a plugin for the far more flexible DataFaucet ORM (which means the core framework doesn't depend on it), and would lend itself easily to including pluguins that use other ORMs like Reactor or Transfer.
While the Form Tools do appear to be pretty comprehensive, I'm not apt to imagine from what I've read of the documentation that they would allow the kind of discrete customization I described in my previous entry about customizing applications with the onTap framework. (Check out the XSL at the bottom.) Or that if you needed customizations to the business model for users and security that they would be nearly as separated or as easy to implement as described in the first half of that same article. To create a custom member (user) component, all I had to do was extend 3 CFCs and add a few lines for new properties and an extra table for storing the custom values. According to the philosophy behind FarCry's FourQ ORM tool, even thinking about putting the custom data in a separate table means you're doing something wrong, because you're thinking about the database. So I'd be darned surprised if I could just extend their user CFC and suddenly have new properties and behavior in the user objects.
My guess is that's the reason why Daemon as a company generates a fair amount of their revenue creating custom versions of FarCry for different organizations... because it wouldn't be so easy for folks to create their own custom versions like I did with DataFaucet and the Members onTap plugin. If it were so easy, if it could be done in a matter of minutes, people would do it themselves and Daemon would be doing something else for their clients. Don't get me wrong, their business model obviously works for them and I applaud their success. Thus far it just hasn't been the tool for me.
But here's the challenge that I started writing this blog entry about in the first place. Right now there are several third-party plugins for ColdBox (as you saw above) and similarly a variety of plugins for FarCry (a CMS tool even being one of them). The developer communities for both of these projects are currently more active than the community for the onTap framework, which is something I intend to change. As I mentioned at the beginning of this article, I've been promoting the idea of plugins for the onTap framework in the community. The plugins themselves are one of the major reasons for developing the framework in the first place, to truly leverage the talents of the community, so that we can each focus on our core business and allow the community to provide all the various ancillary things we need like for example content management (CMS).
Until recently I've been encouraging other folks to get involved and start writing third party plugins. I can of course write my own plugins (as I have already for the several that are available today). But my hope is to really get more people writing plugins to share with the community. That's the reason why there's a web service for fetching the plugins, to make it dead-simple for people to get them. But I'm impatient and I want to see the community grow rapidly... or more rapidly than is happening already. :) So I'm thinking it may be easier for me to start generating more interest in the framework and in the plugins by taking the time to write plugins myself for applications that already exist in the open source community. So my first target for this (and it may have been too large) was to start with a CMS application.
So I picked several open source CMS packages for ColdFusion and am currently looking over the code to figure out how each of them might be implemented as a plugin for the onTap framework. My selection includes (in no order):
I haven't heard anything yet from the folks who created Sava (don't know any names, sorry) or from Oscar Aravelo who created ColdBricks. Jason Sheedy replied to say he'd be interested in having a look once I have a working copy of ByteSpring as a plugin and also mentioned that he hasn't done much ColdFusion work in the past year.
Mark Woods, the project lead for Speck sent me a longer email with a fair amount of information about it, saying that it was originally intended to work with various frameworks but that he's not sure how that turned out in a practical sense. He did also say that he hasn't done much ColdFusion work recently, but I'm encouraged by the fact that he says using it as a plugin was kind of the original intent, even if it hasn't ultimately turned out that way.
On the surface I have very mixed feelings about ColdBricks because of a few of its installation requirements. Some of the documentation for HomePortals (the ColdBricks foundation) sounds promising, but there's a learning curve here that may require some digging to know if it really lends itself.
My thoughts about Sava are similar at this point. Sava is designed to work with any framework that "doesn't need an Application.cfc", ooof! So basically like Fusebox 3 and apparently ColdBox (which was a surprise to me). But it also is designed to allow you to draw in code from those other frameworks. So I'm hopeful that their forethought about integration will be helpful in retooling it to work with the onTap framework, and certainly I think the unique structure of the Application.cfc will help with that as well.
I must admit that I think I was mildly overconfident when I downloaded them... that doesn't mean I won't turn at least one of them into a plugin, but I do think it will require a bit more effort than I had anticipated. I think I was hoping that creating plugins for them would be easy like it was to customize the Members onTap plugin as I mentioned in my last entry. Perhaps I was forgetting that most folks in today's ColdFusion community aren't writing applications with this kind of seamless integration in mind. There are certainly some steps being taken, as you can see from Sava and Speck, but the popularity of this SOA-style integration is still nascent. As it becomes more popular I'm sure our techniques in the community as a whole will improve and this kind of thing will become much easier. :)
(This is also something that's gained a lot of traction outside the CF community, as you can see with things like Adobe working on the Alchemy tool that compiles C++ code to AS3 for Flash or Microsoft's Common Language Runtime (CLR) that allows things like BlueDragon's CFML engine on the .NET platform.)
In the meantime if you have any thoughts about these CMS plugins I'd be glad to hear them! Or if you have any thoughts about other open-source applications you'd like to see integrated as plugins, just drop me a note and I'll have a look. I may go back to RIAForge and do something like Ray's Soundings polling tool first, that may be a bit easier. :)

Just wanted to point out that although I'm the primary developer these days, Speck was originally released by Robin Hilliard on the cfaussie mailing list. The core framework was already well-formed by the time I got involved, so really, I didn't have anything in mind originally apart from making use of, and expanding on, Robin's neat ideas for building a content management framework.
Mark
I certainly think that this idea of sub and peer application integration is one that needs to gain traction in the CF world. They have a term for this in the PHP world -- "bridging" -- where, for example you can built a site that uses the Drupal CMS with the Gallery photo gallery application. The difference is that these bridges are application-pair specific and not implemented through an overlying framework as you are doing with onTap. Anyway, the fact that I haven't even heard the word "bridging" in a CF context tells you something.
I also wanted to clarify that you are not only limited to FuseBox 3 and ColdBox for framworks that you can integrate with the Sava CMS (as you post implied). The Sava download includes skeleton FuseBox 5.5 apps (xml and no xml versions) as well as Model-Glue Unity, so you can integrate those as well
http://www.gosava.com/sava/forum/messages.cfm?thre...
@Mark - thanks for the info! :)
@Tony - thanks for the clarification... I've just been under the impression that most of the recent builds of frameworks have required an Application.cfc in the skeleton, which is the reason for my comment about Sava. I wasn't aware that FB5 could be run without one, and I'll definitely be checking out that Mach-II integration article.
Matt's blog on the Modules feature:
http://www.mattwoodward.com/blog/index.cfm?event=s...
Does onTap work with the built in jrun webserver on port 8500? I just downloaded it an place the ontap directory in my cf8 webroot and and went to /ontap/admin/plugins and it says "No content found for this page".
Thanks
Matt Levine
Team Sava
Someone else mentioned having a similar problem trying to run it in a virtual server (I think), which, again I just don't have the resources to maintain machines to test all the potential deployment options myself.
On my notebook I'm running Apache 2.2 and CF8.0.1 (Win XP) and I switch back and forth between testing it deployed to the web root and testing it deployed to a subdirectory.
Anyway, thanks for having a look, I really appreciate your taking the time to investigate the integration potential. :)
Thanks again! :)
Thanks for the clarification - let me know if you have any other questions or if you make any more progress.
Otherwise I'll let you know when I'm able to have a look at it on the built-in web server to see if that's causing the issue and potentially a fix.
Thanks Matt! :)