Rails, Engines and Vantage
Not long ago, David Heinemeier Hansson blogged on the official Rails site about the new upcoming release candidate. Lots of great things are going to be coming out with this release, including a plugin manager for the new plugin system that came out with the 0.14 release. Since this plugin system has been available, a new project emerged called Rails Engines.
As if the plugin system itself wasn’t amazing enough, Rails Engines are built on top of plugins to provide a new level of vertical modularization. This is what we’ve all been waiting for. This is practically the pipe dream. This is the last piece of what my ideal web framework would look like, and I was already in love with Rails.
Just when I was trying to decide how to componentize and package Vantage, this comes along. I can’t tell you how many great things have just been falling into my lap lately.
Have I explained Vantage yet?
I’m going to try and keep this simple, but I’m probably going to end up talking quite a lot. Vantage is an application framework built on top of Rails. It takes existing Rails concepts and takes them further, particularly in the user interface. So far, the most popular use of Rails has been building dynamic websites, not so much building hardcore web applications. This is because it’s still too hard.
Great application programming environments provide solutions to your common application development needs. Rails provides a great model-view-controller implementation, tools for building web service APIs, great support libraries, and then tools and guidelines for working with them. It really doesn’t touch anything for building a user interface besides ActionViews, which is basically just a templating system.
Now, here’s another thought. In general, most web applications have poor user interfaces. Take content management systems for example. They all have the same basic functional requirements, but their user interfaces vary drastically between them. Some are better than others. Some are just terrible. The world of desktop applications does much better. I believe this is because there are common solutions to certain problems provided by the operating system, as well as various standards and conventions that most people know so well they don’t even have to think about it.
With Vantage, I’m trying to provide good solutions to certain higher level problems that Rails does not concern itself with. I’m doing this because I want to be able to make complex applications with a flexible, yet user-friendly interface… as fast as possible.
At the same time, I’m creating a platform where applications created with Vantage can co-exist, whether they’re integrated or not. Of course, ideally they’d be integrated, or better yet, could become integrated fairly easily. That’s getting into some longer term goals.
Vantage is not a content management system, but you can use it to make one. In fact, that’s one of the first things I’m doing with it. Some of the other projects on my list are an accounting system, a project management system, a billing system… hell, a whole enterprise system. And I want to do it quickly. I’ll be able to do it quicker than with just Rails because I won’t have to worry about building a user interface. Not that I don’t have the option to customize the interface, but Vantage is very smart at automatically giving you something that’s closer to a finished product.
I guess you’ll have to see it to completely understand what I’m saying. I’m finally going to be showing it off at the next SuperHappyDevHouse, so if you’re interested, be sure to come.
November 11th, 2005 at 7:10 am
Unrelated, I’ve been thinking about the idea of type inference just now and…
ugh, theres no way to type this out without drawing a picture. Knock me up on aim, baby, and ask me what I was thinking.
November 16th, 2005 at 1:43 am
Glad you liked Engines - let me know how you’re using them!
February 22nd, 2006 at 8:21 am
[…] I’m working on this thing called Vantage. One of the things it does is provide a high level solution to help your users navigate the data in your application. The original idea was to have a tree menu that was procedurally created using the relationships of the data in the system. This would allow the user to browse to any item via associations, an idea I liked for two reasons: […]
February 28th, 2006 at 12:27 am
I hope I’m not missing the point here, but filing clerks have been fretting about how to store info for decades - long before computers were in common use. Misfiled data is useless data, or so they say. Computer users have one main advantage over their counterparts of yesteryear: they can lose data more thoroughly and more permanantly than their predecessors ever dreamed of. Or am I being a cynic now?