Hacker News new | past | comments | ask | show | jobs | submit login

One word: Apple.

Preventing PWAs is detrimental to users and an abuse of their monopoly.




Its not sufficient of an explanation.

For desktop browsers there are also no application launch icons.

Probably has most to do with the limits of the UX of a phone. Pulling up a browser and typing in a url, hitting autocomplete is done in 2 seconds. On mobile everything is so much more painful, a lot more desire for one click wonder buttons


Wait, there is sort of speeddial/favorites tab in every browser, desktop and mobile. E.g. a food ordering webapp is my first “wonder button” in safari’s empty tab. I could even put it to the phone home screen (no need for that though).


Chrome has the ability to save sites as a desktop shortcut. It even prompts you to do so on some web apps, like Stadia, so you can use it like a more "normal" desktop app.

Safari on iOS can do this, too. You can pin a website to your home screen, which is something that I have done for PWAs.

It could have easily gone another way where this was the "normal" behavior of the mobile ecosystem.


You should read the article. To sum it up: the web beat desktop apps because traditional OS were not designed for a networked world.

The iPhone however was designed for a networked world so it didn't have all the limitations of desktop OS.

The web wasn't designed for a mobile world so it had a lot of limitations: hard to do a good UX, passwords to type on a tiny keyboard, no offline mode (or so complex to use that no dev do), URL vs app icons...


Only that's not how the world works.

The world works with power: Apple used their power to make strangle the entire idea of the web on mobile by putting a break on change. Why? Mobile web tech helps their competitors more than it helps them.

If Apple's own platform / APIs had had the same rate of change as they effectively forced on the mobile web, then they would be a decade behind Android.

This is exactly the same thing as Microsoft did in the 90s with productivity software. They had secret undocumented APIs which made Office a fantastic experience and non-office "meh".


If you look carefully you'll see this tactic all over: throw mud in your opponents eyes to slow their rate of change.

See: US banking (in the EU I can transfer cash, instantly, for free to a friend's bank account and have been able to do so for a decade), Fossil fuel vs Climate change, most commercial standard bodies. It's everywhere.


> US banking (in the EU I can transfer cash, instantly, for free to a friend's bank account and have been able to do so for a decade)

This one actually seems like a fault of the US government dragging its feet on making advancements on a nationwide protocol for transferring money and staying stuck on ACH. So much so that, that the biggest banks had to get together and create their own system 10 years ago:

https://en.wikipedia.org/wiki/Zelle_(payment_service)

> Launched in April 2011, clearXchange was originally owned by Bank of America, JPMorgan Chase, and Wells Fargo.

Supposedly, the US government is finally rolling out a proper system in 2023:

https://www.federalreserve.gov/paymentsystems/fednow_about.h...


  > Apple used their power to make strangle the entire idea of the web on mobile by putting a break on change. 
but this seems to neglect the fact that

  1. apple/jobs wanted web tech initially for apps
  2. native app devs were beating down the doors for access to native, not web apis


That was very very early on. Once they were big and Android came along the strategy was turned around.


Mobile Web is enough for like 90% of CRUD stuff, regardless of PWAs.

Yet, most business still go native due to the development experience, like not having to turn <div> magically into beautiful dropdown combo boxes with multiple selections via an HTML/CSS/JS soup, that don't feel quite right with the native ones.


I don’t think so - PWAs on Android are also usable at best.

It’s hard to twist the web into something it isn’t. So much effort goes into making the web do what native apps already do instead of trying to complement all that towards a better experience.


Apple is the reason. App store greed. We with our "design and virtue signalling" addiction helped a lot in creation of this monster. As far as I can remember, the real UI/UX innovation was killed fast. Palm/WebOS.


Is android native development still a thing?


It's always confusing when people say "native" on Android... you never know if they mean "not a web app" (SDK) or "machine code" (NDK). Do you mean the latter?


I'm pretty sure it's "not a web app" in most contexts, but that's an interesting point I hadn't thought of before.

What do you mean by "machine code" though? To me, the most native you can get is a Java/C++ app that uses Android APIs directly. Anything lower is systems development, something not generally possible for normal developers.


> What do you mean by "machine code" though? To me, the most native you can get is a Java/C++ app that uses Android APIs directly.

I mean like C/C++ (which compiles to machine code) and not Java (which compiles to bytecode).

Same as the distinction the terminology made on desktop: https://stackoverflow.com/a/855774


Android UI is implemented with Java libraries. If you want native Android L&F, you need to use those libraries. You can write your app with C++ and invoke those libraries via FFI, but that's extremely cumbersome way to develop and does not bring any advantages. Java is the native way to develop GUI apps for Android. And recently Java was replaced with Kotlin, so nowadays Kotlin is the native way to develop GUI apps for Android.

Just like C# is one of the native ways to make Windows applications.


> Just like C# is one of the native ways to make Windows applications.

Please do everyone a favor and, at least for the sake of desktop development, don't misuse the terminology like that if you want people to understand what you're saying. The entire reason ".NET Native" was developed was that C# did not produce "native" applications. Saying C# produces native Windows applications is going to confuse the heck out of everybody.


Someone is wrong on the Internet.

.NET has always supported AOT via NGEN, although it only supports dynamic linking and was optimized for fast startup of applications.

Windows 8 introduced the Bartok compiler used by Singularity, where applications would be pre-AOT compiled in the Windows store minus linking, with on-device linking happening on installation.

Windows 10, improved the later scenario with the introduction of .NET Native, slightly based on the Midori experience.

The new Windows 11 store is still fully based on .NET Native, as it makes use of WinUI 2.6.


> .NET has always supported AOT via NGEN

I didn't claim otherwise. But AOT != "native".

What makes something "native" is not merely the fact that you compile to machine code. It's one of the main features of native code but far from the only one. Again: there's a reason they came up with ".NET Native" and called it that despite the fact that NGen always did AOT. And there's a reason the Android NDK has an N, unlike its SDK. It actually means something beyond AOT.

You can go against the grain if you want and call them all native apps, telling people they're Wrong On The Internet, but you're just confusing people.


What makes an NGEN compiled WinForms .NET application not native on Windows?

Curious to find out, how those people distinguish it from an MFC/ATL or an Win32 one.


It's not just one thing. Just like what distinguishes a human from a chimpanzee isn't just 1 thing.

But see for example https://stackoverflow.com/a/855774

If you still don't like the terminology though, I'm not going to keep arguing. I didn't coin the term. You should go ask Microsoft why they didn't call C# native when NGen was already there. I'm just saying that terminology is already established and you're confusing people by using it differently.


That is one possible interpretation of the term, yes Microsoft does use native/managed to distinguish between environments with GC runtime and those without.

Which isn't what users talk about when arguing about native apps, they don't even know what a GC is.


> Which isn't what users talk about when arguing about native apps, they don't even know what a GC is.

Because I'm sure if you went and asked the vast majority of "users" what a "native app" is, you'd get a coherent answer instead of a blank stare.

Let's lay this matter to rest. You don't like the definition, I get it. It's fine.


Would you consider something that's not a web app, but built with a higher level framework like Flutter to be native in either sense?


Me? Personally I hate any definition that conflicts with the old one, but that ship sailed long ago.

Nowadays, my understanding is, if it's not loading a webpage off the internet, people call it "native". Doesn't matter what framework it uses to actually display things (even if it uses web technology).


Java compiles to machine code on Android, via JIT and AOT compilers.


I'm aware. Windows has NGen too. But that's not what makes people call Java or C# a native language, or apps based on those native apps.


Native is overloaded, however Java is the "native" language of the Android SDK, and on Windows unless one has a morbid pleasure to still use MFC, ATL, bare bones Win32, or use C++/WinRT like ATL is fashionable again, .NET UI toolkits will be the way to go.

Or are you going to argue that Visual Studio, SQL Server Management Studio, Microsoft Store, Microsoft Blend, Office AddIns, Power Automate Desktop aren't native?


> unless one has a morbid pleasure to still use MFC, ATL, bare bones Win32, or use C++/WinRT like ATL is fashionable again, .NET UI toolkits will be the way to go.

I'm not sure how the discussion turned from "native" to "the way to go".

I get the feeling like you're jumping all over HN trying to reply to me at every comment you find because... you took "not native" as some kind of insult to tools you like/consider superior?


Most of the time, I don't bother to read the author, so it is a matter of chance that those posts are yours.

I am jumping because the distinctions you are making aren't the ones that users care about.

So each one can go on their merry lives with their own dictionary version.


Native on Android, is what the native platform SDK offers as development experience when you install it on the computer.

So Java, Kotlin, C, C++ and Web.


I meant “not a web app”, so both, I guess.


I've only ever seen the NDK used for games


and all the packers, protectors and obfuscators that are sold as "must have"


Usually people that buy those never heard of IDA Pro and Hex-Rays.


Yes, very much so.




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

Search: