Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It is exactly the failure of Microsoft and Apple to propose any meaningful cross-platform API. Both are fighting to increase vendor lock-in - it is in their best interests that apps written on Windows don't work on macOS/iOS and the other way round. Linux/OS folks themselves are unable to solve this problem on their own and it becomes a mouse-and-cat game.

The popularity of web apps helped to reduce the problem, but it still exists. Electron is only half a measure because the technology used is inefficient resource-wise and a platform optimized for the desktop would do the job better. If someone cared enough, they would allocate the necessary resources to minimize this problem (I don't believe solving it is effectively possible because of the complexity and bloat of current web technologies).



Microsoft has destroyed the Windows desktop singlehandedly on their own. Since Win8 and “Metro” they moved away from having consistent UI widgets like it was in Windows 2000 or XP but instead made the Windows desktop a Wild West if different UI paradigms. Even the ribbon introduced a new UI paradigm that wasn’t available to third party devs.

If even MS themselves doesn’t bother to be consistent then developers certainly won’t.

I am a long time Windows desktop dev but all my new projects are either web or Electron. I am done with the mess in Windows.


I'm in the same boat. I was asked recently to develop a small custom app for a library that would need to be maintained for decades. This left me scratching my head as to which GUI technology to choose to minimize the danger of it being broken/unsupported after 10 years. Paradoxically, I think Win32 might be the safest choice as MS can't really innovate (=break) too much here anymore (although I might underappreciate their skills in this regard).


Emacs Lisp would probably rank even higher.


Or DOS. You can run DOSBox on anything including a web browser.


Parent said GUI though.


You can run GUIs on DOS. A lot of DOS software had GUIs.


Yes. I would argue that it is precisely the obsession with cross-platform that has destroyed native desktop applications. If all you are offering with your native desktop framework is a dumbed-down experience, because it has to also run on tablets and phones and TVs and game consoles and smart refrigerators, then you quickly get to a place where there are few advantages in going native over shipping a webapp in a Chrome wrapper.

Windows 8 was a catastrophic failure, and Apple seems to be leaning into the same failed philosophy now.


It is not really "obsession", it is economics. There is a high cost with maintaining different apps for different platforms.


“and Apple seems to be leaning into the same failed philosophy now.”

I agree but when you look at their profits it seems MS and Apple are doing the right thing even if I don’t like it as a developer.


Well that's all well and good but it doesn't explain why even Mac OS devs are moving en masse to building for the web.


Mac devs have been complaining for a long time that Xcode and the entire developer experience sucks. It sucks (1) in the way that most native development sucks, and (2) an extra layer of suck on top of that.

The Mac platform also used to be very insulated; the culture meant that the prospect of creating an app or simple utility and selling it was viable much longer than it was on Windows, where the culture is that everything is either gratis-style free or warez-style free. The invasion of the Web means that Mac users are increasingly being conditioned to get things for free, too, so the viability of paid apps has taken a big hit. SaaS is the way to make money now.


Maybe they want their programs to be useable by non Mac users too?


SwiftUI keeps breaking stuff constantly.


I don't get this. I've used GTK, Qt, Tk and FLTK software in OSX, Windows and Linux. The rest is usually covered by standard libraries and third party libraries.

So I take it this approach is disqualified on your terms for not being meaningful, which raises the question about what "meaningful" means.

My own guess is that it's a matter of convenience of distribution: enter an URL and you can start using the app.


Isn’t it that most software written today has to target the web? So you have two distinct platforms to write to: web, and non-web. Even if Microsoft and Apple came up with a brilliant, singular API, that’s still one more API that has to be coded to. With solutions like Electron, you have a very fast time-to-market with a “desktop” app, and your engineering team only needs to target the web. Customers will only notice the fundamental issues with the solution after it’s too late (or they won’t care.)

Sadly, the solution seems very business-driven. The ROI threshold to making a desktop-native app is quite high.


Why do you have to target the web as a platform if you already have sufficient platform-native support in your application?


That's a good question. I can think of a handful of reasons, but I am sure there are more. 1) ease of use. It's much easier to tell a prospective customer a URL than instructions on how to download/install/run a local application (if they even have permission to do so.) 2) Ecosystem. If your customers are generating content that needs searching, sharing, or collaboration, it has to be on the web in some capacity. 3) (Unfortunately) Shiny object syndrome. Browser-based applications have an innate appeal that outmoded desktop applications lack.


None of those UI libs work on Android or iOS.


I think that's a huge part of it. Most of the users nowadays are using smartphones and tablets.


Qt does.


It is very niche, and again only if you go with C++. For most Apps that are not games, using C++ is probably overkill on mobile just so you can use Qt. And you will still have to come up with a mobile optimized UI, as a standard desktop UI layout will just not work on 5" screens.


https://wiki.qt.io/Language_Bindings

> And you will still have to come up with a mobile optimized UI, as a standard desktop UI layout will just not work on 5" screens.

No tool will magically solve this problem for you. Qt has excellent support for responsive design if that's how you'd propose to solve it.

And no, Qt is not very niche.


Qt has done a fantastic job in this space. It is also isn't cheap. It is only free for GPLv3 software.


I use Qt for anything cross-platform. The main problem is that C++ is not an easy language for UI developments. also consider the fact that C++ devs are paid higher that Java, JS or C# devs. Most other UI toolkits are really terrible for cross-platform development.


> GTK, Qt, Tk and FLTK

Aren't all of those C/C++? There's time and place for manually managing memory, figuring out UB and segfaults. If you're trying to render a frame full of AAA graphics in under 15 milliseconds, or go through a million requests a second, then I don't mind it. But if I'm just writing an email client...


> Aren't all of those C/C++?

No.

> If you're trying to render a frame full of AAA graphics in under 15 milliseconds

Irrelevant.

> But if I'm just writing an email client...

Use bindings.


I don't think that's the reason. Webapps got widespread when the Internet was still mostly consumed on the Desktop, which essentially meant Windows. The main reason in my opinion is ease of distribution: it has always been painful and full of friction for the end user on Windows, and the web made it much easier.

You can see how on mobile platforms, where app distribution is not a big problem, native applications are still doing well.


You certainly see that in business. My corporate customers don't want to install anything on the desktop other than Office (and I don't think they like that very much).

This isn't new, I remember talking to the CIO of a big bank twenty years ago about this.

On top of that users quite like software delivered through a browser as it allows them to bypass their IT department.

From the consumer side it's more about costs, people will tolerate all sorts of shit as long as it's free.


Web applications didn't see wide-spread use until after the release of the iPhone. Prior to that most applications were native or Java.


It has to do with mobile networks rolling out usable broadband (3G) that enabled people to be connected anywhere all the time, which coincided with the iPhone 3G release in 2008.

I still remember how awesome it was I could stream music sitting at a train station while browsing the internet.


Microsoft made .NET platform cross platform years ago but a UI has been missing. They have a cross platform UI project now too https://github.com/dotnet/maui


They almost always have a cross platform UI project going until they abandon it and start a new one :(


No, they always had a Windows-only UI project going until they abandon it and start a new one. Having a cross-platform UI project going until they abandon it and start a new one is something new under Satya.


Satya seems a true visionary and disrupter :)


I'm not sure he's a visionary. He's more into going with the flow, mimicking successful competitors. Amazon went big with AWS? Let's try to do the same! Google and FB are tracking everybody? We can do it, too! Apple is pushing updates on their mobile devices? We can do it on our desktops but in a way that makes everyone mad! All phone manufacturers add fluff to their devices? We can bundle adware, too! People love Linux? Let's add it to to Windows! They also like open source? Well, we can't buy that, but we can buy GitHub!

The list could go on but the point I doubt Nadella is a visionary, he's just following others. Not necessarily a bad thing for the company and its shareholders, it's a fairly safe approach. I miss the days when they actually had original ideas, like the Kinect.


I didn't even know maui existed. Pretty ambitious - unlike the Jetbrains initiative, this one is for desktop and mobile.


I don't know what you are talking about. Microsoft built a Linux compatible subsystem for Windows and also built (well, acquired) .NET VMs for OSX/Linux. It's trying hard to keep people on the desktop - any desktop.


You're kidding, right? WSL is not related to cross-platform GUIs we're talking about, and .NET Core doesn't support Windows Forms/WPF - and probably never will, for the reasons mentioned above.


That's not completely true, while WSL doesn't help Windows GUI apps to be more cross-platform, it does help Linux GUI apps to work on Windows[0]

So to refer back to the top comment we could say that Microsoft is proposing WSL as a cross-platform API for GUI apps.

[0] https://docs.microsoft.com/en-us/windows/wsl/tutorials/gui-a...


The real bonus are the TUI apps tho. No idea what Windows users did all the years without proper command line commands, now if they include a proper shell they could really make a dent in the Linux desktop stats


W11 only, sadly.


Hmm, you're right, I didn't see that part. It seems their original plans[0] have changed...

[0] https://devblogs.microsoft.com/commandline/the-initial-previ...


The parent's link? Maybe. But I guess this only means that W11 ships with an X server, right?

On Windows 10, you just need to install your own X server. I'm using VcXsrv with great success to use GUI software running on WSL1.


Ah, yes of course. I use it too :)


WSL lets people run their Linux apps with Linux GUIs on Windows. It makes Linux apps cross-platform, which makes sense if your business proposition is "literally all software runs on windows, and some software also runs on non-Windows. Choose wisely"

And, IIRC, .NET Core doesn't support WPF forms for legal/trademark reasons. But other MSFT supported .NET Forms libraries that happen to be API/feature compatible work on Windows/OSX/Linux/Android/iOS.


>.NET Core doesn't support Windows Forms/WPF

It does actually although you are correct in your general point.


Microsoft is also driving the development of React Native for Windows and MacOS.



That comparison is pretty weird. Electron is more extensible than JavaFX? How does that work? Browser engines are not exactly famous for their sophisticated API extensibility or advanced text/graphics APIs.


I love JetBrains products and their approach. If I had any interest in writing Java (or desktop) I would love to work there and be part of the mission.


I like their approach, too. Just by looking at this project GitHub page, one can clearly see the list of supported features and not yet working/planned, which is essentially all I need from such a project. Seems obvious, but very few projects realize this/care enough to make it crystal clear like JB did.


Apple shipped X11. It’s really just Microsoft.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: