On the XP mailing list, somebody recently pointed out that never changing IDEs is a sign that you’re in a rut. Which is true; I love Emacs, but I love it less with more recent languages, so why not learn a bit more about what’s out there? Tim Bray recently posted about how well the NetBeans Ruby support works; I thought I’d download it and give it a try.
I’m typing on my Mac right now, and the NetBeans Ruby community seems to be somewhat Mac-centric, so I figured I’d start there. So, after a bit of reading wiki pages, I found something to install, and fired it up.
First thing that made me say hmm: it seems to think that your source code and unit tests should be in parallel directories; in my current project, the tests are in a subdirectory. Will that bother NetBeans? Not clear; I’ll just point it at the right place, and see what happens.
But my local sources are out of date. Part of the point of an IDE, however, is that it knows about version control systems; sure enough, there’s the “Update” menu item. Which doesn’t work: apparently NetBeans got a complaint from ssh about “Connection unexpectedly terminated”, or something like that.
Some background: I use svn+ssh to read the files from my server. I require a password: I’ve decided not to put any ssh private keys on the laptop for security reasons. To double check that things are still working, I go to a shell and do ‘svn update’ in my local checkout: no problem there.
Next step: see if this works with NetBeans without using the existing local copy that I’ve checked out. So I create a project from scratch, and try to add files by telling NetBeans to check them out from the svn repository. Based on the menus, it does know about svn+ssh; the usage examples that it gives, however, require having a private key available.
See, this is the problem with IDEs. It’s okay that it doesn’t let me use a password: I don’t expect it to be able to handle every wart of my setup, as long as it doesn’t mind if I handle that wart a different way. And with Emacs, I know I can do my svn updates outside of Emacs, because I know what’s going on within Emacs: at the core, Emacs edits files. It can do lots of other things for me, but I know that, if I go to a shell, and type ‘svn update’, Emacs won’t get confused. I’ll have to revisit buffers that are looking at changed files, sure, but that’s to be expected, and Emacs will let me know if I’m trying to edit an out-of-date buffer. Whereas with NetBeans, who knows what I can do manually! Does it depend only on the file system the way Emacs does, does it keep a separate index elsewhere, or what? I don’t want to start depending on its fancy “find usages” stuff only to discover that it’s missed usages because it didn’t learn about files that came in through an svn update that I did in an external shell.
(On the “find usages” note – that’s great, but I hope they get to “extract method” soon. Which they probably will: they seem to be developing actively, it’s flagged on their wiki page as something they should do, and I have to think it’s a lot easier to implement than “find usages”.)
To be sure, my IDE complaint above is quite unfair: when I say “who knows what I can do manually”, I mean “I, a complete NetBeans novice, do not know what I can do manually”. Somebody knows, it may well be documented somewhere (I haven’t tried to look at all), and for all I know everything will just work. Having said that, I’ll stand by my basic point that, the more a development environment depends only on the public contents of the directory system (as opposed to special stuff that only the IDE controls), the better: that makes it clear that tools can interoperate, and reduces the barriers to entry and exit.
I’ll give it a try on the Linux box next, I guess: that’s where I do most of my home programming, anyways, and there I don’t have to worry about the ssh issue. And, given my last paragraph, I suppose I’ll drag NetBeans out of the trash: maybe it does the right thing, in which case I was premature in deleting it.
Hmm, getting back to the first sentence of this post, maybe this is a great example of how my development environment usage is a sign of being in a rut. If I freak out at the first (or maybe the second) sign of problems and run back to the environment that I’ve been using for the last two decades (have I really been using Emacs for 20 years? Wow. If not, I must be close – maybe I didn’t start using it until 1988? Looking at the relevant bits of the release history, I can’t tell; my first version may well have been an 18.4x one, but I don’t know which), then obviously I need to get out more.
Post Revisions:
There are no revisions for this post.
This is why I do all my programming using “ex”. Its behavior is fixed, and it’s hardwired into my fingers; when I want to do something in the nature of editing, I don’t even have to think about it, it just *happens*. If I want to do something else, I do it outside my editor.
“The question is, which is to be master, that’s all.”
8/19/2007 @ 9:28 pm