Hacker News new | past | comments | ask | show | jobs | submit login

You could have chosen any of the cross platform frameworks of the day? PHP or Python would have been an easy choice at the time.



In 2006, the app was already seven years old. We couldn’t go back in time and decide to write it in a different language.


Could have just shipped the customer a server, especially as Joel's article suggests that most of your on-prem customers went with dedicated servers for the software anyway.

Find it hard to imagine that a significant percentage of your customers were 100% linux/mac to the extent that they'd refuse any win boxes in their shop.

I was in IT at the time and catered to a number of 100% mac shops (mostly ad agencies/gfx design studios) and there were always one or two win boxes around, usually a couple for fileserver/backup and one for the sysadmin to do sysadmin things with.

>We couldn’t go back in time and decide to write it in a different language.

You had an intern write a program that rewrote it in a different language for you, time after time after time.

You could have just rewritten it once :)


We didn’t have the margins to ship physical servers to customers. User seat licenses were $100 or so, and most customers were SMBs - 5-15 users, so we would have lost money on shipping any customer a Dell with Windows Server on it. We didn’t have a sales channel for real enterprise customers until quite late in the lifecycle of the product, so even our biggest customers weren’t that big.

Joel said PHP and Python were non-starters on Windows. We could have used the compiler to do a one-time cutover to C# in 2008, but the CodeDom generated code was fairly icky, so we decided to keep the Wasabi code and just ship the machine-generated DLLs with friendly Wasabi debugging symbols. We were only able to cut over once I rewrote the generator (I think that was the fifth generator, and there was also a Wasabi interpreter for compile-time evaluation… PHP, JS, ASP, .NET DLL via CodeDom, plain C#) using Roslyn. That took me just over a month, in two phases: first, use Roslyn to generate duplicate code to the CodeDom backend (2-3 weeks). Then, I deleted the CodeDom backend and started making syntactic improvements (and generate comments and white space!) until I hit the point of diminishing returns (1-2 weeks). Finally we checked in the C# source code, removed the Wasabi build step, and let ReSharper go to town. (2 days)

Each step we took was low-risk, because it didn’t create any new technical debt or accumulate as inventory. Each step was small and low-cost. None of them were the optimal step, but they also didn’t risk the entire business on stopping-the-world.

There were plenty of other disasters in that codebase. For me, the FogBugz Plug-in Architecture was the worst of all of them. Adding all those layers of indirection, plugin hooks was a huge performance cost, and maintenance burden because we couldn’t ever change function signatures once they were shipped. I wish we had just added web hooks. That would have gotten us 95% of the extensibility with 10% of the performance cost, and 0% hosting other peoples’ code in our FogBugz On Demand web server processes. I think I once murdered a fledgling startup by mentioning we were thinking of removing it.


Thanks for the context, I appreciate it. At the time I remember the concept of running PHP on Windows/IIS did have this air of 'hmmmmmmmmmmmno' associated with it.

In my experience it ran fine, but for obvious reasons when shipping software that might make or break their company I can understand Joel preferring the familiar territories of ASP/IIS/Win or LAMP.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: