May 26th, 2005
This has been brewing for a long time. I’ve been a BBEdit user for a long, long time (over ten years) so it’s a piece of software I know really well. And when there’s an update, I always bump into the reviews on MacUpdate or VersionTracker. And a lot of those reviews just strike me as wrong in a variety of ways, so I wanted to offer my (highly-opinionated) take.
The most common criticism of BBEdit is that it’s expensive. $179 is indeed a lot of money for a text editor. The thing about it is that I spend an awful lot of time editing basically raw text, and I bet most computer users spend more time doing this than they realize. It’s not unusual for me to handle raw HTML (which I want to mirror to an FTP server), a shell script, a post or two on a Web forum and some kind of tab-delimited data file all in the same day. Then there’s the occasional something weirder, like maybe a LaTeX or Python source file on a CVS or Subversion repository. Or maybe I want to crack open a raw XML file to see how it’s structured or what some of the contents are. Oh, and of course sometimes I want to compose email not in my mailer to make sure I don’t send it out without thinking about it for a day or two first. (Don’t divert me on the nonsense of styled text in email.)
So, first there’s HTML. One of the most inane criticisms I’ve ever heard is that BBEdit isn’t a WYSIWYG editor. Yes, that’s right, it isn’t. In fact, there is nothing which is really a WYSIWYG HTML editor! That’s because your precious HTML will be rendered by different browsers with different screen resolutions, window sizes, font and font size settings, and even underlying rendering engines. (Side comment: If you’re trying to micromanage all these things for the user, you’re doing him/her a huge disservice and wont’ succeed very often anyway.) So this is a stupid criticism. If you want to know what the file will look like in a particular browser, open in it that browser. I probably have five or six browsers on my machine at any given time–why do I need my editor to have an HTML rendering engine in it? Of course, one motivation for this might be workflow-related, not wanting to go out to the file system and drag the file to the Web browser. Well, BBEdit has commands for rendering the current file in a browser, or even all the browsers on your machine–and this command, like all commands in BBEdit, can be bound to whatever keystroke you want. So much for WYSIWYG workflow.
BBEdit’s ability to support HTML is truly outstanding. I learned good old HTML 1.0 in like 1994 (egad) and I still edit the tags directly. But I find that I don’t always remember the syntax for tags which weren’t around “back in the day” and I certainly never remember the hex codings for colors other than black and white. BBEdit gives me context-sensitive, single-keystroke access to dialogs which understand the tags (and do the Right Thing based on the DTD at the top of the file if it’s there) and remind me of the syntax and give me popups for things I don’t remember like color. It also has great CSS support (a real boon to those of us who get the idea, but never bothered to learn all the syntactic details). SubEthaEdit and some of the other free/cheap programs are great, but I’ve not seen anything close to this in any of them. (Disclaimer: I don’t do PHP–yet–so I can’t say how well it supports that.) Things like being able to save a copy of the current file (I like to have one local copy and one on the server) directly to an FTP server without leaving BBEdit is just icing on the cake–and I love icing.
Of course, the reason I started using BBEdit in the first place (circa version 2) was to edit C code. Well, I never program in C anymore (too low-level) but I do write occasional shell scripts and Python code and every once in a long while I need to read C or C++ code. BBEdit is a great programmer’s editor, with terrific features to support this activity. Most such features are now pretty common in alternative programs such as function popups and syntax coloring, but like the HTML tag editors, I’ve never seen a “diff” which even comes close to BBEdit’s. And if you can’t see where a really good diff would be useful, you need more hours programming. Built-in support for CVS and Subversion also greases the wheels on things like this. BBEdit also has very good integration with the underlying unix of Mac OS X and is a terrific environment for shell scripting, which is useful for me because I’m a bit rusty not having done much of this since grad school (though I’m happy to have it available again).
I also spend a fair amount of time munging data files generated in my lab. These are almost always tab-delimited text files, and are sometimes fairly large. Commands for processing duplicate lines and lines which meet a specific criterion are extremely useful in this context. This is where BBEdit’s excellent support for regex-based search-and-replace is really key. If I want to look at a specific data pattern and clip out all lines which contain that pattern across hundreds of files, it’s easy to do this in BBEdit. I have yet to see this be made easy by any other GUI-based editor. (I suspect some form of emacs can do this, but I never got too into climbing the emacs learning curve.) One of the critical pieces of this functionality is BBEdit’s terrific AppleScript support. Programming your text editor may seem like a weird thing to do, but BBEdit has a lot of the right primitives for doing a lot of the things I want. Some of those things would be done probably almost as easily with things like Perl (which I haven’t bothered to learn yet because the syntax violates my aesthetic sense so badly) or Python, but I’ve been using BBEdit to do those things for so long that they seem more natural to me in BBEdit, plus I don’t have to burn any code on things like selecting only certain kinds of files or subdirectory traversal, since all that’s built in. Cheap alternatives like TextMate have some nice features, but they lack this. (Note: TextMate’s macros are nice, but I strongly prefer my recorded actions to be handled in AppleScript so I can call them, or parts of them, from other apps.)
There are all kinds of other cool things in BBEdit that I use all the time. One of them is the “change case” command. I could not count the number of times I’ve opened BBEdit just to paste in some text and munge it with the “change case” command only to copy and paste it back somewhere else. A small thing, I know, but small things add up over the years. Another thing I bump into all the time are line endings, now that Macs are split-personality old-style machines with some files having Mac line endings and some with unix line endings. BBEdit handles this in an elegant way, and most importantly, is scriptable.
The other common complaint is that BBEdit is becoming “bloatware.” Well, yes, there are a lot of features and menus and the menubar is pretty long if everything is enabled. But unlike Micro$osft Office, which is the poster child for bloatware, I actually use a great many of the features in BBEdit. I admit I probably under-utilize some of the powerful features others rave about–I don’t make as much use of the Glossary as I probably could–but I really do find that many of the features are, in fact, things that once I get my head around what they are, I find them more useful than not. And if you don’t use CVS or Subversion or Text Factories, you can turn those menus off. OK, yes, there are 31 commands in BBEdit’s “Text” menu, but I can honestly say I’ve actually used every single one of them. I can certainly see, though, how someone just downloading the demo to check it out might find the plethora of menu options and preferences somewhat daunting. But there’s a reason for all of it, or nearly all of it, at least for me.
Have there been bumps in the road? Sure, there are occasional BBEdit versions which are a little glitchy (8.0 comes to mind, though I can’t even remember what small weird problems I had). But BareBones releases bug fixes quickly and is more responsive to customer input than any company I’ve ever seen. If I send email to the president of the company, I not only get a thoughtful answer, but he remembers who I am. Wild.
So, yes, BBEdit is expensive and has an awful lot of stuff in it. Those two things are related, but in my mind, related in a positive way. Of course, I’m academic and I’m pretty much only paying for upgrades anyway. Regardless, I’d pay full price out of my own pocket to keep this application around. It’s just about the only application which I have launch at login, because I know that if I’m going to use my machine for more than 20 minutes, I’m probably going to use BBEdit.
Now, having said all that, there are a few things I’d still like to see in BBEdit, but none of these are show-stoppers:
• Live, or as-you-type, spellchecking. The current version (8.2.1) of BBEdit has something kind of close, but it’s still not what I want because I still have to remember to invoke it.
• Specific support for editing vBB/UBB-style tags. Yes, they’re stupid, but some forums use them and won’t take HTML. Too specialized and stupid, I know.
• TextFactory menu and Subversion support. Oh, wait, those are the things I asked for in version 8.1 and now I have both. Never mind.
• Code/section folding. In my mind, lack of this is the most legit criticism on the boards. This is one place where TextMate does have a real advantage. I’ve wanted this ever since I saw the some early prototype of the Dylan IDE (don’t ask) in like 1991.
• Oh, there’s another cool feature in Smultron I’d like to see, which is .Mac syncing of preferences (and things like grep patterns and such).