Farewell, login_engine.
While I prepare for the upcoming release of the engines plugin 1.2 release, I should also add that the "login engine" and "user engine" won't be joining us on the journey to 1.2.
Only ever really intended as a demonstration of the sort of thing the engines plugin might enable, they rapidly became the two planks which the engines plugin was nailed to by many people in the Rails community.
It's not that they're not useful; but rather that they distracted from the whole point of the enterprise: to make it easier for you to share your own code between your own projects. The code is also getting old (much of it was developed before Rails 1.0 was even released) and divergent from the Golden Path of Rails Best Practice, so to bring it all into line (and to be something that I'm proud off) would take more work than I'm willing to invest in something which is detracting from the main intent of the engines plugin itself. It would also be hard to maintain backward compatibility for any production applications that required it.
Plugin developers - it's your turn
You might even consider this a call to arms. If folks in the rails community want to develop a new authentication plugin that utilises some of the benefits of having the engines plugin installed along side it, I fully support that. Likewise, the "login/user_engine" code is out there in the wild, and anyone who wants to produce an updated version is more than welcome. Contact me on the engine-developers mailing list if you're interested in doing this.
Caveat Developer
With the 1.2 release, the notion of "engines" becomes almost meaningless, and I've got all my fingers crossed that this will make it clear that all you're really dealing with here are plugins, and the same "component"-esque issues apply across the board.
Beware when accepting code from strangers, as it might not do
- What you hope it does;
- What you think it does;
- Anything even remotely useful or desirable.
As I said at Canada on Rails last year, we (as developers) have a duty of care to ensure that we at the very least understand all of the code we're borrowing from the rest of the Rails community, be it tagging behaviour, authentication code or even just some javascript. If you don't inspect it, you'll never be sure that it doesn't replace every image in your application with a picture of David Hassellhoff.