One .NET Framework for One Microsoft
Proposal is to create a “One Framework” project at Microsoft to encompass both technology development and a consistent message for customer engagement. A developer should be able to fire up Visual Studio and use C# and Xaml to target Windows Desktop, Windows Store Apps, and Xbox One along with a cloud deployed “click once” option to all these targets. There should be clear guidance that all of these will be both supported and enhanced for a long time to come. It would be a nice extra to have a fully supported by Microsoft targeting of C# to Android and IOS for which a Xaml runtime is seriously needed. If there is a battery life and performance issue on small devices by using this sophisticated programming technology then that should become a tooling issue and not a “pull the rug out from under the developer” issue. The .NET framework is at the heart of this and needs to be the driving force since all possible solutions flow upward from a solid cross-platform framework. The PCL effort leads to the LCD which feels like a return to .NET 1.0. Instead each platform needs the full 4.5 framework either native or via extension DLL exported by tooling. Persistent data is vital to any serious application and every target needs a universal System.Data or new cross-platform data core to cover common always offline scenarios along with cached scenarios to Azure etc. It creates a cognitive breach when developing a Windows Store App and a Windows Desktop Application becomes cross-platform programming! “One Framework” would restore the beauty of C# Xaml development for millions of developers and restore confidence in enterprise investment in the Microsoft development stack. The WPF in .NET 4.5 should be harmonized with the WinRT Xaml runtime via either a O/S update or tooling extensions that could create a harmonized virtual “One Framework” layer. The Blend tool needs improved promotion to the developer community and could be extensively enhanced for the One Framework. The Entity Framework could be enhanced with both fundamentals and tooling to support all targets, and also NoSQL and Object Graph serializations as a universal One Framework Data Persistence.Currently disenfranchised Silverlight LOB developers can be given a clear upgrade path to this single One Framework target particularly if tooling for Android and IOS targets are added. The scope implied by this proposal will hopefully not be a deterrent to consideration of the technical enhancements listed here.
One Framework would be really nice.
Currently I write a program for Windows Store that will have also support for Win7.
Where I could I used Portable Library, but theses are to limited.
My complete Code looks like this:
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => AddMessage(str));
await this.Dispatcher.InvokeAsync(() => AddMessage(str), System.Windows.Threading.DispatcherPriority.Normal);
The Code is almost identical, but some little words changed. And that's the reason for a lot extra work.
Silverlight had a less than 3 year active development cycle from when the first usable version 2.0 having normal controls, such an edit textbox, until it was retired from forward development.
We've removed dependencies on non-core technologies and third party tools from our 1+ million line application. It's a bit more to develop on, but there is not the 3 to 4 man-months per year wasted on some sub-componment breaking because of an upgrade to VS, .NET, OS, SQL Server, EF.
Nice, a swiss army knife of all software. tick tick tick , that was my brain...
Thomas Steininger commented
I (and our company) fully agree with the main message of this proposal.
The developer world needs a software development stack that allows to create with one modern programming language (C#,..) apps for all really important plattforms (windows, macos, ios, android).
Microsoft should here go forward to show us a path to this aim. We really need it - soon.
Lex Lavnikov commented
And don't forget to include Silverlight Desktop runtime in the mix. HTML5 will never be as productive & performant as SL/C#.
Keith Hill commented
Just buy Xamarin and make C# & .NET *truly* cross platform. Where I work we will probably have to drop C#/.NET because we need to support Linux and potentially iOS and Android. C#/.NET have all of sudden gone from being this truly productive environment to a hindrance because it's not portable. I love C# and .NET and this is a major bummer for me but the writing is on the wall. I suspect portability is also part of the reason for a resurgence in interest in C++ 11/14.
I would even say extra specialized focus on Mono to keep it close in line with the .NET team would go a long way for .NET/Mono/C# to become one of the best cross-platform development environments around! :) (it's already there for the most part, but it lags behind in support - i.e. no XAML support, or C++/CLI, etc.)
Failed to include WIndows Phone on the target list. Also target may have been a misleading word to use since the I didn't mean separately targeted frameworks as can be done currently with Visual Studio but instead literally One Framework similar to .NET 4.5 that is transparently implemented on all of those environments by some combination of parsing and translating Xaml, beefing up current frameworks and including extra libraries as needed to provide a single coherent .NET framework to the developer and the tooling handles the details.