Topic: Thoughts on plugins...

I was wondering what most of you think of plugins.  One of Rails', greatest strengths is that it is a full stack architecture.  You don't have to worry about integrating an ORM module with an MVC framework with mailers and loggers, etc.  Of course the price is that you are loosely constrained to do things the Rails way.

Some people also claim that not having to evaluate 4-5 different contenders for each of those pieces is another bonus for Rails.

However it seems like the exponential proliferation of plugins is at odds with Rails' core strengths.  There are stories of plugins that don't play well together; numerous plugins break on different versions of Rails, etc.  I hear stories of a lot of plugins that aren't well maintained;  plus now you need to spend time evaluating the N versions of a plugin for doing X, for instance the large number of login plugins/engines/generators.

As a result, I've tended to stay away from plugins with a few exceptions for things that don't directly interact with production code (ie test helpers)

In other frameworks I'd consider the plugin ecosystem an extremely valuable thing, but in Rails I wonder if its something that will cause Rails to lose its defining character.

Your thoughts?

My RoR journey  -- thoughts on learning RoR and lessons learned in applying TDD and agile practices.

Re: Thoughts on plugins...

I think this just an issue of maturity.  I'm sure CPAN and Pear have gone through stages of less than perfect modules. 

What I'm seeing is that someone solves a problem, they want to share it so the pop into into a plugin and stick it on ruby forge and kind of forget about it.  Pretty soon however people will start to take pride in maintaining this stuff. 

I see the rails community as being in a state of excitement where people are to busy churning out code than maintaining plugins.  After a while things will settle, and community as a whole will become much more mature.

Fortunately Rails includes so much that you don't need a lot of plugins. I personally have used two plugins, file_column, and RoR::PayPal.  They have both worked very well for me.

Re: Thoughts on plugins...

thabenksta wrote:

What I'm seeing is that someone solves a problem, they want to share it so the pop into into a plugin and stick it on ruby forge and kind of forget about it.  Pretty soon however people will start to take pride in maintaining this stuff.

The other issue, in my mind, from lurking on the rails-core list is that the official answer to "can you build X into Rails?" is "make a plugin".  Perhaps I haven't been lurking long enough, but I don't see many successful plugins that then get rolled into core.  The strength of frameworks (aka Rails) is its integration; the strength of a language is in its class library.  So in that sense I don't think either PEAR/CPAN, etc are the right model for a mature plugin ecosystem. 

I agree that plugins make a great way for people to play with possible extensions to Rails and for rapid prototyping/sharing of said extensions.  However, I'd like to see more indication that core is cultivating the best for inclusion into some future version.  Perhaps I haven't been lurking long enough to really understand how the dev team works though.  (I'm used to the much higher traffic developers list for PostGreSQL which I find absolutely amazing to lurk on....)

My RoR journey  -- thoughts on learning RoR and lessons learned in applying TDD and agile practices.

Re: Thoughts on plugins...

There are certain things that shouldn't be in the core rails framework.  PayPal integration is a great example.  In my mind that's what plugins are for.  Functionality that *shouldn't* be a part of rails, but that's nice to have available.  Sure the better ones might get pulled in.  I think file_column *might* fit in well with the core.

I dunno, I would just give it time to develop.

Re: Thoughts on plugins...

DHH was asked about adding code to the core to help Rails consume XML feeds (atom, rss, etc.).  His response was that Rails is primarily a content generating platform, not a content consuming one.  So he said that kind of stuff should be kept as plugins/engines.

The more time I spent reading the stuff by 37signals the more I embrace their constraint-driven approach.  A good example of the opposite of the rails approach can be seen in this video

Personally I've only used a couple plugins (file_column and acts_as_taggable) and in both situations I ended up just taking the code I wanted and building it into my app.  I may need to use active_merchant soon, so we'll see how that goes.

Re: Thoughts on plugins...

I would certainly agree with the statement that some plugins don't play well together just take acts_as_versioned and file_column, they are an absolute mess together.


wouldn't it be possible eventually to have a "group of ppl", aka rails user, that are dedicated to creating a rails-utils package.  one that contains a list of packages that are known to work well together and that lists any problems that do exist.  Essentually this would only have to just be a wiki at its most basic but could evolve into a rails PEAR equivelent.