Microsoft’s Windows and .Net development platform are an extremely common development stack used in the aerospace industry and for good reason, given its maturity and reliability. .Net and the C# programming language are now both open-source with C# being an ECMA standard. Being a standard has made it more attractive for the wider open-source and Linux communities and there have been a number efforts to make .Net development targeting Linux viable, the largest of which is the Mono project. Because Linux-based systems tend to be less resource-intensive. Linux systems also don’t require a Windows license fee and when coupled with generally requiring more modest specs, that makes Linux an attractive platform to target for development for cost reasons; Linux is also a great platform from a technical perspective and most avionics hardware and sensor vendors support standard Linux variants such as Debian. In the past, third-party open-source solutions such as Mono were the most common way to develop for Linux systems in .Net, but that’s rapidly changing. With the release of .Net Core from Microsoft. .Net Core is an implementation of the base .Net classes and framework that targets not just Windows, but Linux and macOS.
The advantages of working with .Net Core are pretty clear: Linux support, potentially a lower cost of ownership in the long-term and developing on the latest modern standard. Another key feature of .Net Core is that you can also work in F# in addition to C#. F# is phenomenal for data processing and functional programming. Like C#, it is an open standard. .Net Core also works seemlessley with the Nuget package manager and many existing Nuget packages are one hundred percent compatible with it. Currently, .Net core supports the standard X64 on Linux and ARM64 / 32 support is on the way, meaning that .Net Core will be a native viable technology for embedded systems.
There are some downsides to this of course. For instance the front-end Microsoft WPF user interface development technology only works on Windows; while there are a number of open-source attempts at cross-platform shim libraries, none of them have been particularly successful and we can’t recommend them. In practice this means that any layout and user-interface code would need to be re-written from WPF (the same goes for UWP actually) into some other user-interface library. A popular way around this issue is to using a cross-platform .Net user-interface solution such as GTK#.
As the Aerospace industry continues to embrace Linux and open-source systems migrating software development to .Net Core is a good way to get the advantages of Microsoft’s powerful and mature development platform while still leveraging the best of the Linux and open-source community. If you want to see an example of how we’re using C# in the aerospace industry, take a look at our white-paper on the world’s first iPhone flying rear warning radar (RWR) that we developed.