Battle of heart vs mind; you win again Razor

There is nothing worse when mixing business with pleasure or in this case - commercial priorities with open-source - than a battle between the heart and the mind; certainly that's the saddening feeling I have about Spark.

In the beginning..

We started using #FubuMVC nearly six months ago and have never looked back; being somewhat senior I am fortunate to have the privilege (and confidence of my superiors) to make decisions about technical direction. I can say without hesitation that even if Razor support had existed we'd have pushed forward with Spark anyway and reviewed regularly to validate our decision.

I know this wouldn't hold true for many Software Houses but there is a significant amount of awesomeness at our company and this starts with not only a commitment to personal growth, exposure to technologies, but also a realization that we need to support the OSS community.

D-Day

Cutting a long story short the ultimate review day came for both FubuMVC and the other technologies we'd employed, sitting in the meeting room with the Technical Lead and CTO I wasn't nervous as I already knew where the problems lay and it wasn't with FubuMVC.

On the whole I'd loved every single day using Spark, it had been a breath of fresh air and a wonderful challenge to master a new engine and syntax, it even had me digging through the FubuMVC and Spark internals to understand it's behavior, it is in my humble opinion a winner in all regards but one. Intellisense.

Intellisense

I can feel the impending rants in response to this statement already (I haven't hit save yet) but staying with Spark caused us to consider two main factors, that perhaps equate to a gamble too far if Razor support for FubuMVC was to soon arrive.

  • Learning curve for the team
  • Technical debt of switching later

I'm quite use to coding without Intellisense, I really quite enjoy the challenge and the fact it makes me dig down into source and understand it's mechanics, perhaps even encourage a quick pull-request however there are times that with deadlines looming I wish my little "drop-down friend" would just appear and give me the answer.

Development Manager hat on (don't worry not for long) and considering training my team this gives me a serious headache. All teams have a varying level of skill and the simple truth is Intellisense can help move "some" along past a problem challenge and turnaround quicker. Ultimately there is a business cost if Intellisense doesn't exist.

When considering OSS software usage in a commercial context you must consider longevity and support. Although we are now generally more accustomed to using OSS and accepting it's risks businesses is understandably keen to avoid them if possible. I don't know if Spark will survive, or Razor will for that matter, but I do know which is most likely and if in 2 years we have to convert 1000%2B views to Razor that's a hefty business cost to absorb.

Razor is coming

Thanks to some awesome efforts by Corey Kaylor support for Razor is readying for release and frankly it's a relief as it secures the future of FubuMVC for me and my team, in effect it removes a significant element of the gamble in pursuing something that thankfully is absent of a Microsoft prefix.

Spark will almost certainly remain my number one choice for personal projects using FubuMVC, OpenRasta, NancyFX, or even MS MVC (should I for some reason venture there again), but when it comes to long-term enterprise developments Razor is unfortunately the correct choice.

But what if?

So I know what your thinking, what if Spark had a release-pending version of IntelliSense for Visual Studio, would you have stayed with Spark? Absolutely 100% unequivically **YES! .. **but I fear it's now too late.

Finally

So very much like Betamax vs VHS of the 80's it's not always the better format that wins out (although some argue VHS was indeed better anyway), and even given the fantastic level of awesomeness at our company the mind wins out and on this occasion so does Microsoft again :'(

Edit

It's been mentioned to me on Twitter that a version of IntelliSense for Spark does exist; I only know of an alpha version which is quite unstable and not ready for use-in-anger. Happy to hear to the contrary if misinformed :-)