Today, Nov 16th, 2009, I have a number of exciting things to share: Version 4.0, Open Source, the new Community Development Model, and how to get at all this stuff which is all still free.
First, we are launching version 4.0 of the .NET Micro Framework today. This is our first version to come out since we moved to the Developer Division. This version has a number of neat features. Here is the full list:
.NET Micro Framework 4.0 features:
· HTTP and HTTPs: An object model is now provided for handing both HTTP clients and servers, similar to the .NET Framework, with the new types System.Net.HttpWebRequest, System.Net.HttpWebResponse, and System.Net.HttpListener from assembly System.Http.dll
· Multi-touch: Basic support for multi-touch events, such as moving two fingers on a touch screen, is now provided in the object model and the emulator. Gesture support has been redesigned to be faster and more flexible.
· Versioning: Versioning has been implemented to strictly identify assemblies by the version number at build time and on the device, and eventually re-deploying missing assemblies. Side-by-side load and bind for types belonging to the same assemblies with a different version number is supported. Support has also been added for assembly naming which includes the version number.
· Emulator support for SSL and HTTPS: The emulator now explicitly supports SSL and HTTPs emulation.
· Native XML Parser: The XML parser has been moved to native code for better performance.
· Native collections: The collection classes have been moved to native code for performance, and have been enriched with Queue and Stack types.
· Time sync: Devices can use the new Time Sync API to sync the system time with a specified server's time, automatically or manually.
· Arbitrary display size: A custom heap and allocation area is now provided to support bitmaps larger than 760KB.
· Large buffers: A new type, Microsoft.SPOT.Hardware.LargeBuffer, is provided for allocating buffers larger than 760KB, which would not fit in the managed heap. This type is located in assembly Microsoft.SPOT.Hardware.
· Watchdog and Power Level control: The power level and the watchdog behavior can now be controlled from the managed application using types Microsoft.SPOT.Hardware.PowerState and Microsoft.SPOT.Hardware.Watchdog from assembly Microsoft.SPOT.Hardware.dll.
· Thick pens and gradient fills: A richer graphic model is now provided for designing widgets and controls.
· TinyCore performance improvements: TinyCore performance has been enhanced in the area of event dispatching and layout.
Second, with this version of the product, we are including source code for almost all of the components under the Apache 2.0 license. This will allow you to debug through the full stack and make whatever specialized changes you need for your specific application. It also means that if you want to run .NET Micro Framework on a processor architecture that is not already supported, you don’t have to wait for Microsoft to build and release the porting kit built with the right toolchain – you can do that yourself.
As I mentioned, there are some components that we are not including the source code for. These components are referred to as the Companion Libraries and include the TCP/IP stack and the Cryptography libraries. We do not include the source code for these libraries for several reasons – the TCP/IP stack is licensed from EBSNet(http://ebsnetinc.com/) and the Crypto libraries are used in other products besides the .NET Micro Framework. If you need/want access to the source code in the TCP/IP stack, you can contact EBSNet directly. They also have a great deal of additional functionality including IPV6.
Third, one of the concerns that we heard more than once when we first announced our intention to go Open Source was that the product could fragment into a number of incompatible versions as has happened with other products. We want to make sure that people can adapt the product to their needs but at the same time, how do we make sure that there is a core implementation that continues to be sponsored by Microsoft and adheres to the original goals of a high quality platform for small embedded devices. We decided to develop what we are calling the ‘Community Development Model’. In this model, there will be a codebase that is shared by the Microsoft and external developers from which we will release versions just like any product team. There will be a core technology team that is made up of both Microsoft and external participants who will be the gatekeepers of code that goes into the product. The Microsoft engineers will continue to focus on some of the things that only they can do – deep coordination with the rest of the .NET team and collaboration with other Microsoft product teams and some of the more elemental architectural changes. For external developers, we are throwing the door open for you to propose projects that you would like to take on. (I have some ideas already if you need some.) These will be evaluated by the core tech team which will also insure that the result meets the needed quality metrics. We are developing a web site to manage this community interaction (www.netmf.com). The site will be up in about a week with the initial ideas of how we see this community working but like with any community endeavor, we expect that this process will change and refine with your input so please let us hear from you.
When we started thinking about setting up a community site, we realized that there is more to a rich community than just contributing to the core implementation. We have people in the community who have made some great extensions, great hardware platforms, developed great support services,… The community site that we have envisioned will include the ability for everyone to bring their offerings to the community. You can advertise an extension library for sale or for free. You can find someone else interested in working on a pet project with you. Let us know what you would like to do on this site.
Fourth, it’s all still free. We announced the removal of the ‘per unit’ royalties from the runtime distribution licenses and the fees for the porting kit last Spring. We continue to follow that path. There will be no fees from Microsoft associated with the use of the platform.
Fifth, we are making this announcement in conjunction with the Microsoft Professional Developers Conference in LA (Nov 17-19). If you are there, look for Lorenzo’s talk on the afternoon of the 17th and stop by our booth. We will also have a roundtable conversation to explore your ideas on the Community Development Model that we are developing. We would be happy for you to participate.
Finally, where do you find all this? It couldn’t be easier. It is all now out at the Microsoft Download Center (http://www.microsoft.com/downloads/en/default.aspx). The downloads are broken down a little differently than before because of the new licensing. There are now 6 downloads to choose from:
The .NET Micro Framework 4.0 SDK – this is still the managed application development environment distributed under the Apache 2.0 license.
The .NET Micro Framework 4.0 Porting Kit – this is the core porting kit including the Base Class Libraries and the runtime under the Apache 2.0 license. It includes stubs for the Companion Library interface.
The .NET Micro Framework 4.0 Cryptographic Libraries – this is one of the Companion Libraries. It contains the cryptography functionality in the base product including XTEA, RAS, and DES. If you are not using this functionality, you do not need to download this library. This library is distributed under the Companion Library license.
The .NET Micro Framework 4.0 TCP/IP and SSL Libraries for ARM Instruction set – this is one of the Companion Libraries. It contains the network functionality for people using the ARM instruction set. If you are not using this functionality, you do not need to download this library. This library is distributed under the Companion Library license..
The .NET Micro Framework 4.0 TCP/IP and SSL Libraries for Thumb Instruction set - this is one of the Companion Libraries. It contains the network functionality for people using the Thumb instruction set. If you are not using this functionality, you do not need to download this library. This library is distributed under the Companion Library license.
The .NET Micro Framework 4.0 TCP/IP and SSL Libraries for Thumb2 Instruction set - this is one of the Companion Libraries. It contains the network functionality for people using the Thumb2 instruction set. If you are not using this functionality, you do not need to download this library. This library is distributed under the Companion Library license.
I am really pleased that we have gotten to the start of this new model and that we can begin working more directly with the community to continue to develop the .NET Micro Framework. I believe that there is no longer any reason for embedded development to be done with tools that were created in the last century and with your help we can bring the development of embedded devices onto the same programming models and tools that are pervasive in the rest of software development.