It is a truth universally acknowledged that for Microsoft's upcoming tablet strategy to be a success, there's going to need to be a ton of apps available. It's part of what's known as the "ecosystem", the amorphous mass of software, content, support, and mindshare that turns a platform into a bestseller (iOS) as opposed to a messed-seller (RIM).

But each platform also has a second ecosystem which acts as a catalyst to the first. Developers have their own ecosystem of information, community, components, and support in order to build the apps that make up the first ecosystem.

Problem is, one essential part of this second ecosystem that developers use to build their apps is moving far too slowly to be useful to Windows 8.

In fact, if it doesn't get its groove on and really start moving, you can kiss the chance of having a decent set of apps at the launch later this year goodbye.

Polyglot

Over the past few years, the Microsoft developer community has been maturing and changing so that it looks much more like the world of non-Microsoft development. The hallmark over in the non-Microsoft world is one of a collegiate, almost academic atmosphere with lots of great sharing and ideas. This new style of working is coming over to the Microsoft world and I love it, and I think most Microsoft developers love it too. It's got the potential to turn us all into proper hackers again.

Microsoft developers now understand that today they have to be polyglot developers – able to work with .NET, but also with JavaScript, jQuery and functional languages, and to know their way about *nix boxes, and so on. The knock-on effect is that most developers have managed to shed their "not invented here" (NIH) syndrome and have really gone full pelt after aggregating open source projects into their software. It's no longer about vast, proprietary enterprise frameworks. It's relatively normal to find much more straightforwardly constructed line-of-business (LOB) and retail software made up of bundles of open source software projects.

And it's that part that's really screwing up the process of developing for Windows 8 tablets. Almost none of those open source projects that people want to use are available on WinRT yet, despite developers having had access to the toolset for nine months already.

It's not really .NET

The problem is that WinRT isn't really .NET. Ignoring the fact that you can actually build Metro-style apps without going anywhere near .NET, even the bits that look like .NET aren't. (You've never lived until you've seen .NET exceptions containing COM HRESULTs.) Projects that work fine on .NET have to be ported over to WinRT. (This is similar to the way a lot of open source components got ported to Silverlight, but Silverlight is still just .NET and doesn't have the slightly barking WinRT stuff mixed in.)

At this point in the game, you're going to get two sorts of developers building apps for Windows 8. A tiny minority will be proper developer shops with real money and real expectations of realising a return on their investment. The remaining 99% will be jobbing software hackers working in "cottage industry" mode at the evenings and weekends.

This is already happening with Windows Phone. Yes, apps are going up to the Windows Phone Marketplace but it's slow and steady because of this "cottage industry" approach.

But let's say you want to build an app for Windows 8. Likelihood is you'll want to use some open source projects that you're already familiar with.

We'll make this specific – don't worry if these projects or concepts aren't familiar to you; what these things actually do isn't important in this discussion. You want an inversion of control container. More specifically, you want to use the popular open source project TinyIoC. TinyIoC is owned by Steve Robbins, and it's a fairly typical .NET open source component. Steve has a day job, and TinyIoC is popular because it's good, usable, and because Steve offers good support.

Problem is, TinyIoC doesn't yet run in WinRT. (It will do, by the way.) So you now have two options – you can port it over and contribute to the project, or you can use something else. Either option is unattractive to developers operating in "cottage industry" mode as it's not like you've got someone paying you to do this. You're sponsoring yourself. The opportunity cost (ie, what you lose out on doing by making the choice) of faffing about is high.

Let's say you port it yourself. The issue now is that because the ecosystem is so ropey, it turns out that TinyIoC has some unit tests that use Moq. OK, but Moq doesn't run on WinRT either.

Whereas TinyIoC is – well – tiny, Moq isn't. Moq is huge, and complicated, and outstandingly popular. And it's also full of crazy IL emitting magic that makes it very, very hard to port.

(Incidentally I have been trying to port Moq to WinRT. You can find my efforts over on GitHub. I could really do with getting in touch with people who use Moq to make sure it works well in Metro-style development. Please do give me a ping on Twitter if you can help.)

Not having Moq in the WinRT developer ecosystem is far more serious than not having TinyIoC, because Moq is a much bigger and more popular project, so the chances of any given developer wanting to use it are that much greater. And the problem gets harder because Moq depends on something called Castle, which is absolutely gigantic and also not supported on WinRT. Not having Castle starts knocking all sorts of projects offline. Incidentally, Castle is also outrageously hard to port.

This happens everywhere you look. WinRT was announced nine months ago, but it's only in the past two weeks that SQLite.org has come out and said it will support SQLite in WinRT. NHibernate? No. RavenDB? Yes, for a client, no for embedded. I looked at porting RavenDB's embedded mode, and that's got a slew of components that aren't supported on WinRT yet.

On Nuget (the Windows packaging framework for open source projects), of 6103 packages, only 23 are tagged as WinRT.

There are some bright spots: Json.NET 4.5 (a very popular JSON handling framework) does support WinRT as does MVVM Light.

Incidental dig at RIM

Incidentally, look at RIM's developer ecosystem. No content, no tools, no open source support, nothing to speak of. Now look at any other developer ecosystem. Now back to RIM. See the problem? (There are no examples of a platform succeeding without a vibrant developer ecosystem, by the way.)

Stop/start

Those of us who are keenly watching Microsoft's transition into a post-PC world with Windows 8 know that to get any traction in retail against the iPad it needs an ecosystem. And for an ecosystem, it needs apps.

So at this point I'm really wondering where all these apps are going to come from, at least in the short term.

Microsoft knows how to build and support grassroots communities. (In particular Microsoft UK is doing a great job of this with various Windows 8 hacking sessions around the country. Take a look Mike Taulty's blog, and the MSDN UK blog.) Community content is building up, and there is more discussion on Twitter.

But what's missing from the ecosystem is the open source project support, and that's chicken and egg. That side seems to be barely moving. And, interestingly, I'm not sure what Microsoft can directly do to jolly that side along in the immediate term short of targeted, specific support.

Most of these projects, like Steve's TinyIoC, are just as "cottage industry" as the apps that they're looking to support. If the project owners don't see the demand for their tools in WinRT, the ports will be slow to come. And if the ports are slow to come, developers will get frustrated and stop trying to build apps for retail sale. If they stop trying, the Microsoft Store will have no apps and the iPad will win.

What we need is those who run open source projects can either take the initiative port their stuff to WinRT, or find people – like me – who are happy to help them in their efforts. Surely with the Olympics and a jubilee, this is a good time for us all to pull together as a team?

There are still tickets available to see Matthew talk at the Programming Metro-style Apps Workshop in London on 13 June