Missed me? Over the summer, I haven't been writing as much as I used to.
Here's why: I've been working on a new startup technology business. As fashion dictates, it's a cloud business. And as fashion also dictates — with my CTO hat on — I've been trying work out whether to build the thing on Microsoft technologies or not.
After all, none of the cool startup kids would touch Microsoft stuff with a ten-foot pole, so why should I?
This year marks the start of my twenty-second year as a software development professional. I started that career in Visual Studio (well, Visual C++), and I still do development on the Microsoft platform today, although my work for clients means that I touch every mobile platform of note, and a whole bunch of open source stuff.
So now I have to design a new system with a blank sheet of paper. It's a data science/big data beast: It has to ingest a whole load of information; run a whole load of machine learning magic on the data; and spit out an elegant set of results.
Let's ignore the "data science" bit. Let's just assume we're building a cloud system that needs a database; a bunch of web services; a web frontend; and iOS, Android, and (maybe) Windows Phone native clients. That way, it's like every other common-or-garden internet startup.
My first instinct is to base it all on Microsoft. After all, that's the stuff that I know best. So naturally I'd reach for SQL Server, ASP.NET, and run it on Azure.
But there's a problem. SQL Server is an expensive beast. Although really, the problem is more that I don't know how expensive SQL Server will be for this project, because Microsoft's licensing is — to quote Mr. Kingsley-Hughes —of the first order.
By the time the business is really flying, I'll need 300 servers for production. And some of those servers will be given over to the task of holding all that data.
If I base my business on Microsoft, I've instantly put myself in hock to Microsoft for 300 Windows Server licenses. I've also got to pay for — what's likely to be — an enormous SQL Server installation. And even if I could size the database installation itself, I can't work out how much it would cost without hiring a consultant to do it for me, and I'd experience the "joy" of having the licensing rules change on me every couple of years.
So I'm shopping around. In fact, I'm thinking that I could do all this on Linux, an open source database (MariaDB or PostgreSQL), and Mono running on Apache or Nginx.
I'd still get to use C#, and .NET, which I love, but I'd have a smorgasbord of other options available to me, and I wouldn't be chucking money at Redmond every time I made a sale.
I'm not naive enough to suggest that moving over from Microsoft means I'll go from spending "many dollars" to zero dollars. I understand that although the software is free, I'll need various support bits and pieces — which will cost me real money.
The question is: Should a new technology startup be tied to Microsoft's ongoing licensing? Is it worth it or not?
Back in the day, one of the best jobs I ever worked on was for a company that had been selling a piece of software written in a 4GL. Every time the company sold a license for their software, they had to kick back a fee to the 4GL vendor. My client hated this. They hated it so much they wanted to rebuild everything in .NET where there were no runtime royalties.
Today, that's exactly what any developer targeting Windows for cloud-services business is doing. It's just that we don't think of Microsoft as being a third-party in the same way that an old 4GL vendor is. But, every time I sell a license to my software, I have to spin up a new Windows machine to run the ASP.NET web services, and kick back the cost of a license to Microsoft for doing so.
Effectively, Microsoft's developer tooling does have runtime royalties. We've just not noticed that it does.
The question for me now is "where is the draw over to Microsoft?"
I love C#, .NET, Visual Studio, and SQL Server, but — today — there's no leadership in software engineering coming from Redmond.
Back in the late 1990s/early-2000s, the Redmondians were doing some amazing things with software development. The .NET Framework was a total revelation and ASP.NET was wonderful to use; but today, the leadership is all over in the open source camp.
What you see is Microsoft following the open source people. From a software development perspective, I love that they're doing that. But it ruins the rationale of how they can charge for licenses.
When Microsoft first wanted to get people to adopt Windows, they took a "developer first" approach. Get the developers over there, and the customers will follow. (This is why the Apple Watch has been announced so early — get the developers onboard, customers will follow.)
But that presupposes a leadership position. It says "We are Microsoft — if you want to board our gravy train, you have to buy a ticket."
Nowadays, because there is no leadership, it's not their train. As a member of the software development community, it's your train, and they're on the platform wanting to get on to wherever you're going.
(And before you say "BizSpark" — that's just a way of deferring your purchase of a ticket.)
Why should you pay for that?