[Radiant] Radiant Plugins and Philosophy

Josh Ferguson josh at besquared.net
Thu Jul 13 21:11:08 CDT 2006


If it doesn't modify anything then how do you route to it? Or administer 
it from the interface that looks like the rest of the site? It adds 
functionality that's true, but only for developers who are willing to 
take the time to integrate some type of management it into their admin 
interface. If that's the case (which I assume it would be) I have to go 
in and modify your controllers, views, and models to get it to fit into 
the system I'm already using.

What we're really after is a strong integrated look, feel, and 
philosophy between all pieces of the application. This is one thing that 
helps makes applications usable, and what makes the other CMS systems 
suck. By making things over modularized you doom yourself to a system 
that becomes ugly and unusable. I don't want to repeat the mistakes of 
every CMS that has tried this approach for the past decade.

Imagine a world where there are several Radiant extension projects which 
different people contribute to. The bloggers contribute to the radiant 
blog extension, the community sites contribute to the radiant community 
extension, etc. All the while radiant core continues to be stable and 
grows feature rich, but its focus is on features that can be used by all 
extensions to improve them in their specific problem domains. And all of 
it would be easily packaged, shipped and dropped on top of the core.

I'm not saying we can't use an engine style plugin for the packaging and 
shipping, although we'd have to modify the engine behavior in some ways. 
I'm just saying that the philosophy of what seems on the outside to be 
nice like dropping in a gallery, comments, and maybe 2 or 3 other 
vertical plugins on top of a system just turns it into a huge giant mess 
with application logic spread out into 3 or 4 different app directories 
not to mention the main one.

If we are to use an engine like system for this I think that what should 
happen is that groups should get together and build massive pieces of 
functionality instead of many small ones. Individuals can still build 
small pieces, but it would be for a particular project/extension. A 
group might build a blog with every blog feature they want and make it 
look, feel, and work really well together, then package it as a radiant 
engine. This means we could have several blog extensions that each take 
advantage of the great behavior, tagging, and administrative strengths 
of radiant, while each taking a different approach to how they integrate 
their blogging features. This represents a change in how this community 
would be structured, but I think it is an important one, and one that 
could make radiant one of the best content management systems out there.

This will be my final post on this topic of this length. I hope my ideas 
had some impact to someone somewhere. :)

Josh @ besquared

Al Evans wrote:
> Josh Ferguson wrote:
>
>   
>> Core's objection to engines is that the pieces are too big. Engines
>> encapsulate essentially an entire application, whole vertical slices of
>> functionality. The view of core on this is that if you want an
>> application then build an application, you most likely aren't going to
>> drop in more than one engine at a time ever since the slices are so big
>> and most likely won't work with one another without some major
>> modification on your part so what's the point in having them pluggable?
>> It makes more sense to just download a complete application and go from
>> there. Adding mroe than one large vertical slices of functionality most
>> often leads to collisions where two plugins are overwriting the some
>> pieces of the same classes or views, that is why it's useless to have a
>> system where you can install more than one.
>>
>> That being said the other thing I dislike about engines is that engines
>> start out with the philosophy of 'the engine is your application' and
>> then you can override views in your application. This is completely
>> opposite of what makes sense in our situation, where your application is
>> your application and the views you already have get overridden by the
>> plugins in the engine.
>>     
>
> I don't know that much about what other people are doing with engines, 
> but I offer my own psitsNOT as a counter-example. It simply adds 
> image-editing to any Rails app. To do this, it needs its own views, but 
> it doesn't impinge on the other functionality of the app in any way. All 
> the app needs to do is override the PictureController, and all it has to 
> do there is provide a source of images.
>
> I'm not trying to be difficult, but plug-in functionality of this sort 
> CAN be desirable. Image editing could be useful in a wide variety of 
> apps, even ones in which it is completely beside the point of the app 
> (blogs, catalogs, ...). psitsNOT doesn't interfere in any way with any 
> other functionality of the application; it doesn't even use the 
> database.
>
> (Demo: http://psitsnot.alevans.com
>  svn: http://svn.openprofile.net/plugins/p_sitsnot_engine )
>
> I don't really think this is a unique case, and I apologize for being a 
> bit off-topic:-)
>
> --Al Evans
>
>   




More information about the Radiant mailing list