I’ve learned to love TextMate, and then VIM, in the course of the last 18 months. But when I am coding in Ruby with Rails, I still have that middle-of-the-night, feeling-my-way-around-the-room in the dark sensation. Sure, the Rails console is handy, and I can see how proficiency with VIM, or even Emacs, could lead one to becoming a text hurling Ninja. These are hard-won skills, though, worthy as they may be. And me, I am spoiled.
I grew up with Delphi, then used Eclipse — which had plugins for everything, and everything was visual. Class browsers, stepping debuggers, variable watchpoint outputter thingies, call stack displays — having your entire application, code, variables, inheritance trees — everything — right in front of you was just another days work. It was expected. You visually merge your source branches with Subclipse. You want to refactor? A visual list of what code modules will be impacted appears before your eyes. You get the idea.
Oh, and all of it just worked. I am sure that I could have automatic code completion and most of the other features I am describing in VIM — if only I were one of the seven people on the planet with the right set of VIM add-ons and knowledge of the arcane key combinations that make them work. I am working on it. Really. But why must it be so hard? Maybe it is me.
So I have been more than a little excited that CodeGear, the independent developer tools arm of Borland, is as enthralled with Rails and Ruby as the rest of us are these days. These guys basically invented the commercial IDE (well, ok, when you ignore what Doug Engelbart and Alan Kay did, but, you know, c’mon, they did *everything* first, we have to share the love here) with Turbo Pascal and have been doing it better than everyone else (certainly Microsoft, but maybe not JetBrains — hey this is my opinion, so give me some slack here) ever since. Anyway, these guys know how to make great developer tools and Rails will be forever changed by their attention.
The announcement came out first thing on Monday that the Eclipse-based Rails development environment first pre-announced right here at Mike Does Tech (yeah, me!) is officially Coming Real Soon. The press release featured DHH’s response to that pre-announcement, a direct quote from this blog also (yeah, me — again!), but while that quote was attributed to DHH, yours truly forgot to request that a certain PR guy attribute the quote’s origin to Mike Does Tech. And that is ok, because I am not *that* much of an attention whore, anyhow.
Half-assed attention whore though I may be, I am no vendor’s mindless fanboy. CodeGear VP Mike Swindell offered to give me the skinny — or, at least, more of the skinny than he gave me several weeks ago — on what the product will look like, and what it will do. I did my best to ask the Tough Questions, because, frankly, they have a hard road ahead. Rails programmers look askance at IDE’s, and I think some of that has to do with the resource intensive nature, and general Java-based clunkiness, of Eclipse. Or maybe it is the unmitigated evil-by-association of Visual Studio. (Shame on you if you use their tools.) At the very least, IDE’s are associated with cubicle drones, and not trendy Powerbook slinging Rails heroes with bad facial hair — present company included. But I think that is about to change.
[Aside to Microsoft over that whole Linux-is-violating-our-patents thing: On behalf of one of the many “developers, developers, developers:” Fuck you, fuck you, fuck you. How stupid can you be? Do you think any of us will *ever* recommend your software for anything ever again?]
What wasn’t particularly interesting about my conversation with Swindell is probably what matters most to those of us who program in Rails using TextMate or VIM today: that we are within months of seeing a development environment with a feature set very much like that of JBuilder, but tuned very specifically to the needs of Rails developers. What made that uninteresting is that these kinds of rich environments are not news outside of the Rails world. Take some time to look at what JBuilder can do, though, and you realize that within a year, probably, Rails development using such powerful tools will be commonplace.
But this article is not really about that. It is easy to see how a CodeGear-authored, Eclipse-based Rails developer tool will appeal to the many developer shops that cannot get the bitter taste of Java’s complexity out of their mouth. Did you really think that Struts + Spring + Hibernate + a bunch of other layers would simplify your life? How silly. I couldn’t run away from that crap fast enough.
The question that matters is how do you convince a command line jockey (and an aspiring text Ninja, like myself) to forsake the mythic and obscure powers of the prompt for the seemingly superficial and blingy (but handy) IDE? The answer is, you don’t.
Finally, I quote Swindell from our conversation on Monday:
We looked at how developers are building Ruby on Rails apps today. There is a lot of command-line development, a lot of TextMate, a lot of VIM, and one of the challenges that we wanted to solve was, how do we bring the power of the IDE to the command-line developer? Since there are so many things being done at the command line with RoR, how do we introduce that to the IDE developer without hiding everything that is happening? Looking at that paradox, we came up with an IDE innovation we call Commanders. It is bringing the command line and the console into the IDE, and merging them.
We have integrated all of the IDE features directly into the command line so that anything you can do in the IDE is exposed to the command line. So you get all of the power of the command line, married with all of the features in the IDE. Everything that you are doing in the IDE is reflected in the command line, so nothing is hidden from you. You can see everything that is happening. You don’t have to decide which approach to take. It is essentially a meeting point between the command line and the IDE.
Of course, you can bring the command line into VIM and Emacs in various ways, and, to a lesser extent, to TextMate. But what Swindell describes sounds like more than that. The IDE, including the Rails workspace within Eclipse, and the Eclipse workspace itself, become tools that are opened up to the command line, and the command line becomes a tool that is usable within the IDE. Within Eclipse.
It begins to sound like a late-night kitchen knife commercial — Wait! There’s more! — but the deal becomes:
- Eclipse, a very capable editor and development environment in its own right
- A whole world of Eclipse plugins for everything from visual modeling down to svn code diffing and management — much of it free and open source
- A Rails workspace via a (very unfortunately) as-yet-unnamed CodeGear product (hey CodeGear marketing, wtf?)
- A command line interface to and from the IDE
- Ultimately, but not in the initial release, the team development features of JBuilder (a very mature and respected product, for good reason)
Pretty sweet, eh? You’ll thank me when the public beta happens later this summer. Or, if you are one of those lucky bastards heading to RailsConf, where CodeGear will be showing this off, sooner.
Delphi for PHP is exceeding CodeGear’s expectations. The VCL for Ruby? Still very much a possibility, but not an immediate priority for them. But what I was most impressed with was that CodeGear wants to drive Rails adoption. They hear from unhappy Java folks every day. Swindell said, “We are really treating our Ruby on Rails effort as our Next Big Thing,” and he meant it.
I am excited to see where this goes, and I promise to stay on top of it to bring you as much information — and screen shots! — as soon as I can. I love Rails, but that fumbling around in the dark thing, that not having modern tools thing, it sucks. Sometimes you have urgent business to attend to, and the last thing you want is to have trouble finding your way. Fear not, relief is in sight.