Note: I’m going to pick the way I discuss this carefully, since I have a good friend on the LINQ to SQL team (yes, we Guernseymen do get around) and I feel bad to criticise too much in this area; nevertheless I think there are lessons to be learned and I have a definite angle on this, being an ex-business coder and open source enthusiast. My thoughts here reflect pretty much what I’ve already suggested on his blog, but in more detail, so hopefully this won’t offend him!
LINQ was a new feature introduced with Visual Studio 2008, and LINQ to SQL is the lightweight SQL Server implementation. News broke recently that Microsoft have decided to concentrate on the larger and more ‘complete’ Entity Framework instead, and encourage people to move to that for their more advanced needs rather than continuing to expand L2S. They’re not dropping L2S, it’s essentially being ring-fenced on a feature basis and will continue to be supported by the team. However, many people are reading between the lines and assuming that, in practice, LINQ to SQL is now a dead-end, and many of them are very upset about that, having invested development time in adopting it, and who were expecting it to continue evolving.
I can see both sides of this – MS need to have a strategy, they have finite resources, and they feel focussing on EF is the best way forward. However if you’ve adopted technology, and invested your own time in it, you want that investment to be strategically valid. While L2S isn’t being dropped, it is unlikely to escape the perception of being ‘on the bone pile’ if the strategy is to expand & promote EF as the preferred solution in future. When updates to a technology you’ve invested in are wholely controlled by one company, and that company decides it no longer wants to make it the core of their strategy, you basically have to suck it up and accept that. The problem here is that producers and consumers of the technology don’t necessarily agree on the best way forward, so bad feeling is the result.
It really doesn’t have to be this way though. What if Microsoft, on deciding that they wanted to focus on EF, released L2SQL as open source instead? Maybe it isn’t strategically core for them anymore, but those who have invested heavily in it already are bound to feel differently. Popular technologies (and I would venture that L2SQL is probably very popular due to its power & simplicity) tend to foster their own communities, and even if only 1% of the developers using it would actually become contributors to it, that’s still probably more people that Microsoft would want to dedicate to the effort from an internal team over the long term.
I’m not even sure what MS would lose from doing that – the technology is free already, so it’s not a revenue generator for them, and it would do wonders for community relations. What they would lose is control, which is perhaps what they’re afraid of – maybe that they’d have to compete with an open source L2SQL – but competition is good for customers. I get the impression from my MS contacts that they feel it’s not viable, that people wouldn’t want it to be open source, that they like the simple, spoon-fed, ‘MS knows best’ approach – but personally I’d say the existence of the Mono project is an indication that this isn’t doing the community justice. I think this poor view of the community model is formed because the open source communities around extending MS products tend to be much, much smaller than those elsewhere (like Java, Linux, Apache etc), but I’d counter that that’s precisely because of the tone that MS sets; ie that you dance to their tune. Environments that are open to more extensive external involvement tend to attract more active contributors, so saying there wouldn’t be enough people when you’re operating in a closed way is actually a self-fulfilling argument.
In the days of the ‘new open Microsoft’, I can’t see a downside to them open sourcing key parts of their framework in practice. Developers these days are a lot more savvy than 5-10 years ago about how they spend their time, and open source is winning a lot of favour not because it’s free, and not always because it’s cross-platform, but because it’s open, and cannot be taken away from them. A number of my customers use Ogre specifically because they’ve been with proprietary systems in the past, which have fallen victim to the companies controlling them deciding they didn’t want to support them anymore, or didn’t want to take them in the direction the customer wanted, or wanted to force them to move to something else when they didn’t want to – and they found themselves restricted / railroaded by a system they’d invested a lot of their own development money in.
Open source for these people means ‘taking the chains off’ – they know that no matter what, there’s no one company that can tell them what to do with their own investment. They’ll stay on the main track while it’s beneficial to them, they can benefit from the core development just like proprietary software customers can, but if at any point they disagree with the ‘central’ decisions, they can do what the like. That’s a very powerful insurance policy in development circles, something I hear time and again from customers as a major positive, and personally I think Microsoft needs to think about that more. They are very much still in the ‘producer/consumer’ mindset (or ‘cathedral’ if you will), but the world around them is rapidly changing to a model of iteration, collaboration, and distributed control. Fewer and fewer customers like to be dictated to by a central oligarchy anymore, and many are going to places they feel more empowered – which is usually the open source camp. Microsoft simply cannot afford to ignore this for much longer.