In the past //build/ conference, Microsoft did something that it hasn’t done in a long time, it got people excited about developing on their platform. Talk after talk, they introduced new features and new technology welcomed by any C#, ASP, or .NET geek and many of those that have long strayed from that path.
The famous HackerNews (known to be partial to C#) was full of people commenting on the situation, something to the effect of:
I’ve abandoned the MS platform years ago. It’s about time I go back!
I’ve JUST switched to an android phone. This makes me want to switch back.
Words that you don’t usually associate with MS were said, “MS is really turning it around!”, “MS is going to be the top dog now” etc.
So why is everyone in such a hustle/bustle about them?
Open Source it!
So what’s the big deal? It’s Open Source something one might not associate with Microsoft. And they’re just getting started.
Word of note, it’s IE-centric. So anything Windows will fully support it: Xbox, IE, Windows Phone, etc.
Cortana and “cloud” APIs
Cortana, named after the Halo character, is Microsoft’s answer to Siri. So what’s the big deal? API. And the fact that it’s basically Google Now and Siri combined.
The effectiveness of the application is that it combines “interests” which it automatically adds with “daily routines” and schedules which it responds to and finally, commands from the user in order to come up with an apt response.
One of the coolest proposed features demonstrated at //build/ was the “remind me to talk about ‘something’ next time I talk to [my friend]” feature. When calling a person, the “something” would show up to talk about. A semantic “to-do” item.
But back to the API. At //build/, it was announced that Cortana’s voice recognition and abilities would be “cloud accessible”, meaning that apps will be able to directly access Cortana and its capabilities. THAT is a huge game-changer as both Google Now and Siri are pretty locked down in terms of developer accessibility.
Xamarin is a neat Visual Studio alternative with an underlying open sourced platform called MonoDevelop. Xamarin itself has a free and proprietary version, one that works across different OSes and compiles across them, too. Xamarin, from what I understand, focuses on developing mobile applications, allowing a developer to code once in C# and export to iOS and Android alike, and of course, Windows phone.
The great news is that the MS platform no longer holds the monopoly on coding in C#. Unity already takes advantage of C# for its own game engine, exporting games into most formats under the sun (Windows Store, BB, Android, iOS, Mac/OS X/Linux, even Browsers, Windows Phone). There was an announcement last year that opened Unity up to Xbox One development, Wii U development, and even possibly 3ds development as well.
Already Microsoft and Xamarin created a .net foundation together to help foster open source technologies (including aforementioned Roslyn).
The future of these partnerships could mean that Microsoft will shift from its all encompassing Windows ecosystem (eg. everything MS will run only on MS) to using its strengths on many different platforms, taking a piece of each pie on the table, so to speak.
Unity, for example, will foster more cross development, making games that would normally be Android/iOS-only available on all the Windows platforms. Xamarin’s official MS support will expand the usage of MS technologies on different platforms. I’d be excited to see the expansion of the .net runtime, making software like MS Access available on non-windows machines (Access is a pet peeve of mine. Gov’t data often comes in Access format, and there is no MS Access for Mac).
OneGet package manager
For those that don’t know what a package manager is, let me give you the quick intro. A package manager is a command line (and sometimes GUI) interface for installing applications, libraries, and dependencies on your computer. A great example of such a package manager is Ubuntu’s and Debian’s Apt-get which will find a package, download it and its dependencies and install it. On top of that, it will also update it whenever you give the command.
The main points here are that a package manager will find and install the dependencies necessary for an application to work. Linux distros are famous for perfecting this system.
The problem is, Microsoft had never had anything of the sort, and it was always seen as a detriment to the development community and to power users. Even Mac OS X has (community made) homebrew which works, more or less, very well.
A couple of years ago, Chocolatey launched which was pretty much the best package manager-type program out there for Windows, allowing you to install Node, Git, 7Zip, and even Firefox.
Microsoft launched OneGet which supports Chocolatey repositories and thus brings Windows to the modern development age. Hopefully the trend will continue.