Thoughts on Codeplex Foundation
I’m quite surprised, in a nice way, by the announcement of Codeplex Foundation as for the last few months I’ve been shaping some thoughts on the same topic of how Open Source products can be utilised by real companies, to deliver more cost effective projects on the Microsoft stack. This topic has been at the forefront of my thoughts as over the last 20 weeks my team have been focused on building a Greenfield best of breed eRetail platform which is composed mainly of Open Source tools, frameworks and products on the Microsoft stack – as the aim is to deliver the most “bang for buck” feature-wise, while keeping the TCO to a minimum.
My conclusion was that the Open Source Community within the Microsoft space is fragmented, not only from a communication perspective, but also from a perception perspective – what are the guidelines for real companies that want to build system based on Open Source components, does the use of Open Source Software mean that all software projects have to sit in the Java / PHP / *NIX space?
A few months ago I stumbled across the wonderful http://www.designintheopen.org/ - A community of practice for design & user experience people in Open Source. I was quite inspired by the notion and realised this is exactly what the .NET eco-system is missing – a central hub where the myriad of different Open Source Projects can and the people who contribute to them, can communicate and collaborate – and so I registered http://www.developintheopen.org and as a side project was going to try and create a similar community – but it seems with Codeplex Foundation – Microsoft have beaten me to it (and created a bigger, better solution) – and that’s a really good thing. Below are the thoughts I’ve been shaping.
Other ways Microsoft could support Open Source
Microsoft is making some great steps in the direction of embracing how Professional Developers within the Microsoft ecosystem want to design, build, test and deploy modern web applications. Even better Microsoft is finally starting to understand that Developers alone do not deliver web applications; multi-skilled teams of Developers, Testers, Graphic and Interactive Designers do.
Much of this step in the right direction can be directly attributed to the change of mindset and tone of voice encouraged by Scott Guthrie - Corporate Vice President in the Microsoft Developer Division. Under his helmsmanship there has been a significant sea change of mentality. In his team “Open Source” does not seem to be a dirty word, it’s not treated as Microsoft’s death knell, but is viewed in the same way as it is by the external development community – it’s a wonderful thing; Open Source can add huge amounts of value to a platform (as long as it’s released under a suitable license) and allows anyone in the community to actively contribute rather that just be a passive consumer.
Microsoft has a real opportunity to change the way it interacts with the Microsoft Open Source community, to actively support it, which in turn will add large amounts of commercial value to the Microsoft Platform. Most Open Source Projects are severely lacking is the productionising skills that Microsoft has in abundance and could easily contribute resources to the projects to help pull them up to the quality level of a full blown supported Microsoft Product. A primary example of this would be to donate Technical Writers to help create documentation to the standard on MSDN. Documentation is one of the greatest barriers to entry on most Microsoft based Open Source Projects. There are other key resources such as Performance and Security Specialists who could help identify and remove security issues and performance bottlenecks from these Open Source Projects which would help them become more “enterprise ready” and much more likely to make it onto companies “White List” of approved tools and frameworks.
Another possibility would be for Microsoft to contribute either financially or via dedicated resources to help drive the core efforts of the more popular Open Source Projects that help make web development leaner, more efficient, to a higher quality.
If I were to be given $1000 to donate to the most important Open Source projects that directly affect Microsoft Web Development, this is how I’d spend it:
- N2CMS (Content Management Framework)- $200
- Sharp Architecture (Best Practice Web Architecture – incorporates many of the above) - $150
- NHibernate (+ NHibernate.Search + Fluent NHibernate) (data access technology) - $150
- Castle Windsor (Dependency Injection Framework – makes code leaner, cleaner & more testable) - $100
- xVal Framework (Validation Framework) - $50
- Spark View Engine (View Engine for rendering HTML) - $150
- AutoMapper (used for converting objects) - $50
- PostSharp (inject commodity code rather that writing it by hand) - $50
- Gallio / MBUnit (Testing Platform / Unit Testing Framework) - $50
- Horn (Package Build Framework) - $50
Of course, what I’d actually ask Microsoft to do is finance the above projects in terms of full time development effort – i.e. 1x key developer for 12 months, 1 x key developer for 6 months in addition to the Microsoft Resources (i.e. technical writers / performance / security). If there is too much red tape involved in letting MS Resources do this work (contracts, IP issues etc), then Microsoft could fund this via its Partner network. This could be done via a series of “Grants” and the creation of a program / awards much akin to MVP but with a specific focus on people who run, contribute and support Open Source Projects – something like a “Microsoft Community Contributor”.
Another way in which Microsoft could help is by acting as a mediator between the various Open Source Projects, for example replicating the work done with the Common Service Locator – to act as a unifying force for the myriad of Open Source Projects that tackle the same problem domain.
The reason that there is so much take up of LAMP (Linux, Apache, MySQL, PHP) over WISA (Windows, SQL Server, Internet Information Services, ASP.NET) has very little to do with the costs of the core components that make up either acronym, but rather the availability of applications that sit on them. Take the business problem of creating an ecommerce application for your enterprise. If you look toward the LAMP ecosystem – there are *many* mature, free ecommerce systems (i.e. Magento eCommerce), there are *many* mature free Content Management System (Joomla, Drupal etc) that you can tie together to create an solution that fits your needs. If you look at the WISA ecosystem – there is nothing comparable. Because the eco-system is so spartan and immature: there are no mature, free ecommerce systems and there are no mature free Content Management Systems (Microsoft essentially left the CMS market, by retiring it’s CMS Server in favour of MOSS – not exactly a like for like alternative). It is very difficult to compete with the “freeconomics” of the LAMP ecosystem.
If you re-examine the same problem from a business / consultancy perspective, delivering the solution has following cost facets:
As a client you can’t remove the ongoing costs of Operational Support, Hosting or Consultancy, the only place you can reduce the cost of a solution is via Development & Product Licensing costs. Thus whether you a save a few thousands for your core OS / Web Server is far outbalanced by say the tens (or hundreds) of thousands of pounds of cost for your CMS and Search solutions. In the future cloud platforms, such as Azure or EC2, may in fact reduce the Hosting and Operational Support costs, as platforms will be able to scale and shrink on demand, thus reducing upfront costs and if cloud based database offerings such as SimpleDB, SQL Azure or Azure Table Storage are utilised, this will further minimise, back-up, replication & disaster recovery costs.
In addition to the idea of funding key Open Source projects mentioned above, I would go one step further and actively fund .NET Ports of some of the more successful LAMP / Java Products. Microsoft bought the search technology FAST for $1.2 Billion and are now bundling that with MOSS – how does this help someone creating a Microsoft based ecommerce platform without taking a hard (and expensive and inappropriate dependency on MOSS). If MS wanted to add value to the ecosystem, for $250k you could fund a couple of the best developers in the Microsoft Open Source world (I’m thinking of folks like Oren Eini and JP Boodhoo) to re-write Solr, the OS Enterprise Search platform in .NET. Most OS Projects are direct “ports” i.e. the API is kept exactly the same so that the documentation doesn’t have to be re-written, but by funding a ground up re-write, you could really harness the power of the .NET platform (LINQ / WCF / WF4 / PowerShell) and even create a Azure flavour that would allow the search engine to vastly scale on that platform. Add to this comprehensive documentation via a Technical Writer and you have an incredibly important application that adds immense value to the platform eco-system.
For Microsoft to compete against the LAMP stack they to concentrate on the community and Open Source ecosystem to add immense value to the WISA stack. To achieve this Microsoft should harness the passion and commitment of the leading lights in the MS OS ecosystem and help fund them to work full time on the projects they currently work on in their spare time. Microsoft should also fund rewrites of some core Open Source applications to take advantage of the power of .NET to give the Businesses greater choice and greater reason to invest in the Microsoft Platform. At the very least OS projects should be treated in the same way as Partner's Products - as something that enriches the platform, not something that threatens it.