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!

6,706 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 →

    292 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...
      • Mike-EEEMike-EEE commented  ·   ·  Flag as inappropriate

        @Philippe I am with you 100% on everything but Xaml referring to UI engines. It is often conflated with UI -- and understandably so as it started out embedded in WPF -- but Xaml by itself evolved into its own assembly and is used for more than UI (Windows Workflow). Feel free to join the discussion here if you haven't already to port System.Xaml to .NET Core:
        https://github.com/dotnet/corefx/issues/5766

        And yeah, Xamarin Forms was a gallant attempt, but it should be shelved ASAP. When I said "combine" w/ UWP I was specifically referring to XF's Xaml system, which is better than UWP's but not as good as WPF's of course. In an ideal world we would want WPF's client model wholesale and replace both XF and UWP, for sure. :)

      • Philippe MonteilPhilippe Monteil commented  ·   ·  Flag as inappropriate

        Xamarin.Form and UWP cannot be compared: X.F is a layer on top of existing UI engines (iOS/Android/UWP, soon OSX) providing a valuable level of abstraction. UWP is a vector-based UI engine on its own.
        XAML does not only refer to the serizalization mechanism, but also to the various underlying UI engines.
        The MS models which should be combined, or at least built on strictly the same fondation, are UWP and WPF. The fragmentation imposed by WPF, UWP and in the past by SilverLight, SL fo Windows Mobile ... is absurd to say it politely.
        IMO, this fondation should be open-sourced, designed to be available to the .Net and non .Net langages, ported to WASM, iOS, Android, OSX, XBox, connected to Unity, Unreal Engine, ..., incidently removing the need for Xamarin.Forms.

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

        Correct @Anonymous. The Mono support is simply the ability to run .NET in a WASM host. There is no API that would be used to provide a client UI/GUI within that host at present. Currently there are two known MSFT models that could (and should) be combined (taking the best out of each offering): Xamarin.Forms and UWP.

        Unfortunately (or fortunately, depending on your perspective), WASM exposes a fatal flaw in Xamarin.Forms design. Namely, if you build custom controls, you are required to build a renderer for every platform that is supported by Xamarin.Forms. So if XF adds WASM, that means every control vendor must go through every control and release a new renderer for WASM.

        Very much a pain.

        Obviously, a model such as WPF/Avalonia is preferred where you have one model and your controls are skinned/themed according to the host it is rendering in.

        As for Moonlight, that might be a possibility. It's last known supported featureset is/was SL3, which if you know anything about was nothing compared to SL5. I would rather see a new effort altogether that is community driven like .NETCore/GitHub initiative. Like I said earlier the earliest we'll see anything is 2018.

      • AnonymousAnonymous commented  ·   ·  Flag as inappropriate

        @Mike-EEE

        Based on mono support for WASM. Would it be correct that there is no xaml GUI in mono?

        Only moonlight that didn't make it to full SL4?

        Why wouldn't the interested people on this forum pick up moonlight for development?

        Surely, it would be relatively easy for third party controls vendors to port controls to moonlight.

        If Moonlight supported SL + .net standard etc. would there be anything superior out there for WASM?

      • Philippe MonteilPhilippe Monteil commented  ·   ·  Flag as inappropriate

        A WASM version of Noesis would be oustanding.
        As far as 3D is concerned, the ability to inject GPU produced surfaces in a UI would be sufficient.
        Also, the licensing page of Noesis mentions an optional access to the source code.

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

        @Anonymous, that is sort of the request here. There are all sorts of "here and there" endeavors, especially on the JS/HTML5 front with CSHTML5 and Bridge.NET that do "some" of the things we're looking for here, but not all. Noesis is another example. It's got a lot going for it, but it doesn't offer the 3D component. Additionally, it also suffers from the same problem of UWP and doesn't support Markup Extensions ATM. Which to me you might as well say you support XML, not Xaml. :P

        In any case, we're looking for a comprehensive, authoritative vision and offering from MSFT that says "this is the platform." Once you have that, you'll get vendors such as ComponentOne jumping onboard and contributing their goods.

        We're close. All the pieces are there now that Mono is being ported to WebAssembly. My feeling is that //build2017 is going to be all about .NET Standard 2.0 (the terrain), and then //build2018 will be this new platform (the highways). Then it will all about finding the right API (the cars) to best utilize it.

        BTW, EF Core already works on Xamarin in some capacity: https://xamarinhelp.com/entity-framework-core-xamarin-forms/

      • AnonymousAnonymous commented  ·   ·  Flag as inappropriate

        @Mike-EEE

        http://www.noesisengine.com/

        Looks very impressive! I think it's more fine for them to charge for the platform especially for LOB projects and games.

        Would be nice perhaps to see a free version for non-commercial use or a license model similar to Xamarin.

        Has anyone converted a WPF, SL project to Neosis who can comment on its viability, releiabiliy and ease of migration?

        Also, I don't see any third party component support from the likes of Telerik, Component One etc.

        Do you know if it'll support things like EF?

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

        Indeed, @birbilis. Xaml is simply a (powerful) serialization/data format that allows you to expressively describe .NET objects while leveraging key features that vastly improve the developer (read: tooling) experience when compared with other data formats. You can describe anything in it, whether it is UI, your application domain model, or as you point out, 3D objects. If it's a .NET object, you can describe it in Xaml.

        Anyways, on with our regular Friday morning programming here. :)

        ---

        Weekly Friday morning check-in: 90 votes were cast for this idea last week, bringing the total to 45,280 combined votes across 10 similar ideas asking for a ubiquitous .NET. Please feel free to like and/or retweet to show your support to the "Big Three" here:
        https://twitter.com/DevelopersWin/status/835098020643471360

        Thank you all who have shown and continue to show your support!

      • birbilisbirbilis commented  ·   ·  Flag as inappropriate

        Btw WPF also had 3D in XAML. It's not impossible to envision 3D scene graphs in XML, see VRML97 format's evolution as X3D for example

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

        Right Philippe, it doesn't support any 3D, but is a cross-platform vector-based .NET rendering solution, which is still impressive in its own right. You might already know this, but just in case, you can pair Noesis with Unity3D to achieve what you are looking for today. In fact Unity currently runs in the web browser via Flash control, so there's that. I am sure they too will be supporting WebAssembly in the next year or so.

        Unity also now support .NET4.5, which is pretty impressive. The only drawback with Unity is that it is a commercial product like Noesis, but more notably does suffer from very un-.NET design in its integration. For instance you are required to create classes that have convention-based methods. So if you misspell a method name it doesn't work. Additionally you get no intellisense around this sort of design (and impacts discoverability).

        You can find an example of this here (look for the "Start" and "Update" methods):
        https://forum.unity3d.com/threads/step-by-step-tutorial-for-c-net-dll-and-unity3d-pro-only.99427/

      • Philippe MonteilPhilippe Monteil commented  ·   ·  Flag as inappropriate

        <<http://www.noesisengine.com/
        Interesting technology indeed, thanks for the URL, but as you mention, it is closed source:
        such a core technology should be made open source and multiplatform / multilangage.
        Also, it is based on XAML, designed more than 10 years ago. How about
        a graphics / UI engine designed with a more advanced support for 3D, AR/VR, multithreading ...
        in mind, as I tried to explain in a previous message in this thread?

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

        @Anony, 100% agree. UWP is a tragic, terrible joke. The lack of adoption is proof of its disaster. The group in charge of it continues to be old skool, terribly managed, and still Windows-centric. It is still mired in closed-source thinking and very few parts of it are on GitHub. The only good use for it is a rendering host for another API such as Avalonia, as you suggest.

        Another good candidate, is Noesis. They are top on my list currently. The owners are very engaging and they care about Xaml, unlike the UWP group:
        http://www.noesisengine.com/

        The downside is that they are commerical/licensed/paid. However, considering options it might be worth the investment.

      • AnonyAnony commented  ·   ·  Flag as inappropriate

        Lets see if the below gets a response!

        Microsoft appear to be reverting to building a walled garden around their products and services. They know they have superior tech to build apps, so why allow competitors to take advantage of it? What other reason do they have not to open source Silverlight - .NET core is?

        I understand the $$$ benefits around this strategy. It also hinders good developers from building apps quickly that run cross platform and disrupt their Dynamics/ Office 365 product set - The ASP.NET/ JavaScript mess is just too difficult and costly.

        It seems to me that we're all complaining / hoping for MS to go against the grain and do something innovative and in support of creativity and entrepreneurism. Yes they've done it with .NET Core and SQL Server and started to support cross platform again - so maybe there is some hope.

        I think our best approach as developers is not to buy into their sales pitch to build UWP apps. Instead we should hold our ground and whilst waiting get involved with Avalonia. Imagine what a non-Microsoft cross platform C#/XAML alternative would do to their walled garden strategy.

        Ultimately, it should be their Windows strategy to get as many apps on their app store as possible. It's too late to be an Apple 2.0 especially without a Steve Jobs to help do it. Instead they should try to compete with Google Play and look towards their dwindling die hard developer base to help them do it. So what if you can run a .NET app on droid. It's better this than have a sparse Windows store and a virtually useless Windows 10 cloud offering.

        It's time they pulled their head from the sand and engaged with us via this forum. The lack of any response should tell us all that they are either completely lost or supporting their developers goes against their $$$ strategy.

        I think the 24th should mark the date we all walk away from UWP, stop allowing them to play games with us and start to work on an alternative with Avalonia? I'd be interested in other ideas on none MS alternatives? The last thing they want is a fast cross platform web assembly alternative to their Dynamics, Office 365 and Power BI etc offerings.

        "Innovation distinguishes between a leader and a follower." - Steve Jobs

        "[?]" - Satya Nadella (please fill in the blank space provided)

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

        Oh heyyyyyyy look at that. One year ago today someone got drunk @ MSFT and accidentally hit the "Under Review" button for this issue. ;) ;) ;)

        @Anonee, forget all those links (although they are very nice, yes), the only one that matters is the one below where Mr. de Icaza confirms that Mono is currently being ported to WASM. Incidentally, this should give provide a tremendous sense of relief to MSFT management as now they can focus their valuable resources on getting .NET working on toasters. Or whatever else they currently feel is more important than a ~3.5 billion device install market. Gotta "brag" about "something" for next year's Connect(); after all.

        @Anonymous: that has nothing to do with this issue. ;) It's actually the antithesis of this concept. But thank you for sharing. :)

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

        Still blazing along here. We are now over 6k votes and going strong!

        --

        Weekly Friday morning check-in: 136 votes were cast for this idea last week, bringing the total to 45,171 combined votes across 10 similar ideas asking for a ubiquitous .NET. Please feel free to like and/or retweet to show your support to the "Big Three" here:
        https://twitter.com/DevelopersWin/status/832565033859178496

        Thank you all who have shown and continue to show your support!

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

        Digging the conversation here @Anonee, @Anonymous (with a profile picture, LOL), and @Marc. Finding myself nodding. :) Very encouraged about the future here.

      Feedback and Knowledge Base