I suggest you ...

Create a Ubiquitous .NET Client Application Development Model

This vote is for developers who wish to see the idea of a ubiquitous .NET client application development model created by Microsoft and the Visual Studio team.

A ubiquitous .NET client application development model is a model that is defined in .NET-based technologies and is able to run in a multitude of runtime environments -- both native-compiled (store-hosted) and web-hosted.

A *very* rough image of the vision can be found here:
http://i0.wp.com/blog.developers.win/wp-content/uploads/2015/09/Vision.png

The goal is to enable *one* .NET Client Application Project to build deliverables for the following platforms:
1) Windows 10
2) Legacy Windows
3) *nix (Unix/Linux)
4) Droid
5) iOS
6) Macintosh
7) HTML5
8) ??? (Extendible to different, future platforms)

In order to achieve the above, a ubiquitous .NET client application development model should strive to possess the following qualities:
1) Native Cross-Platform Capable - For native-compiled/store-hosted scenarios (iOS/Droid/Windows Store)
2) HTML5-Compliant - For web-hosted scenarios, via .NET-to-JavaScript transpilation
3) Consistent User Experience - For brand recognition, reinforcement, and optimal usability across all known scenarios
4) Cross-Boundary Accessibility - For shared code/assemblies between server and client boundaries
5) Xaml-Powered - Harnessing one of the greatest inventions in Microsoft's great history
6) Object Serialization Congruence - Markup used to describe serialized objects is what is created in memory
7) Holistic Development Consistency - The same guidelines and conventions are used in both client and server scenarios

For more information around this idea and the qualities above, a series of articles has been created to discuss the notion of a ubiquitous .NET client application development model at length. You can view that series here:
http://blog.developers.win/series/bridge-to-dotnet-ubiquity/

Finally, this is intended to be a starting point for discussion, and not a final solution. THAT is meant for the experts there at Microsoft. :) Thank you for any support, dialogue, and feedback around this idea!

7,715 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Developers Win!Developers Win! shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    337 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • Roger J. WilcoRoger J. Wilco commented  ·   ·  Flag as inappropriate

        Too big and far away? Cooments like that are exactly why we are in the mess we are in today. Did they say that with WPF? Or Azure? How about VS online? That took FOREVER to turn around but they have a great product now. Passion and vision is sorely lacking from MS it's probably dissenters are former employees trying to knock down the confidence of the giant trying to get back on its feet.

        Also, Xamarin is good, but as the links below show it doesn't support web like NodeJS. Very important or we all going to be Node developers in a few years and C# will be nothing but a relic.

      • Aaron HuangAaron Huang commented  ·   ·  Flag as inappropriate

        This plan is too big and too far away.
        Build a cross-platform .net CLR for android and iOS firstly, just like what Xamarin did, It looks MS's .Net Core is on the way, but sadly the UI components (WPF) did not listed in their roadmap till now.

      • Mike-EEEMike-EEE commented  ·   ·  Flag as inappropriate

        Excuse me, I used the wrong page in regards to NetMarketshare below. That was for the year of 2015. Here is the latest from last month. Google is actually @ 57%+:
        http://www.netmarketshare.com/report.aspx?qprid=8&qptimeframe=M&qpsp=203&qpch=350&qpmr=100&qpdt=1&qpct=3&qpcustomd=1&qpcid=fw823129&qpf=1

        Additionally, Apple announced 1B active devices today:
        http://www.theverge.com/2016/1/26/10835748/apple-devices-active-1-billion-iphone-ipad-ios

        They include Macs in this 1B active, which are technically desktops/workstations, another report provided by Netmarketshare. According to a graph found in this article, Macs comprise about 5% of sales:
        http://www.theverge.com/2016/1/26/10828134/apple-earnings-report-first-quarter-q1-2016-record-profit

        So with some extrapolation (I really should make this a blog post, LOL), we can figure the entire device market at present with the given statistics: 1B (total active devices) - 5% (Macs) / 35.43% (share as of Netmarketshare report December 2015 above).

        That brings the device market (based on my calculations) to 2.6B at present. Again, that does not include desktop/workstation which is its own ball of wax.

        I like to talk about this as it really underscores the market we as developers are living in, and gives us more facts/details about the business problem at hand. Hopefully it helps someone out there and provides a little more context around this problem space. Please also feel free to correct my understanding, as always. :)

      • Mike-EEEMike-EEE commented  ·   ·  Flag as inappropriate

        Hi Johann, thanks for your input. You are correct that Android/iOS has a great deal of marketshare.

        In total, based off Xamarin's 2014 keynote, there are about 3 billion total devices in the marketplace, half of which are devices (phones/tablets). That is about 1.5B iOS/Droid devices. This might be escaping a lot of people, but Google does appear to be winning the device market overall, currently with 51%+ of the total device market:
        http://www.netmarketshare.com/report.aspx?qprid=8&qptimeframe=M&qpsp=192&qpnp=12&qpch=350&qpmr=100&qpdt=1&qpct=3&qpcustomd=1&qpcid=fw8718&qpf=1

        Even if Windows 10 reaches 1B installs by 2018 (and it should, Windows 10 is pretty awesome), that still leaves 2-2.5B devices outstanding that a UWP-based application simply will not be able to reach, meaning a developer/organization will have to create additional code bases to reach the remaining market. Here is a graph that really illustrates what this will conceivably look like in 2018:
        http://i0.wp.com/blog.developers.win/wp-content/uploads/2015/09/20150923021143.png

        Hopefully what stands out in this graphic is that HTML5 reaches everything (all 3-3.5B devices), so its importance is truly critical in this effort. For full market reach that truly, effectively, and efficiently reaches all known, modern devices (or rather, to be truly ubiquitous), an application will need (at least) four code bases for the Big Four platforms: iOS, Droid, Windows, and web.

        Thanks again for your input and support. Please share the news/idea. :)

      • Johann DirryJohann Dirry commented  ·   ·  Flag as inappropriate

        This one is really important for devs and also for Microsoft.

        Currently, Android and iOS has ss much market share, that project managers and developers target only them and skip Windows completely.

        What Microsoft needs is to offer devs a solution that enables developers to develop for Windows first and still be able to sell their stuff to the Android and iOS users.

      • Developers Win!Developers Win! commented  ·   ·  Flag as inappropriate

        Thank you for your support, Phil. Please feel free to share this vote with as many of your friends as you can. This vote has recently passed 1,500 votes after 16 weeks of existence, and there is nothing but appreciation and respect for the support it has fostered so far. It is tied closely to another hot vote on Visual Studio's board and you are encouraged to support that as well:
        http://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/8912350-bring-windows-10-universal-apps-to-android-and-ios

        These two votes along with five others currently account for over 22,600 votes which you can see in detail via a weekly report, the latest of which you can see here:
        http://blog.developers.win/2016/01/weekly-vote-report-for-friday-january-22-2016/

        You can indeed see (the now defunct) Silverlight 6 vote counted among the totals. Silverlight is considered to be an unsuccessful attempt at a ubiquitous .NET client application development model offering. To be more exact, it was an attempt to bring WPF into a browser window. The problem with the approach that was taken was that it required a plugin/install on the user's machine to successfully load and view it. This is considered unoptimal is users consider it invasive and cumbersome to have to install yet another program on their machine to do a simple task as viewing a web page. Correspondingly, you see this shift and expectation with the HTML5 web standards, where everything is done via JavaScript and HTML5.

        What separates this idea from Silverlight is that although they both allow a MSFT-designed (and therefore superior) client model to be rendered within a web browser, this approach suggests to *transpile* the client model and supporting artifacts into JavaScript and HTML5-compliant deliverables at the project's compile time, rather than requiring an inconvenient required plugin and/or install at load time when the page is initially loaded on the user's machine.

        By using this strategy, the model is the preserved as designed, and is output as 100% HTML5-compliant packaging that can be hosted on any web-accessible server. Consequently, since the client model is preserved as such (before any transpilation, that is), it can also be then compiled and packaged for other platforms, such as iOS, Droid, and of course Windows Store.

        That enables developers and organizations to use one code base to deploy to four (or more) platforms instead of these same organizations having to develop and maintain four code bases for four platforms (iOS, Droid, Windows, and web) as they are having to do now -- which is obviously incredibly expensive and prohibitive to do so.

        Hopefully that explains the difference to you and others who are engaged in this incredible dialogue that has been going on for about a quarter of a year now.

        Along such note, a moment should be taken here to give appreciation and respect to the Visual Studio team for its diligence and willingness towards enabling open dialogue here on this UserVoice forum. Even when there are critical comments towards Visual Studio and/or MSFT in posts or comments, they allow these comments to sit and exist as critical feedback. Unfortunately, this has not been the case in other MSFT UserVoice forums and has been greatly disappointing and obviously a hindrance towards any meaningful change/progress towards important ideals.

        This really goes to show the difference in management and philosophies between groups, and showcases why the Visual Studio group along with the Azure group represent the best that MSFT has to offer, and should be recognized as such.

        Thank you for your dedication to excellence and developer engagement, Visual Studio team!

      • Phil KoayPhil Koay commented  ·   ·  Flag as inappropriate

        I am a big supporter of this idea. I so hope this is the highest thing on Microsoft's agenda.

        However,Is this similar to what Silverlight was mean to achieve? If it is similar, are the reasons they killed silverlight the same reasons that they might not tackle this idea?

      • RodRod commented  ·   ·  Flag as inappropriate

        I agree - is time to start pushing MS tech to the rest of the boys

      • Anonymous commented  ·   ·  Flag as inappropriate

        i dont care about all the web technology stuff.

        but i would love an updated silverlight runtime that allows me to run uwp apps on a mac and under ios!!

      • Developers Win!Developers Win! commented  ·   ·  Flag as inappropriate

        Hi Erich, thank you for the link. As you probably know, Xamarin doesn't allow for transpilation to HTML5/JavaScript/web artifacts, which is a fundamental ask for this idea/suggestion. As it stands, JavaScript and .NET are two incompatible languages, and developers/organizations are switching to nodejs as they can share code (saving money and time) between server and client for both web-hosted and native (via Cordova) development.

        This simply is not possible with .NET at the moment, which is what this idea/suggestion is precisely about. Your support around this idea is greatly appreciated! Thank you for the continued dialogue and thoughts.

      • Mike-EEEMike-EEE commented  ·   ·  Flag as inappropriate

        @Aaron, well, with THAT attitude. Remind me not to put you in charge of any projects or applications that I need built. ;)

        I am not sure if you fully understand the ask/idea here, so I will try to attend your points one by one.
        1) when you say time and money "developing other things" -- this is exactly what is happening now in a very large scale with developers and organizations as a whole. Since technologies are fragmented and there is no consistent model that spans all known platforms that these technologies address, organizations and developers are spending their time between fragmented between these different technologies. Because of this, developers (.NET in particular) are becoming generalists in these different technologies rather than experts in one. More on this here: http://blog.developers.win/2015/12/is-net-in-trouble-belated-thoughts-from-connect-2015/
        2) When you say "new feature" I will need more context. To be sure, a great majority of required language "features" and platform capabilities are already present across the board. That is, from a .NET perspective, you can take any given feature and find its adaptive equivalent in any target platform. Xamarin and JSIL have proven this out and show there is no technical barrier from making this possible. You will need to provide a working example here to discuss further.
        3) A working example would be nice to know here, too. The capabilities are there, and there is no known technical barrier to keep this idea from happening. The existing barriers are political will and time.
        4) Here we are running into a systemic and pervasive misunderstanding of what a "web app" is and how it should be viewed. To be more accurate, a "web app" is simply a client application that is hosted within a web context. There is nothing conceptually different between a client application hosted on a server and one hosted on the local machine. However, we have had some pretty poor conceptions reinforced around this notion of what makes a "web app" compared to any other client application. We as a developer community as a whole have always thought of "web sites" as a different animal, but really they are indeed client applications and should be viewed as such. They are conceptually and semantically the same thing, but simply comprised and traditionally built in a different fashion from how other client applications are built. Web-hosted technologies have finally reached parity with native technologies and we are finally on a different playing field than what we have had in the past.

        As for Java for Gui... I am not sure that there has ever been a cross platform compilation/transpilation for this technology? From what I understand it was based on VM/plugin/installs (to this day even, annoying) so that is not the same idea/approach as this idea.

        Finally, I would like to point out that you suggest developers should continually reinvent themselves and the technologies that they work with, and this idea/suggestion does exactly that. ;)

        .NET is a major MSFT investment (probably the greatest/biggest?), and it should be protected as such. Thank you for your continued feedback, discussion, and support towards this idea.

      • Aaron LawrenceAaron Lawrence commented  ·   ·  Flag as inappropriate

        And a pony too?
        This is a nice wishlist, but it's extremely unlikely to happen, because
        - it would cost very large amounts of money and time (which would take away from developing other things)
        - such a model will always be "behind" in time compared to native implementations e.g. a new feature arrives on platform X, and the tool takes a year or so to start supporting it, or never supports it because it isn't common to other platforms.
        - it will always produce a lowest common denominator, that is a poor cousin on most platforms
        - especially, producing a "web app" by this means would produce something very unlike other native web apps

        It's clear that it would be nice for developers who have already spent time on existing technologies, but as always, the world moves on and you have to reinvent yourself continually.

        Such things have been tried in the past - Java for GUI apps as an example - and invariably fall behind.

      • Developers Win!Developers Win! commented  ·   ·  Flag as inappropriate

        @Vili, indeed. Every attempt has been made at ensuring ".NET" and not "C#" has been said throughout the posted series and in the posted idea here, so F# (and any .NET existing language) support is indeed assumed and expected wherever C# is within this idea/suggestion. To be sure, code is expected to be written in .NET (C#/F#/VB.NET) and then transpiled into JavaScript seamlessly when needed for either debugging/development and/or deployment, and for on-demand for intensive computation as you are suggesting. This of course makes the most sense for web-hosted scenarios, as native/store-hosted scenarios would have the .NET code compiled into the native bytecode as applicable.

        Thank you for pointing that out... and for your support!

      • Vili VolčiniVili Volčini commented  ·   ·  Flag as inappropriate

        (F# -> Javascript compiler) on the fly would be awesome. Imagine offloading computation/code from server to client just with simple call :).

      • Developers Win!Developers Win! commented  ·   ·  Flag as inappropriate

        @mala, thank you for sharing Eder's vote. It is great to see this idea and the idea you reference sitting at #1 and #2 hottest ideas in Visual Studio right now, respectively. Also, this idea crossed the 1,000 mark today, and that is nothing short of awesome and beyond any expectations when this vote was initially created short of 8 weeks ago. Combined with the related votes over in UWP's board, the demand for a ubiquitous .NET client application model is over 3,500 combined votes between the voting boards (you can view the weekly vote reports at the referenced link below in a previous comment).

        The support really has been amazing. A tremendous thank you goes out to all who have supported so far. This is far from done, however. A look at the top votes here @ Visual Studio board shows there are ideas with tens of thousands of votes rotting on the vine or "under review" with months (or years!) of time passed without an update. That should scare anyone wishing to make a vote on this board or who has hopes of having their idea heard here.

        By contrast, hopefully these two votes will start to generate some internal discussion there at MSFT and get some seriously disruptive, marketplace-dominating innovation going on again in the MSFT client application development space.

      • malamala commented  ·   ·  Flag as inappropriate

        If anyone is interested, we are keeping track of this vote and others like it at

        http://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/8912350-bring-windows-10-universal-apps-to-android-and-ios

        Bring Windows 10 Universal Apps to Android and iOS

        Create something like what Xamarin is doing in order to help developers to code once and run EVERYWHERE (Wndows 10, windows 10 mobile, android and ios).

        If Microsoft could not buy Xamarin, at least do what they are doing by your own. Make something that enable us to archive real NATIVE cross platform development. It could dramatically increase the numbers of developers using .net to create mobile applications as well as increasing the number of apps created to wp too, since app could be compiled to ios, android AND WINDOWS PHONE. Hibrid apps like apache Cordova has a lot of potential but right now it is limited to offer a bad user experience when compared to the native apps you could build native with native objective-c on iOS, java on Android or C# (on Xamarin.Forms o WP and Windows 8). Porting .net to others platforms is good, but go further MS, create something that help us to "code once and run everywhere. And by EVERYWHERE I mean, not just windows, I mean: Native apps on Android, iOS, Windows PC, Windows Mobile, Xbox, HoloLens and to on. Bring us a tool that enable us to make Visual Studio Universal Apps REALLY UNIVERSAL (running as well on android and iOS).

        We want a Framework that enable us to build NATIVE.
        By the way Xamarin Starter edition has a very limited package size so is almost impossible to create even small apps with an organised architecture (multi layers) and its licences fees is very expensive too.
        Hey M$ look to the opportunity a tool like Xamarin could bring to the windows ecosystem. It could help you to resolve the app gap Windows Phone suffers so far. With a tool that can help developers to build native applications to windows as well as to android and iOS could bring the apple and android developers interest to use it and since it will be able to compile to windows phone then they will not have why to do not do so. It will also bring mobile developers form other platforms (android and iOS) to Visual Studio and .NET.

      • DarkswormDarksworm commented  ·   ·  Flag as inappropriate

        "continuing like this, the new versions of .Net will even exclude more of MS own OS's, and these operating systems are still used by the majority"

        And developers will continue to target lower versions of the .NET Framework from Visual Studio to accommodate users on those OSes, which kind of defeats the purpose.

        Even Visual Studio 2015 defaults to targeting .NET 4.5.x by default, instead of 4.6, for example.

        Honestly, I feel like .NET has introduced more headaches than benefits to client application developers. The performance delta between different UI technologies from Microsoft is far beyond trivial, and WPF performs terribly on lower/mid-range machines which are a ton of Windows' users. Hardly anyone wants to deal with MFC for new projects, and we lost VB for Quick Data-Based Projects.

        On top of that, Microsoft is deprecating technologies like SQL Server Compact and making it a PITA for some of us who develop solutions for our own use using them. I'm back to using Access for the moment. I don't feel like a 150MB (300MB+ Install) Payload is worth any of SQL Server Express LocalDB's benefits... Never mind that is a hard sell for people selling apps that used those technologies, should they migrate to Microsoft's "replacements."

        Eventually, I will stop using Windows for my personal stuff and migrate all of that over to OS X/Cocoa. Things are a lot more organized in Mac-Land.

      Feedback and Knowledge Base