back to article Devs ask Microsoft for real .NET universal apps: Windows, Mac, iOS, Android

Microsoft introduced the Universal Windows Platform (UWP) this year: applications that run across many device types, provided that they all run Windows 10. Unfortunately, that proviso means that the UWP is far from universal, targeting only a small minority of Windows PCs out there, and leaving other operating systems …

  1. joeldillon

    Perhaps they should try C++ and Qt instead. Runs on all of those platforms just fine.

    1. Someone Else Silver badge
      Thumb Up

      @ joeldillon

      Whoever downvoted you is:

      a) An unrepentant Micros~1 fanboi who would happily send all his/her/its personal information off to the hive just to stay faithful to the cult (and keep the tee-shirt)

      b) Someone whose skill set is such that he/she/it cannot program without nanny languages like Java or C-pigpen

      c) A flippin' moron

      d) All of the above

      C++and Qt FTW.

      1. CheesyTheClown

        Re: @ joeldillon

        Uhhh...

        I downvoted.

        C++ and Qt are not an option in modern development because of the bare metal memory handling nature of C++ and Qt. While it's entirely possible to code your own memory manager (I have... over and over) and rewrite all your tools to use relocatable types, when running on a memory limited device without paging or worse, paging to flash, C++ and Qt are a bloody stupid idea as you're lacking relocatable memory or operating system guided cleanup. Symbian made a shit-house out of their OS by trying to implement that stupid ass cleanup stack using macros in C++. Instead of extending the language to make it useful, they tried to impose the most impressively stupidly designed memory management system ever seen. For modern application development, if you can't have desktop grade memory management (on a mobile device it's murder on the battery and murder on the CPU and murder on the flash drive) then relocatable and garbage collected memory is a damn near must.

        No... using Doug Lea's malloc() IS NOT the solution.

        Not everyone using modern languages (and I don't like Java for other reasons... mainly due to the monolithic nature of the platform) is a noob or idiot. Some of use choose our languages and platforms based on their underlying architectures and because we actually know what we're doing as opposed to being some pathetic moron who makes comments like "An unrepentant Micro...." ... some of use believe that using a "nanny language" properly improves performance (it does) and allows the mobile operating system to manage power better (it does) and handle system services better (it does) and handle crash management/avoidance better (it does)....

        But I guess if you're writing a calculator or a red button app, you might have a point.

      2. dogged

        Re: @ joeldillon

        > Whoever downvoted you is

        e) somebody find it unlikely that MS would ditch their longstanding investment in C# for the linguisitically inferior, clunkier and harder to learn C++/Qt mix.

        Don't get me wrong, I quite like Qt but objectively, C# is better designed and better supported.

      3. elDog

        Re: @Someone Else (Re: @ joeldillon)

        So much hatred (downvotes) here at elReg today!

        I think the Micros~1 flambois couldn't quite understand your clear description of the retards that might not understand @joeldillon's post.

        Qt has been around many years and around several blocks multiple times. It is solid, heavily used for real projects (industrial, embedded platforms including undersea rovers, etc.) C++ is a great language with fantastic libraries. Perhaps since it doesn't need a software refresh every 12 months it doesn't put enough bread in the developers' baskets.

        1. dogged
          Meh

          @elDog

          And you presumably see no hypocrisy in calling other people fanboys.

    2. Andy Non Silver badge

      I had a play around with Qt a while ago, seems halfway decent. I've been asked many times over the years that I've developed applications for Windows in various versions of .Net if I do a version of my software for Mac, Android or Linux. Sorry, Windows only. Potential customers are disappointed and I've lost sales too. A cross platform development tool sounds (on face value) like a good idea. Can't help wondering if too many compromises would need to be made though and if you'd hit different glass ceilings for functionality with each operating system? Very few of my more sophisticated .Net applications ever managed with just the core .Net libraries and invariably needed extra functionality by API calls to the OS, which again makes the software OS dependent.

      1. CheesyTheClown

        You're absolutely correct

        If you attempt to write a program that's truly code once run anywhere (maybe with a recompile), you quickly find yourself in need of better libraries than what's included with the toolkit you've chosen. At this time, Qt is by far the most effective toolkit for portability out there. It includes pretty much everything and sometimes it even works on each platform. In recent years, when I've used the less mainstream features, it's been highly crash prone. If you consider what Qt is, it really is nearly a full operating system... that runs on a bunch of other operating systems. The programmers on the project are among the best and brightest in the world (I say this as a few of them like Lars Knoll are old friends of mine) and I have nothing but the highest regard for them. But the task they've taken on is just too big to manage. Even with unit tests (which I know aren't passing on some of the official release builds), maintaining high quality code on so many officially support platforms is impossible.

        There's also Swing. I was sitting in Texas at IBM OTI in 2000 developing the original Qt port of Swing before Eclipse even was publicly announced. I liked the idea somewhat as AWT was horrible and the 75 other windowing toolkit paradigms used by Java so far were are really awful. It seemed like a great idea to use "native platform controls" to accomplish UI development in Java... in fact, it was the right way to do it. The problem is that after 10000 releases of the toolkit, it's evolved into something much more and sadly lost that native feel. It's amazing how even after 18 years of Java, it's still really hard to find anything that actually "feels right" written in the language. If for no other reason but keyboard shortcuts. Eclipse is an excellent example of a modern graphical alternative to emacs... it's an awesome operating system, but it really needs a good editor.

        In my latest project, a sub-pixel precise CAD engineering program, I've faced some pretty tough challenges in making code that is properly portable to all platforms. I've had to be very careful to ensure that not only does my document model meet the internal requirements, but I also had to consider things like PDF and printer generation. There's considerable differences between how iOS and how Windows Desktop handle printing. There's absolutely no way that this could have been abstracted by Qt, Swing or anything else without leaving me lacking the information I'd need to generate the correct pagination or setting the proper printer options such as DPI or color space support. The Qt project has spent quite a bit of time on this for 20 years and has done the best job of anyone trying to get that right... but the only right thing to do is go native.

        There are other things too... screen layout management for each platform is different. For things like responsive UIs for scaling, each platform has different rules. There are entirely different controls altogether for things like flyout panels. These are things that just don't fit the Qt or Swing paradigms. It would require custom code on each platform anyway.

        So the moral of the story is, abstract the business logic of your code... MVC, MVVM etc... style and design views for each platform and portability is really not an issue. Then implement the platform specific code as needed.

        People in the article want something that's a silver bullet. For super-simple apps, this has existed for years. For something like a grocery store app or a catalog application, HTML5 is more than good enough. For something more advanced, C# supports pretty much every platform. There's Swift as well from RemObjects which I originally coded the project in... but it's far too little too late. It's a 20 year old language with some modern bells and whistles. Certainly better than Obj-C but 100km from being in the same league as a proper modern platform like Java or C#.

    3. Lee D Silver badge

      I'm a C99 fan for the same reasons.

      But, gosh... a platform-independent way of creating and deploying apps, that works on mobile or desktop. I have no idea where we'd ever manage to find such an innovative and fabulous idea. Surely nobody would start to abandon such a thing once it was in place. Or be stymied by not bothering to update the runtimes to work on modern browsers or with some semblance or security or without bundling auto-updating junk onto every machine or without having multiple, different versions of the thing floating around, or without having to face patent suits for daring to implement such an idea on their own mobile platform?

      Not even in Java, Indonesia, surely!

      1. ThomH

        Libraries like Qt make a lot of sense to us technical people but rarely produce especially native-looking applications. They're therefore a source of friction for users.

        Qt specifically also produces developer hassle via its C++ language extensions, which are problematic for many of the more popular IDEs — they'll inhibit highlighting, indexing, etc.

        So versus the alternative of writing it once per platform, Qt is often a better solution but not always.

    4. CheesyTheClown

      Qt used to do that

      Qt is a half finished product on most platforms these days. I started working on my current app using them. I was religiously Qt for years.... then I moved on.

      1) Qt is great for desktop

      2) QML may or may not support what you want to do. It's just not there yet.

      3) iPhone apps with Qt is an absolute misery

      4) QWidget based apps on most platforms are a disaster

      5) C++ is just not a proper language anymore... same with Swift.

      Let's be honest, any language which depends on a hardware MMU to handle relocatable memory is just a shit solution for this century. Using a real programming language, memory should be retargetable, compressable and cleanable by the operating system with no questions asked. Qt and C++'s memory models are an absolute hog unless you code the entire project using QML and Javascript.

      Every time I look at Qt as a solution for a project today, all I ever see is that whatever I'm looking for was demoed 3 years ago at a Qt seminar and they said it'll be ready soon and then nothing ever happened with it.

      Now, if Qt were to use their really cool Qt Creator along with Clang to produce a method of creating a real language (or even standardize on TypeScript) and make it so that QML was 100% feature complete or even transition to HTML 5 and TypeScript with the ability to add code to the back end in C++ or better yet, a C++ with retargetable memory...awesome!

      This isn't 1999 anymore... All platforms except Mac and iOS have well thought out and well designed system APIs and toolkits. You have to develop a different UI for each platform anyway otherwise it won't look right. So why does Qt matter anymore?

    5. bombastic bob Silver badge

      Qt great idea! Also wxWidgets

      Using Qt is a GREAT idea! It's got commercial support as well as open source libraries.

      Also there's wxWidgets, for MFC fans: I've ported MFC appLICATIONS to use wxWidgets a few times. I happen to *LIKE* MFC, and I *DESPISE* ".Not" and C-pound. [If I ever write a windows appLICATION, I always ensure that NO ".Not" dependency exists in *MY* appLICATION].

      And last I checked, C-pound was STILL doing poorly after all these years in the TIOBE index.

      So if I don't want to live within Java's limitations, there are at least TWO alternatives (using C++) for true cross-platform development: Qt *and* wxWidgets.

      1. Bod

        Re: Qt great idea! Also wxWidgets

        MFC, good god! Someone contact the 1990s, there's a developer they want back ;)

        Qt though, last I messed with it, it was as bad as developing for X Windows.

        Monolithic code and projects that are equally epic in development time, probably in academia or government. Meanwhile real business who need to get things done are churning out applications in a fraction of the time with modern languages.

  2. BenBell
    Pint

    An effort worth a giving a few "points for effort".

    While a lot of people will immediately slate/knock the end result, managing to make this sort of headway on a project that will (hopefully) eventually give developers a way to build an IOS/Android/Windows10/Xbox/Linux hybrid application can only be a good thing.

    Here's to the next release and hoping more milestones can be hit!

  3. Matthew Smith

    Looking at things the wrong way round.

    Both Google and Apple are now bigger than Microsoft. Its not a question of asking Microsoft to make its dev environment available across other platforms than Windows, its a matter of Google and Apple moving onto Windows.

    1. Someone Else Silver badge
      Facepalm

      @ Matthew Smith -- Re: Looking at things the wrong way round.

      Why would either Google or Apple lower themselves to "[move] onto Windows"?

      1. Matthew Smith

        Re: @ Matthew Smith -- Looking at things the wrong way round.

        "To really succeed in business, even when your opponent is drowning, you still need to stick a hosepipe in his mouth."

    2. Mikel

      Re: Looking at things the wrong way round.

      Look at what's going on with Office for Mac. It doesn't work. That is what would happen to your app if you used Microsoft tools to build apps for other platforms. I don't think developers are pleading to be let in on that.

      http://www.computerworld.com/article/2992488/microsoft-windows/office-2016-for-mac-update-doesnt-include-fix-for-crashes-under-os-x-el-capitan.html

  4. Anonymous Coward
    Anonymous Coward

    "The C# language has been a big success for Microsoft"

    Most definitely, especially considering the threat that java was in 2000. But I get the feeling C#'s popularity and usage is waning now - and I've seen quite a few job adverts for C# devs looking to retrain in javascript.

    1. Anonymous Coward
      Anonymous Coward

      Re: "The C# language has been a big success for Microsoft"

      You do understand that c# and javascript do different jobs?

      1. CheesyTheClown

        Re: "The C# language has been a big success for Microsoft"

        I agree with your sentiment, but many of those jobs were based on people who wrote most of their business logic server side where ASP.NET was a great solution and now they're using JavaScript with toolkits like AngularJS to do more or less everything on the front end and simply use C# (or even JavaScript with Node.JS) on the back-end to run a RESTful API.

        So while you're 100% correct, it's always been more of an issue of using C# as a hammer when you really needed a screw driver. So companies are starting to code their projects properly.

        I wrote my first RESTful (style) API in 1994 and handled all the business logic client side back then as well. I had to do 99% of the work by pumping data through hidden IFRAMEs, but it worked really well and had great responsiveness. Wrote an entire Angular style SDK in Javascript and made it work on all browsers as well by abstracting the code. To this day I still wonder why anyone ever did it any other way.

        1. Anonymous Coward
          Anonymous Coward

          Re: "The C# language has been a big success for Microsoft"

          You still need to write the back end unless you're letting browser side js loose on your database with blind trust. Whilst node.js is fun, you'd have to be off your rocker to use javascript where you don't need to.

          1. CheesyTheClown

            Re: "The C# language has been a big success for Microsoft"

            Node.js using TypeScript isn't too bad really. I did a small project (about 75,000 lines) in it back in January and I found it really quite relaxing. C# would have been a better choice, but the customer asked if I could do it all in one language so that it would be easier to hire a code maintainer than trying to find someone that knew two specific languages, so I took the challenge.

            Python would have been ok also, I like the language but I'm not a fan of the libraries.

    2. PatriceBoivin

      Re: "The C# language has been a big success for Microsoft"

      esp. since as i remember it, MS only started talking about .NET after it lost the trial against Sun Microsystems re. Visual J++ not being universal. I suspected at the time they just renamed the Visual J++ staff section and decided to write their own copy of Java, from scratch. Here we are again, at the end of that cul-de-sac.

    3. bombastic bob Silver badge

      Re: "The C# language has been a big success for Microsoft"

      "The C# language has been a big success for Microsoft"

      No, it hasn't. It's never gone above 10% in the TIOBE index, to the best of my knowledge. Some "success" *THAT* is.

      Maybe in niche markets it's a "success", but C++ generally beats it hands down, and at a FRACTIONAL PERCENT of what C and Java have done since C-pound was excreted from Redmond's, uh, orifice.

      "But I get the feeling C#'s popularity and usage is waning now - and I've seen quite a few job adverts for C# devs looking to retrain in javascript."

      Yeah, the SMART money pays attention to the TIOBE index, and you increase your skill sets where the most hiring is going on. That would be C, Java, Objective-C, and to some extent, C++, Python, etc.. C-pound is a waste of time learning. Beyond being "bass-ackwards" like the way ".Not" is constructed, it's object-oriented to the point of inefficiency.

      Yeah, no WONDER performance of C-pound applications is so poor compared to "native applications" written a decade before. I noticed that when W2k3 server released. 2000 server ran fine on a Pentium with half as much RAM. Put W2k3 on the same box, the UI stuttered like it was a 386. I'm pretty sure THAT was caused by a UI written with C-pound and ".Not" instead of native Win32 API calls.

      1. druck Silver badge

        Re: "The C# language has been a big success for Microsoft"

        What is this C-Pound nonsense? # is a hash, pound is £. If anything call it C-Hash.

        I think it is quite a nice toy language for small projects, just a shame its still mainly Microsoft only. There is mono, but it comes with a fair share of problems.

        1. This post has been deleted by its author

        2. Ilsa Loving

          Re: "The C# language has been a big success for Microsoft"

          > What is this C-Pound nonsense? # is a hash, pound is £. If anything call it C-Hash.

          You're all wrong. It's C-Octothorpe, dammit!

      2. Bod

        Re: "The C# language has been a big success for Microsoft"

        No, smart money is on the job ads, and sorry I see bucket loads of C#, and even JavaScript, all paying extremely well.

        C++ is there and in demand, and yes pays well though I get far less job ads for C++ compared to C#. It's becoming legacy code and will end up like COBOL. Fantastic that you can be paid a lot to maintain dead systems that corporates can't get rid of. In the real business world, if you want to get ahead you have to get out of the pit.

        TIOBE, I'm seeing C# at 4.1%, C++ at 5.9%. Hardly a massive difference. It's a Mickey Mouse index though. It measures popularity off search engines, talk and academia, not real jobs and business.

        Still, though, the massive risers on TIOBE... Java and Python. Both have more in common with C# than C++.

        1. Richard Plinston

          Re: "The C# language has been a big success for Microsoft"

          > No, smart money is on the job ads,

          So, you prefer to judge how popular a language is by measuring the number of empty desks where no one is currently writing any code.

          It may be that no one wants to do that job.

  5. Your alien overlord - fear me

    Well, obviously fearing the downvoters, I used to do VB, moved to C# then when trying Android found I might as well just do Java. True cross platform. And free !!!!

    1. Tchou

      Java is the antithesis of portability since it runs on only ONE architecture, namely the Java Virtual Machine.

      At a point this machine have to be 1/ ported to the target hardware 2/ installed by the user => without those two steps Java is the less portable langage.

      1. dogged

        > Java is the antithesis of portability since it runs on only ONE architecture, namely the Java Virtual Machine.

        It's also ugly, about 8 years behind the state of the art, has shitty memory management (oh hi Android) and apparently the copyright belongs to Larry Ellison.

        I'll pass, thanks anyway.

    2. CheesyTheClown

      How?

      I haven't looked much, but how would I ship Windows Phone or iPhone apps using Java?

  6. Steve Davies 3 Silver badge

    Hmmmm.... Interesting

    but two points come to mind

    1) How many Mb is .Net 4.5? A couple of a Hundred ? Well thats what the huge numbers of security patches on top of patches seems to day. Never the less, I wonder how the patching of the underlying frameworkd go on IOS or OSX? Would Apple let such apps into their App stores? .Net apps on an Apple Platform? Is it even possible?

    2) Has anyone given much thought about how XAML based apps would look on iOS or OSX? Would they follow MS rules or Apple Interface rules.

    My feeling that this is a portential solution (but to what question) but there is an awful lot of things to be sorted out before it ever saw the light of day.

    1. CheesyTheClown

      Re: Hmmmm.... Interesting

      1) .NET 4.5 is a few megs for the parts that count. There are tens of thousands of apps on the iPhone that uses them. Same for Android. Many of those apps are 10 meg or less downloads.

      2) There are many apps that use XAML on the iPhone and Android... they mostly suck, but there are a few good ones. Many business implement things like their inventory management systems using XAML on those platforms. It's getting better, but still has a long way to go. Once they get Canvas working, it should be good.

      I'm not sure what your concerns are...

      I agree however with the sentiment that apps should have user interfaces written for the platform properly. That doesn't mean that you can't use C# and .NET to do it. The full Android and iOS APIs (as well as story board mechanisms as well as XIB and NIB support) are available in C# and .NET. So the most popular apps use the native APIs instead of XAML.

      As a matter of fact, at this time, most of the top video games on those platforms are written in C#.

      1. amanfromarse

        Re: Hmmmm.... Interesting

        @cheesytheclown

        >As a matter of fact, at this time, most of the top video games on those platforms are written in C#.

        Really? Ios and android?

        1. dogged

          Re: Hmmmm.... Interesting

          Really. Usually via Unity.

  7. Anonymous Coward
    Anonymous Coward

    It's an attempted lock-in. Microsoft will blink first; but by then it may be too late.

    1. dogged

      > It's an attempted lock-in

      Let me get this straight - you say that a feature request on UserVoice submitted by users and unacknowledged by the MS S&T team is "an attempted lock-in".

      By whom? The users who submitted it?

      1. Zippy's Sausage Factory

        I think he means that UWP apps are an attempted lock-in, with their "One Windows" ish ness.

        I personally like the idea of Lazarus - cross platform, runs on Win/Lin/OsX, produces proper executables. Unfortunately, Object Pascal. Not my favourite language...

        1. dogged

          > I think he means that UWP apps are an attempted lock-in

          because those are absolutely what the article was about.... not.

          1. This post has been deleted by its author

  8. Lee D Silver badge

    I don't need Microsoft to do this. I need everyone to do this. I need to make platform truly irrelevant. That's when I feel that we've actually made a step forward rather than just in-fighting trying to one-up each other.

    There's no practical reason that Android, Linux, Windows, MacOS, etc. can't all share a language or a common basis. There's no reason that iOS apps can't come across to Windows PC's, or Android tablets. The barriers are fake, artificial, synthetic, profit-based.

    As it is, the web has made most things irrelevant but you still get the "Oh, you need this plugin", or "that's not supported on Safari" junk. Stop it. App makers sell apps and device makers sell devices. If your device can run all apps, your customers will be happy. If your apps can run on all devices, everyone is happy.

    Until then, I still create programming projects from a multi-OS template by default which abstracts out all of the differing nonsense into libraries and compilers for the platforms in question.

    Roll on true universal binaries.

    1. Anonymous Coward
      Anonymous Coward

      Terrible idea

      Then you end up with APIs that support the lowest common denominator of every OS, or support unique features poorly. If we had this in place a decade ago and the first iPhone and Android devices were expected to run the existing code, how well are their touch screens (in particular multitouch stuff like pinch to zoom) going to be supported? Not well at all, at best, or not at all, at worst. Sure, you can add support to the 'universal' API for this stuff, but how are you supposed to pinch to zoom with a mouse?

      What's the incentive for Apple, or even Google, to get aboard something like this and support something that would undoubtedly be very Windows centric in 2005? With Unixes falling by the wayside and Linux being mostly a server only thing, Microsoft and their minions would have come to pretty much dominate whatever committee ratified these universal API standards by 2005. Good luck getting anything in that helps the competition, until Microsoft comes along and copies your unique functionality so they can then compete on "equal" footing.

      I don't think you thought this through much, or you're just a lazy developer who was sold the "write once run anywhere" crap with Java 20 years ago and are upset you need to write a Windows app, an Android app, and an iOS app to hit today's market instead of just a Windows app like you could 10 years ago.

      1. Dan 55 Silver badge

        Re: Terrible idea

        It is annoying.

        There's still nothing better than C++ with the OS-specific stuff moved into libraries, all desktop platforms support C++ and the three mobile platforms support C++. It's a shame Qt isn't there yet.

        1. ThomH

          Re: Terrible idea @Dan 55

          It's a bit of a hassle that Android's C++ support puts you into the realm of the NDK though, especially as that's probably the most used consumer OS by volume. 64-bit ARM is evidence, if it were needed, that there's not the desire to retain binary backwards compatibility that characterised the desktop. Most (all?) of those CPUs can also run 32-bit code as a transitional move but Android is supposed to work independently of the instruction set so if it becomes possible to save some pennies by not doing that, it probably won't last for long.

  9. CheesyTheClown

    Coding .NET and C# now because it is universal.

    I've laid down about 20,000 lines of code including and entire scripting engine and graphics layout engine and printing engine in C# and in a single Visual Studio solution I have Windows 7 using XAML, Windows 8 Store and Windows Phone using 95% code re-usage based on... yup XAML. I have it up and running on Windows 10 Universal using... you guessed it about 95% code reusage. I will port it to iOS soon (did some proof of concepts) and it will be 90% code reusage using Xamarin. I haven't looked yet, but based on the code I've written, I'm expecting 90% code reusage for Android phone, tablet and chromebook. I expect about 95% code reusuage from iOS and Windows 10 to Mac.

    Just for fun, I've considered doing a Linux version since I can do it with about 95% code reusage.

    What exactly is the problem? I mean honestly, if you actually are a programmer who should actually be doing your job, this stuff is frigging simple. The code I've written is a full CAD program. For UI code, I've written an abstraction layer that simplifies porting. Object oriented programming all about code reusage. I've worked on multiple 3 million+ line projects over the past 20 years and whether it's C#, C++, C, etc... as long as I have a compiler, cross platform is trivial.

    Step 0) Decide what unit testing framework to use and make sure all code is tested

    Step 1) Separate your logic from your UI

    Step 2) Abstract your platform code... like "Draw box on screen"

    Step 3) Code it for one platform with a focus on making sure you don't use the local OS services to code your core. Instead, use the abstraction.

    Step 4) Port to different platforms by porting the abstraction.layer and run tests to make sure that the code works on every platform as well as the first one.

    Step 5) Customize the UI heavily to make sure that an app for iOS looks like an app for iOS instead of an Android app.

    Step 1.5, 2.5, 3.5, 4.5, 5.5) Refactor, refactor, refactor, refactor

    This is called professional development. That's what we do. Only an absolute idiot would make one UI for all platforms.

    1. Zippy's Sausage Factory
      Facepalm

      Re: Coding .NET and C# now because it is universal.

      Because we all have time to write 20,000 lines of graphics library to write one simple app.

      That's called "a waste of my time". That's what it is. Why would you advocate writing your own version of Qt / swing / etc - that's what a cross platform Windows.Forms would be, and that's what people were asking for in UserVoice.

      1. CheesyTheClown

        Re: Coding .NET and C# now because it is universal.

        Most of the code is application specific and there's at most 1000 lines of platform abstraction. It took about a month to write this code and the corresponding unit tests as well as documentation.

        There doesn't exist a graphics library to do what I'm doing how I'm doing it in any language or platform... this is at lack of a better term "The business logic" of the application. I use the platform APIs for drawing and because I planned my code properly, the underlying graphics libraries are used efficiently on each platform.

        I certainly didn't write my own version of Swing or Qt... I've been there and done that a few times as well. It was fun and at the time necessary. I did however design my own object model for storing the data structure of my application in a generic method.

        There's absolutely no good reason to make the user interface code Qt, Swing or otherwise as generic in that sense. And besides, if you really really want that, then write your code in Swift with the Cocoa APIs and you'll have that since Microsoft is in fact implementing those... look at WinObjC... I have no idea why anyone would ever want that though.You still have to write a new user interface for each platform anyway... you can't code native platform interaction generically. It really doesn't matter if you're using XAML, Cocoa from Swift (or C#), Storyboards, etc... You still need to make a UI which is native to the platform or your application will either not pass the store requirements on the platform or if they do, they'll suck.

        You can however use a proper object model, view model and controller code and abstract as much of the common behavior as possible and in some cases do the "Qt or Swing" thing where there's no common behavior in existence. But really, this is what application development is about.

        Even if you consider code such as Visual Studio Code from Microsoft which is a single common codebase for nearly everything, Microsoft still does a massive amount of customization per platform. This is just how application development works and should work. On the other hand, if you aren't a good coder that knows how to plan a project properly, it might sound overly attractive to code once and deploy anywhere.

        1. Zippy's Sausage Factory

          Re: Coding .NET and C# now because it is universal.

          In which case I misinterpreted what you said - I was under the impression that not only you were advocating everyone write their own abstraction library and that yours was 20,000 lines of code. And as you've clarified, not only is it about 5% of that size, it's only as big as it is because what you're doing is probably an edge case. So my bad, and I apologise for any offence caused.

          Code once and deploy anywhere always sounds good in theory - it never works in practice, of course. The difference between the mobile and desktop paradigms - and Windows 8's astounding success* at unifying the two - is merely an example of that principle in action :)

          * Sarcasm alert

  10. dogged

    Oh just buy Xamarin, dammit

    it's not like it wasn't coming for a long, long time.

    Buy Xamarin, kick it until it uses Windows-compatible XAML and .NET Core (instead of the current kludge and mono) and roll it into Visual Studio.

    Most developers were half-expecting this at the /build/ event and for the fairly obvious reason that it makes sense. Instead MS keep dicking around buying email apps for Orlowski to complain about. Stupid.

  11. Anonymous Coward
    Anonymous Coward

    Is Xamarin the answer to anyone's dreams?

    I guess this is on-topic; does anyone else find Xamarin utterly unreliable on either Xamarin or Visual Studio?

    If Xamarin is the path Microsoft chooses, I hope they can get it rock solid, because it seems utterly infuriating from our experience. I am fairly certain they could come up with a better interpretation of things.

    When you abstract things to Xamarin and C#, you also seem to obfuscate any documentation or solutions to a problem you might see on Stackoverflow for example... which doesn't make for happy colleagues.

    Thankfully I largely just inhabit the same room as our Xamarin team, and can get on with regular .net development - so I clearly would like there to be a solution.

  12. mrtom84

    Your looking for the browser.

    Love it or loathe it, html and javascript is the nearest thing the world has to truely universal apps.

    1. bombastic bob Silver badge

      Re: Your looking for the browser.

      "Love it or loathe it, html and javascript is the nearest thing the world has to truely universal apps."

      you forgot Python with wxWidgets or some similar toolkit support.

      Now, THAT is universal! Fast? No, not really. But "universal" nonetheless. And probably faster/better than ".Not" and C-pound on a *BAD* day...

  13. Norman123

    Windows Platform wasting a lot of time

    As a Windows home user for over 25 years, every revision of the system involved a lot of waste of time as I had to learn to navigate in the "improved" but MS profitable systems. Why not preserve the same format with improved properties attached to the subsystems? I installed Win 10 but uninstalled it after one day as it messed up my printers, music, and created a mess for me. I don't mind paying for MS profiteering but I want them to make my life easier instead of wasting my time every time they need to make more $$$$ out of me. Don't turn your cash cows into Alices in the your Wonderland....

  14. waynec

    Universal apps would be a great thing, and Microsoft should be commended for going in that direction, but some of their efforts are not yet ready for prime time. Earlier this year, they announced Project Centennial, to support migration of Windows desktop apps to Store apps (and from there to universal apps), but we've since heard nothing.

    As for .NET Core, it's currently missing a host of APIs that any serious enterprise application would need. Perhaps they'll eventually implement these APIs, but I'm not holding my breath.

  15. Stimpy77

    I think the article misses the point of "Universal" and of the linked suggestion

    Microsoft has stated that Windows 10 is the final version of Windows, that any subsequent versions will be updates to the 10 platform. Therefore the "universal" semantic is appropriate because 10 is the not only long-term but permanent Windows platform for the company. Meanwhile, iOS and Android code compatibility (though not binary compatibility) is coming via the "Bridges" APIs, https://dev.windows.com/en-us/bridges

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like