And what of the Engines plugin?

Written on July 21 2008 at 09:53 and updated on July 21 2008 at 10:49

I got a comment on my previous post from Peter at onemanincubator, about the engines plugin. Since I can (using the power of vanilla-rb), I’ll include the comment here:

I assume you’re James Adam, the main guy behind Rails Engines.

If not, sorry.

But if so, I’ve been developing on Rails for about a year and half. What Engines seeks to do seems like a painfully obvious need for anybody who has developed > 1 websites. That Rails 2.0 didn’t even touch the issue behind Engines strikes me as hubris.

But the thing that troubles me about Engines is that there doesn’t seem to be a site providing examples of plugins developed on Engines (a la your old discarded login_engine). That would suggest that Engines has failed as a broad based solution, and has lived on only in hidden dev-shop caves and obscure dev group mail lists. Bummer if so.

But it just seems that if Engines was such a bad idea, I could Google for a persuasive argument against it. But I can’t. Or, alternatively if Engines was as useful as it seems, I could Google for a thriving open community of Engines developers. But I can’t.

There seems to be a strange anomaly in the universe here. My guess: banal human failings. (Sorry for digressing on your quiet blog.)

No problems about the digression - I think this is really interesting, Peter. I’ll interleave my points with yours.

I assume you're James Adam, the main guy behind Rails Engines. If not, sorry.

Yes, that’s me.

But if so, I've been developing on Rails for about a year and half. What Engines seeks to do seems like a painfully obvious need for anybody who has developed > 1 websites. That Rails 2.0 didn't even touch the issue behind Engines strikes me as hubris.

To be fair to Rails, the implementation of the plugin system has dramatically changed in Rails 2.0. The internals of the plugin mechanism are much, much easier to override than they were in days gone by, which makes it easier to add behaviour in the way the engines plugin wants. This is in part because I wrote some of that implementation, and in part because I believe that the Rails Gatekeepers are acknowledging that the framework can be flexible without sacrificing any of its opinionation. Consider the addition of “view paths” in ActionView as an example.

But the thing that troubles me about Engines is that there doesn't seem to be a site providing examples of plugins developed on Engines (a la your old discarded login_engine). That would suggest that Engines has failed as a broad based solution, and has lived on only in hidden dev-shop caves and obscure dev group mail lists. Bummer if so.

I think this probably reflects the situation at the moment. There’s not a huge amount of traffic on either of the engines mailing lists. It’s my feeling that there are enough people getting value from the engines plugin for me not to doubt the sanity of the idea, but it’s not set the Rails world on fire, either.

This could be because the plugin got such a large amount of FUD thrown at it for the first year of its conception. That’s lessened now, partly because I’ve hopefully explained why the concept is useful, and when it’s appropriate; but in some part it’s because “opinionated” communities need fresh things on which to form opinions, and so the engines plugin moved out from under the Great Eye, to be replaced by… well, something else. Not my problem :)

That there are no ‘examples’ could be construed as proof that the plugin isn’t useful, as you say. But it’s also my fault - I’ve stated very clearly that engines-based plugins are most useful when sharing between projects of your own, and might not be very suitable for general consumption (this boils down to the ‘are components evil?’ debate, essentially), and so I’ve implicitly disuaded people from promoting their use of the plugin.

And, is it bad that it hasn’t been fully accepted by the Rails community as a whole? I’m not sure. As long as it’s serving some people well, then it is serving its purpose valiantly. Perhaps I/you/we could encourage these cave-dwelling-people - if they exist - to be a bit more vocal, if only to each other?

But it just seems that if Engines was such a bad idea, I could Google for a persuasive argument against it. But I can't. Or, alternatively if Engines was as useful as it seems, I could Google for a thriving open community of Engines developers. But I can't. There seems to be a strange anomaly in the universe here.

The engines plugin is the kind of thing that you might not realise is useful until you need it, and by that point you may have been scared off by some of the louder voices in the Rails community.

My guess: the engines plugin isn’t useful for a lot of Rails developers, because there aren’t many Rails developers who really need to work on more than a single application at the same time to any significant degree. Similarly, there aren’t many rails developers who’ve built enough applications to feel the pain necessary to start extracting useful subsystems into plugins.

Have you tried using it? Do you find it useful?

[snip 'comments' cannot be found]