Solving Microsoft's hard problem
by Glyn Moody
At first antagonistic and contemptuous, Microsoft has for years struggled to find a way to live alongside open source; even though it might prefer if it did not have to. Glyn Moody looks at the situation and asks if open hardware might present Microsoft with a way forward.
Microsoft has a problem to solve. On the one hand, open source is not going away – its distributed, modular and iterative approach clearly has many advantages compared to traditional top-down development techniques when it comes to writing and maintaining complex code. On the other hand, Microsoft has spent over a decade propagating variegated FUD against it (although it's true that it has adopted a more accommodating stance in recent years, what with the release of odd bits of code under open source licences, and various attempts to snuggle up to some open source projects).
Still, Microsoft's basic stance remains the same: free software is OK for certain, limited situations, but for serious, enterprise-y stuff you need honest-to-goodness closed source. Given that, how can it begin to tap into the power of open source for its major projects without seeming to admit it got it all wrong, and that open source is actually a better approach?
There might be a way, following a path that the company has already started exploring. Significantly, it's in the field of hardware rather than software alone – open hardware, to be more precise:
Even someone with little or no electronics background can build devices made up of components like sensors, lights, switches, displays, communications, motor controllers, and much more. Just pick your components, plug them into a mainboard and program the way they work together. .NET Gadgeteer utilizes the .NET Micro Framework to make writing code for your device as easy as writing a desktop, Web or Windows Phone application.
.NET Gadgeteer is clearly inspired by the huge success of the Arduino open hardware project:
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.
Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing).
Here are some more details of Microsoft's project:
Microsoft .NET Gadgeteer is an open-source toolkit for building small electronic devices using the .NET Micro Framework and Visual Studio/Visual C# Express. Gadgeteer combines the advantages of object-oriented programming, solderless assembly of electronics with a kit of peripherals, and support for quick form-factor construction using computer-aided design. This powerful combination allows embedded and handheld devices to be iteratively designed, built and programmed in a matter of hours rather than days or weeks.
Moreover, the open source licence employed is not one of the obscure Microsoft variants that it has used in the past.
The .NET Gadgeteer source code is subject to the Apache License, version 2.0. In addition to the source code that we make available here, we also include hardware specifications and designs under a Creative Commons license.