Hacker News new | ask | show | jobs
by rwmj 4007 days ago
It's not necessarily true that it was an error. Their customers wanted Linux support, and they avoided the greater evil of having to rewrite their code or maintain two codebases (remember - this is ~2000 and there's no .Net or Mono, and all their code is written in old [edit:] VBScript).

It's a great example of path dependency however.

BTW: Red Hat has been here too. We converted a huge app from .Net to Java by using some translation software: http://lpeer.blogspot.co.uk/2010/04/switching-from-c-to-java...

3 comments

This was started 2005, not 2000, it says in the post. .Net had been out for years. They're bleeding edge guys, they would have been looking at .net 2. They used C# as the compiler, with Joel's defence being in 2006:

http://www.joelonsoftware.com/items/2006/09/01b.html

The greater evil was between rewriting their code in PHP, Java, dealing with Mono or sticking with ASP (which was already old fashioned). Or writing your own language.

From Joel's defence post:

We could use .NET, but then I'd have to pay engineers to install Mono for all our Unix customers, and the .NET runtime isn't quite ubiquitous on Windows servers.

The greater evil was definitely writing their own language.

Obviously, hindsight is wonderful, but they had a lot of people immediately point out it was a bad decision and as they say in their blog post, they ended up having to employ a full time language developer. Installing mono doesn't look so expensive now!

I was running FogBugz on Linux at a particular start-up in either 2001 or 2002, so what you say isn't true. The original project must have been started much earlier than 2005. Edit: See reply below, must be getting old :-(
You're mis-remembering, from the horse's mouth:

http://www.joelonsoftware.com/articles/FogBugzIII.html

So Thistle, the transpiler, was written either summer 2003 or summer 2004 (it's not entirely clear if he employed the intern that summer or the next) and Wasabi came later (so 2005 is probably correct).

From http://www.tedunangst.com/flak/post/technical-debt-and-tacki...:

> I fixed a crazy number of silly bugs in mono’s class libraries. To be fair, implementing all of .NET is a herculean task, and most of the fixes were easy enough to make. The result of these fixes meant that we had to ship a patched, custom version of mono

This was 2007. Using Mono in 2005 does not sound like it would have gone particularly well.

So in a way, the original mistake was made even before FogBasic/Wasabi entered the picture: by buying into the wonderful MS ecosystem, FogCreek condemned themselves to 10 years of hacks for cross-platform support. And they've learnt their lesson so well that they're now consolidating on C#, another de-facto MS-only technology which only benefits from the fact that someone else (Mono) is doing cross-platform hacks for everyone.

Joel is great, but this choice baffled me in the past and baffles me today. For the sort of software FogBugz is, they would have had a much simpler life with Java, Python, Ruby, even Perl. Despite all of Joel's insight into "making html sing", he behaved like an accountant building humongous Excel macros "because that's what we know".

>> : by buying into the wonderful MS ecosystem

Remember the age of Fogbugz. It was initially released in 2000.

MS Windows was by far the dominant operating system. Virtualization was still in its early stages, and mostly at the desktop level. Linux was still growing in the server market but not dominant as it is today.

And what is exactly is wrong with the MS ecosystem if you're targeting enterprise? There are still a lot of businesses that work exclusively with Windows servers with IT managers that don't want the headache of having Linux servers.

Enterprise software tends to be a notch or two below consumer software in the "it just works department", and my experience with deploying Java based enterprise software was pretty negative. In 2000, not a lot of people were using Ruby, Python or Perl for enterprise web apps. It was mostly ASP and JSP back then.

> Remember the age of Fogbugz. It was initially released in 2000.

God, don't I half remember it. I was a junior ASP dev at the time, for my sins. Java was hot like the sun and PHP was the default choice for the young and penniless. Perl was mainstream. Python and Ruby were new and rough (they were crap for webdev on shared hosts, with zero support by ISPs, but alpha geeks were already flocking to their ecosystems, Python in particular).

I'm sure part of the reasoning was that FogBugz did not start as a product -- the product back then was CityDesk, which was even more tied in the MS world -- but still, the "server scene" back then was already unix-y, which is why they were pretty soon forced to consider Linux support. I still think it was a shortsighted approach but hey, FogCreek is still alive 15 years later, so I guess it wasn't all that bad.

One of my first jobs ages ago was to convert a large Perl codebase to ASP 2.0 because my new boss, a 22 year old CTO, was replacing a guy more than twice his age and Perl was "for old folks" as he put it. This one person turned the whole company into a Microsoft dev shop with one decision simply because he didn't feel comfortable around Perl code.
COO at a previous company did this, went from Java to .Net shop. This was two years ago. Laid off most of the Java developers, brought in consultants. I had left, but there were some really intricate business processes in that code base, running on a 40 node jboss cluster. They embarked on a rewrite, which of course is taking longer than promised. All the Java developers who could, got jobs and left, now there are only two guys left who know how to deploy to the the cluster. And they use scripts, they don't understand anything they're doing. The competent people left long ago.
Java doesn't only work on Linux, it works on windows too. That's the great thing about it.
Here is Spolsky on Java:

"In particular, we didn't want to have to tell them to get a Java Virtual Machine up and running, because that's not easy, and they're not really a hundred percent compatible."

https://stackoverflow.fogbugz.com/default.asp?W56

He seems like an OK guy, but comments like that make me think he made a decision first and then made up reasons later. How hard can it be to make a simple installer that checks and installs Java, many applications do that.
It is more difficult than it looks, but then again support multiple Linux distributions with a simple Apache installer is more difficult than it looks as well.

I suspect that this is a function of overestimating the effort on the Java side and underestimating both the demand and the work on the non-Windows side.

They used to be an extremely Windows-centric company.

>> How hard can it be to make a simple installer that checks and installs Java, many applications do that.

You'd be surprised how many applications don't do that too. There's a reason why a lot of people say "enterprise software sucks" -- it's usually because the software makers value new features over improving how things work.

To a point. Headless stuff tends to work way better than the GUI stuff.

It's kind of the same tune with mobile software -- "Native feels and runs better than everything else". In the case of enterprise software GUIs, it's particularly true.

Of course, but we are talking about server side software here.
A lot of server side enterprise software have GUI admins and management tools.
The difference this time is that C# is now open source. Sure, C# is still essentially Microsoft-only, but there are enough users that if Microsoft abandoned it, it's fairly certain that others would be there to pick up the pieces.
IIRC, Joel once wrote that he started coding FogBugz to learn some VBScript. Once you start a project in a language, there is a mighty amount of inertia to overcome to move to a different language...
I am sure the fact that Joel was a product manager at MS influences their choice to stay in the MS ecosystem
Indeed, this post reads like a grand tour of languages and runtimes people don't use unless they're forced to. It's perplexing.
They did rewrite their code base. That's the point.

The went from writing VBScript to writing Wasabi.

I don't think they did. Wasabi was originally the subset of VBScript that they were already using.

Also, there's a big difference between a rewrite and rewriting but maintaining both versions.