Dreaming of Rails as the Next Microsoft Access

Rails? Access? Isn't that confusing the cutting edge with the office drones?

No, actually - it's not.

Up until Rails, Microsoft Access had been my preferred tool for creating applications centered on a relational database. The first time I got to work with Access, in 1994, I was overwhelmed and amazed.

If I needed to add a table, I could do it, easily. If I needed to modify a table, I could do it, easily. Access supported lots of different kinds of joins, letting me set it and forget it, unless I got something wrong. And while the interfaces generated by the wizards weren't entirely attractive, they were a useful base to start from, tweakable in infinite directions.

All these years later, Rails offers very similar functionality: tweakable database structures, interface generation, validation rules under the hood, and a similarly iterative design process. Rails uses the Web rather than Windows as its primary interface, and it certainly offers more flexibility and power than anyone gave Access credit for - but the problem domain is similar, and the solutions aren't that incredibly different.

In a lot of ways, I look at Rails as what Access might have been had Microsoft told its Access team to migrate to the Web. Unthinkable, I know. But in lots of ways, both are frameworks with databases at their core, building out toward interfaces. Rails learned more about loose coupling, multiuser support, behaving like a service, and certainly scaling - all things I dreamed of long ago, but never got.

So why isn't there more talk about the similarities?

The barriers between the groups are pretty clear. The Rails community seems reliably uninterested in Windows for the most part, and the Access community has always been trapped in Windows, as Microsoft never released it for other platforms. I can find some talk on the Web about transitioning, but not very much. The costs of shifting from VB to Ruby aren't small, and there's a lot of culture shock to be had all around.

The other barrier, though, reflects the one place where I think Access has an advantage, even after a decade of slow change. While Access does visible and invisible code generation much like Rails, exposing that code as VB and declarative properties, it does as much as possible through the comfort of a GUI. The general practice set by Access's creators from the beginning was to do as much as possible through visual interfaces rather than through code. In that, perhaps more than anything else, they struck a balance that made Access approachable while still letting it be powerful.

Rails culture runs the other direction. GUIs are the end product, but the code is pretty much all plain text. There are some tools for creating Rails forms out there, but an amazing number of developers work through text editors. Even Heroku Garden's web-based development environment basically provides a text editor and command line through a web interface. The command line is ubiquitous and largely unavoidable, and practically all Rails documentation assumes you are using it.

Those barriers leave me stuck dreaming. I'm now as comfortable working in Rails as I ever was in Access, but there aren't a lot of direct paths from here to there. I'd love to see someone write an interface for Rails interface development that feels like Access, but there's no question it would be a difficult challenge.

Despite all that, though, I think Rails may have a bright future, eventually, among the same kinds of people who've built Access databases over time. There are an almost infinite number of data-centric projects that are too big for a spreadsheet, need to involve multiple people, and accumulate data over time. Hopefully more of those folks will - over time - find Rails a comfortable place to work. Rails can address ordinary tasks elegantly.


You might also be interested in:

19 Comments

If Simon is right, anyone who builds a GUI interface so that Rails overcomes the command line limitation could boost Web development greatly.

As someone who works in Access and Asp.net, a web development platform that is straightforward like Access and doesn't require a team of experts (like .Net) would be most welcome.

If you're interested in rapid database development for the web, you should check out Springbase: http://www.springbase.com

Disclaimer: I work there

It's Seaside based rather than Rails, but http://dabbledb.com may be just what you are dreaming for.

Nice article, food for thought. Assuming that you'd want some sort of discussion on if Rails needs to change it's path to a more point 'n click interface, here are my thoughts:

I disagree on your statements about the command line. The command line is a great tool, and I haven't yet seen an interface that matches it ease of use. But, granted, it has a steep learning curve. So does VIM. But, boy, are they powerful! I don't think this a part which we should change.

I do like the the comparison with Access. We actually sell the concept "turn your Access database into something you can access through the web with Rails". Well, sort of anyway.

I haven't tried Rails mostly as a result of conversion costs, since I'm already comfortable with Access. Iain's comment doesn't really make sense to me though. Creating a visual design interface doesn't have to REMOVE the ability to code exclusively through a text editor or "command line" interface.

Power isn't everything. True, it's important to have power available, but in my experience ease of development is equally important. You shouldn't have to sacrifice one for the other. If speed and power were the only things that mattered everyone would code exclusively in Fortran and OCaml.

The idea that real developers only use stupid-hard to learn tools like VIM or emacs has been one of the major factors holding back open source back in general.

Until the open source community gets over it's geek elitism and removes the barriers to entry for developers whose talents lie in design, IU and customer relations (instead of C code optimizations and security exploits) by developing more easy-to-learn-and-use graphical development environments, open source will have a tough time displacing Microsoft (or even Apple) in a significant portion of markets like business and the desktop.

Or use a crazy hybrid approach! http://eqldata.com/ takes Access databases and publishes them directly to the web using django and sqlite.

Hi Simon,

I think you and I discussed this at TOC 2008. I wrote about it a few years ago. In particular, see the part about the hypothetical Brenda. I didn't account for the role of Access's GUI, though, which is a very good point.

You did omit one key issue, obvious enough for us geeks to assume, but very important to the Brendas out there: Rails is free, and Access costs $229.

Bob
snee.com/bobdc.blog
@bobdc

Rails has to be a bigger thing than Access ever was.

First off, I never developed in Access, but FileMaker instead, a vastly superior environment that works in both Macs and Windows.

For sheer accessibility, Rails is more in spirit to FileMaker.

As I say, I'd never code in Access, but Rails is a no-brainer. I don't see how the two compare, really.

Thanks for your comments, everyone - I'm glad to see that I struck some kind of nerve here.

I don't think there's any need to remove the command line. In general, I wish everything had both a command line interface _and_ a GUI interface. Access is missing the command line, but Rails is missing the GUI.

Benn's comments on geek elitism feel like the heart of the matter to me. I'm not startled by the presence of elites, and I'm not particularly inclined to revolution here. At the same time, though, it seems like many geek communities put up barriers to adoption without even noticing that they're there. Prerequisites for joining a community tell you a lot about what the community values.

Finally, on FileMaker, I have to confess that I haven't used it in a long long time. Back when I started in Access, FileMaker seemed way too basic. Habit set in, so I really haven't used it, though it certainly seems to have advanced more than Access over the last decade or so. Rails broke me out of that mostly because I was looking to develop web apps instead of desktop apps.

We'll see where this all goes. I'm guessing we'll continue on the current tracks for a while, but I certainly see an opportunity here.

Perhaps it's time you built a shoes app that does just what you want :-)

Simon thanks for writing that. Of course there are a lot of people who automatically put down Access or at least the concept they carry of it. An lot of programmers are such snots. They have to know that what they are into is better than x. Like the filemaker guy who knows that filemaker is vastly superior to Access, even though he has never used Access. Thank goodness no one puts programmers in charge of anything more important than software developement!

I have been building Access apps for a long time. As a front end to sql server or postgresql or oracle it's extremely efficient. I build complex apps for major corporations. Because I'm good at data structures, good at listening to the end user's needs, and can prototype and deploy rapidly, the projects are usually major successes. People who think of Access as a wizard driven clunker are pretty shocked when they see how great an app built with Access as a front end can be.

Access is dowdy and awkward because Microsoft has neglected the product, at least till they messed it up with the 2007 version. But earlier versions are still amazingly productive for the right project. You can beat the remote user scenario using terminal services etc.

You are completely right about the need for a web oriented, gui oriented database dev tool. It could be based on rails, django or any of the other excellent frameworks out there. dabbledb is good but at least last time I looked it's best at grid oriented projects, you can't build a concentrated, intense form based app with it. A lot of the other systems out there like quickbase are again good but you can only take it to a certain point. And a lot of my clients are never going to want the data on some remote server.

If someone does build a solid, versatile web oriented gui oriented database application development tool, there could be a huge audience for it.

By chance I stumbled across this post while browsing RoR books - very fitting. In a way I'm a user that supports your point, I've used Access for 10 years for a portfolio management & reporting db and it's worked largely b/c of its depth (database, SQL, reporting, forms, VB). But it's time to move it to the web - here I am buying books on RoR + MySQL. And a hangup is, geez, back to the command line again...for everything?

Conceptually, it seems a RoR development environment could look the same way, with a GUI + code window combination to suit both styles. I'm just getting introduced to RoR and am surprised that doesn't exist, something like Dreamweaver meets Ruby meets Flex meets SQL (which is to say, all the junk I've just loaded to mimic on the web what Access does on the desktop).

But really, I still haven't tapped out Access (pre-2007 version) and could probably go another 10 years using it, there's so much capability there. Agree that the GUI is a strong suit, not the wizard stuff either - good example is the ease of creating and displaying relationships, or creating a query - I think back to dBASE III command-line ways of doing that. Plus there's code and SQL to go to when you want to work that way. And you really can develop quickly in it, especially for smaller projects. If only the MS Graph object wasn't such a bummer...and it all ran in Firefox.

NetBeans is essentially a Rails GUI. Not only for editing, but even for rake tasks, running tests, etc.

Great article Simon. "trapped in Windows" is a very apt phrase for Access, and obviously "trapped on the desktop." To some extent Microsoft has a fine line to tread. They have roughly 10+ million Access users (according to one of their employees) and need to continue their investment in Access, while at the same time always treating it as a baby-step to their more profitable products (SQL Server, Axapta, .NET). They have to eventually do something to move to the web as a defensive play against Alpha5 and obsolescence.

The irony is it will probably be a "non-developer" that creates the RoR gui. Even my company has created a
framework on top of Microsoft Access
because as usable as it may be, Access still doesn't give users everything an app needs these days. And lastly, I agree with Benn. There is an element of purism in the RoR command line that harkens back to when we made the switch from DOS to Windows. Let's face it, some of us thought perhaps we were moving to a wimpier, less intellectual world that put form over function.

Hhhhmmmm!
It seems that there is stil a lot of misunderstanding over what Rails is.

Access is a DBMS Rails is a framework built on the Ruby language.

The two are only comparable in as much as rails can work with an Access database if you really want it to although for the life of me I can't think why anyone would want to do that with Rails when most website hosting companies have better support for MySQL, postgres etc... from which you can take your pick.

Rails is essentially a website development tool and is more comparable to Java, php etc which is why you just won't see talk about Access in any Rails discussion other than to say if you really want to use Access with Rails you can with a lot of effort.

The RoR GUI exists in many flavours, as has already been mentioned netbeans is a totally superb GUI for Rails and is available on ANY platform.

As primarily a Delphi, Java, COBOL and a .net developer amongst other languages I have found that the Ruby language is so superb to work with that after 19 years as a developer I have totally abandoned those languages and now only use Rails (On a windows XP platform with netbeans and the Ruby plugin.

The Rails community is totally superb and places like http://railsforum.com/ are full of help and advice for beginners plus there are tons of articles on the net on how to get into Rails plus it's totally free, runs on any platform and is even installed by default in the Mac OS.

Could you ceate twitter using ACCESS? It's just not a real question.

Stop dreaming and start doing is my suggestion :-)

Hope that clears up some misunderstanding.

Oracle's Application Express is by far more like Access in that it offers a graphical interface and can be used by those unfamiliar with coding. It's free and with it you can build your database and web pages quickly with nothing but a web browser as your IDE.

Oracle APEX is more access like but much advanced in the sense the database is the engine for code,logic and presentation.

Seriously??
Have you ever done Rails development???
It's NOT difficult.
Ruby is a brilliantly humanistic language.
ActiveRecord abstracts away most of SQL.
The web interface is the part you must design visually and test in a plethora of user-agents.

How would it benefit from being point-and-click?
There are already frameworks for OS X that make use of AR only, and Rails as a whole to create desktop apps.

This is already easy to do with any database.

The concept is called ORM and scripts generate stubs for the Model View and Controller.
Convention over configuration.

You might be amazed what is possible with simply learning to write a little logic in code.
Totally easy to do common things.

WYSIWYG only works for certainly things.

Ruby on rails is a very powerful combination indeed. Access is database centric. Ror is much more than that. Switching back to the command line may be frustrating after having spent years in Microsoft GUI jungles. There are many very good IDE's for Ror out there like RubyMine. However, what they all fall short when you want to create RIA's due to the fact that there is no streamlined way of integrating sophisticated controls into your web pages. Let's face it, if you're developing some type of database app for the web you need to use nice grids, calendar control, editable drop down etc. Take FXRuby for an example. They have all these nice controls but you need to code them line by line into your rails application. The only work around I'm aware of as of now is the foxGUIb which generates the necessary code to paste into your app. I haven't tested it yet. The Ror IDEs need to be beefed up with plugins that leverage libraries like FXRuby in a GUI environment.

News Topics

Recommended for You

Got a Question?