logo
Published on developer.* Blogs (http://www.developerdotstar.com/community)

In Defense of Joel's Wasabi Indirection Layer

By Daniel Read
Created 2006-09-04 16:49

I can't resist contributing my own modest viewpoint to the debate that has been sparked by a recent pair of posts ("Language Wars [1]" and "Wasabi [2]") by Joel Spolsky regarding his company's use of a proprietary, home-grown language called Wasabi to produce the company's FogBugz product. Joel describes Wasabi as a...

...very advanced, functional-programming dialect of Basic with closures and lambdas and Rails-like active records that can be compiled down to VBScript, JavaScript, PHP4 or PHP5.

One unfortunate part of the debate is that Joel in the same posts shared his view that Ruby is not up to full enterprise production snuff (my paraphrasing), which triggered defensive responses by Ruby on Rails founder David Hansson, "Fear, Uncertain, and Doubt by Joel Spolsky [3]" (sic) and "Was Joel's Wasabi a joke? [4]".

Another unfortunate part of the debate is that Wasabi's basis in VBScript, which is not a language that gets a lot of respect. When Joel links criticisms of Ruby with a proud declaration of a home-grown language based in VBScript, sparks and snickers fly. Larry O'Brien put it well in his response [5]:

"So Joel set himself up for a comparison of the risk exposure of Ruby versus that of a proprietary functional derivative of Basic with embedded SQL. No matter how good a debater Joel is, he's gonna' lose that fight."

(I don't recall Joel at any point saying that Wasabi included embedded SQL, but maybe I missed that...speculatively, I'd like to give them more credit than that.)

I label these sub-debates as "unfortunate" not because they are unimportant. Rather, what I see as unfortunate is that debates about the enterprise readiness of Ruby and the suitability of VBScript as the basis for a new language drown out what I find the more interesting part of the discussion: whether Fog Creek's strategy relative to Fog Bugz and Wasabi was a sound one (a question I'll tackle momentarily).

From where I sit (Larry O'Brien hints at this also) the waters got muddy because Joel mixed his messages. He offers technical criticisms of Ruby on Rails while at the same time introducing the idea that in a particular business situation his company struggled with the platform adoption question and decided on a different path. Wrap that up in a post called "Language Wars," throw in some other opinions on Lisp, Perl, Python, and Java/J2EE and its easy to see why there's some controversy. David Hansson and other Ruby users have every right to defend Ruby on Rails from Joel's criticisms, and I myself don't really have an informed opinion on that question. David Hansson writes [6]:

But it gets better. Joel finishes off with a prize so good you can't help but wonder if he's pulling your leg or not. So in summary, Ruby and Rails are both immature, right? A decade for the language, two-something years for the framework. Tens, if not hundreds, of thousands of programmers exposed between the two. Okay, I buy that this could be seen as "immature" if you're into comparing quantity of programmers or deployed applications against, say, Java or PHP. ... So Joel and friends invented their own language, which has to reasonably compile to three and a half different ones. Yes, they're building their Serious Business Stuff application on a 1-off, closed language. So please do as I say, not as I do, dammit. And pick something mainstream and "safe".

Is Joel's point really that Wasabi is "better" than Ruby on Rails, or that the relative maturity of the two platforms is a useful question? I didn't take it that way, but David has, it appears to me. By mixing messages, I think Joel lost an opportunity to introduce an interesting idea and have a discussion about it. Perhaps David's mocking derision of Joel, the very idea of Wasabi, and its decidedly uncool roots in VBScript would have been central to his response regardless of whether the suitability of RoR had been brought into it--I don't know him well enough to say--but at least we'd be having a debate on the merits of those questions.

OK, so I'm not going to be able to avoid brushing up against the Ruby debate: the part of this debate that I find in Joel's favor is his measurement of the relative business risk of adopting an external framework vs. developing a proprietary framework in house. What I hear Joel saying is that developing an in-house language as was less risky for his company given the two major factors of A) a flagship project with an extended lifetime straddles multiple technological generations and B) multiple target installation/runtime platforms (ASP and PHP).

Faced with a choice of picking a single platform and writing off half of the potential customers, or maintaining multiple versions of the product for multiple platforms, he went with the classic escape hatch, the indirection layer. Apart from the questions of whether VBScript was the optimal choice for syntactical ancestry or whether Ruby is "enterprise ready," I think it was a great move. (And incidentally, one of the first good examples I've seen of the kind of longevity technique I pondered in an old post called Designing for Decades [7].")

With Wasabi as an indirection layer, the benefits are huge. Fog Creek has total control over not only the source code of his product, but also the compiler; no worries about Microsoft pulling support for the language or the development environment; no worries about open source communities forking or drying up or going in a radical new direction. As new platforms like PHP6 and Windows Vista and whatever-is-next come along, if Wasabi is as advanced and well architected as Joel claims, they can write a new compiler to target the new platform rather than having to port their entire application to the new platform. Customers who straggle along on old platforms won't be left out in the cold.

I also think it is notable that Fog Creek did *not* choose to use Wasabi for its latest product, Copilot. The dynamics were different in that Copilot is a hosted product, not an installed one. The risk calculations from a business standpoint are different. Since they only have to worry about browser-level compatibility and not server-level compatibility, the indirection layer would not have made any sense.

At this point, the debate could return to whether Fog Creek could have or should have chosen Ruby on Rails for Copilot instead of ASP.NET and C#. What I see is that, despite David Hansson's criticism to the contrary, here Joel is consistent with his own advice: for an in-house hosted application, he chose the platform they viewed as most "safe". Is Joel right that ASP.NET and C# are better and more safe than Ruby on Rails? Even if I had an informed opinion (I'm not intimate enough with Rails), I wouldn't touch that one. :-) But I do think it's unfortunate that this question has obscured the larger question of whether the Wasabi strategy was a sound one.

Thanks for reading,
Dan

P.S.
As for the VBScript debate, I consider VBScript a decent hybrid procedural-OO language that integrates well into a COM-based Windows environment--but it has a near-fatal flaw in its laughable exception handling mechanisms...I can only imagine that they improved on this in Wasabi. I suspect in a perfect world Joel and Fog Creek would not have chosen VBScript as a basis, but they were influenced by the yoke of an existing code-base:

...since FogBugz goes back many years and was originally written in VBScript, Wasabi is 100% backwards-compatible with VBScript...


Source URL:
http://www.developerdotstar.com/community/community/node/571