As an aside, I do still think that if a cross-platform application framework that were built from the ground-up for secure Internet-delivered application use had ever materialized in a robust way, we would probably be in a better place as an industry. But, that didn't happen, and it certainly wasn't for lack of trying - see Java Applets/Web Start/JavaFX, Silverlight, and of course the elephant in the room Flash / Flex.
Instead, HTML evolved into dynamic HTML / "the DOM" / HTML5, and each layer of abstraction built there was "good enough" to dethrone all challengers - in no small part due to, again, people heeding the advice of the OP quote and not implementing browser-locked software.
People say Flash was bloated but try running Slack on 2008-era hardware and let me know how it goes. And there’s no reason Flash couldn’t have been adapted to use responsive breakpoints and such for mobile friendliness.
And not coincidentally, html5 banner ads will do the same thing on a G4/G5 today in TenFourFox, if you disable the built-in adblocker.
Which is to day, I actually think modern websites are much heavier. What changed is the hardware.
Java or single operating system applications were the alternative. Where would we be today if you couldn't swap between Mac and Windows laptops -- or worse, had to have both -- because you depended on applications that had no common operating system?
The reason we can use linux as a desktop is because of web applications. Now, it's possible that we could have ended up with Web Start or some alternative, but we didn't.
Even today, cross-platform applications are terrible or expensive or both. Even today, it's a giant pain to write cross-platform apps in anything but C or C++. (QT's documentation is not great for the alternatives IMO, and you end up needing to understand C++ anyway.)
If we want to get back to this, we need a better option. It turns out that nobody is willing to put in the effort when we already have web applications.
Worse is better.
Sadly here we are now with bigger computers, better performing JVMs, great Java dev tools, and still losing to the browser due to massive inertia.
For complex desktop apps I don't really think Java was a viable option until the 1.3 release in 2000 (from memory). You also always had that problem that you couldn't guarantee what version of Java somebody would have installed so you'd have to bundle whatever JRE version you needed into the installer. Deployment was always a challenge.
In the browser Java never really got past 1.1 because Sun and Microsoft fell out so you had to install a separate plugin, which almost nobody did, or just live within the restrictions of AWT.
Couple this with the fact that, as you've pointed out, Java Web Start was so late to the party and it's easy to see why it didn't do better, either on the desktop or in the browser.
Until Android came along I really thought Java was a dying technology platform. Obviously since then its fortunes have significantly improved.
Although what is interesting is that with the Java solutions, it was the user who felt the pain where developers had a decent experience. As the web platform has evolved, users have avoided most of the issues and the pain has been experienced by developers. This would go a long way to explaining why users have never had it so good as they have right now and every developer I know is trying to figure out how to get out of the industry, or at least get out of web dev.
Ever tried to use HP ILO's Remote Console via Web Start? (For additional nerd points, try doing that with Apple M1 machine). Compared to that, the HTML5 version just works.
I recall back in the 2000s there being a few Java apps for macOS that used Cocoa UIs via the Cocoa-Java bridge that used to exist. These tended to be embraced almost as readily by users as full-native Mac apps, and I think that was largely because these apps tended to start up more quickly and fit into the user's desktop better, removing those two barriers to adoption.
Not really - you could write cross-platform GUI applications from a single code base in 1996 if you wanted to without using Java. It was unpleasant, but it was absolutely possible.
>Where would we be today if you couldn't swap between Mac and Windows laptops -- or worse, had to have both -- because you depended on applications that had no common operating system?
Those days are still here, depending on the application.
>The reason we can use linux as a desktop is because of web applications.
I wouldn't say that's the reason. Certainly a reason, but not the definitive one.
There are still cross-platform applications from a single code base. This is actually easier due to better cross-platform toolkits that were developed and would have continued development even if webapps hadn't become a thing.
>Even today, it's a giant pain to write cross-platform apps in anything but C or C++
Python and Java are relatively painless in this regard.
>It turns out that nobody is willing to put in the effort when we already have web applications.
Web applications certainly do have the advantage from a monetization, time to market, and network effect standpoint, no doubt.
Right - as seen by Netscape. We can also speak about codeweavers and others we have, but in '96, those were out of reach by all but the largest applications. (Pagemaker, word, etc.) However, the honest truth is that web apps were an order of magnitude cheaper for anything that wasn't desktop-heavy in 1996.
Again, worse is better.
> Python and Java are relatively painless in this regard.
Does your user have the right version of python? Are you bundling python with your application? I haven't worked with pyinstaller - it might be better today, but
And as far as writing python gui applications... Tkinter and WxPython are ugly. PyQt and PyGtk, last I looked at it, was painful and effectively meant knowing C++, and Qt licensing from non-oss is rough. Jython is punting the java problem above. In what world is this not painless?
I wrote a JavaFX app just for myself a bit back because I didn't want the overhead of Electron for my simple app. The experience in bundling it for each was not straightforward, especially with post Java 9. Jpackage and jlink and graalvm exist today, but the work around them are not as straightforward as getting a webapp up and running.
The experience does not, by its very nature, have to be worse than web applications, but we've had two orders of magnitude in engineering effort to make the web application developer experience better. In 1996, even with as small as the internet was at that point, enterprise application deployment was so painful that web applications were a giant competitive advantage.
Is this a form of denialism by hardcore "I-Hate-Javascript"ers? I would like to add that I absolutely hate the subset of modern websites that choose to be slow, but I think the parent is completely right. If we keep making it hard to use useful applications across platforms, then we're going to continue to see pushes toward the lowest common denominator that consumer computers can run. Yes, yes, I know techies like you and I believe installing stuff is trivial if you spend even just a little amount of time, but _this doesn't matter to average users_
It's a nightmare even installing Python, Ruby on Rails packages properly without juggling a million virtual environments, and those are supposed to be tools that you can run with a single CLI command and it gives you debugging information if things go wrong. It's a bit much to think that average users can survive without any of the tools or knowledge we have, being locked in a stupid GUI, and at the rate that we encounter defective software (seems like I encounter bugs more frequently as time goes on).
Now we are definitely going to add ARM complexity into the mix because what Apple pushed (M1) is just too good and everyone else is jumping on board for it
Regarding the comment about consumer-Linux, I feel less strongly on your point about web applications being the killer reason why Linux desktop users exist. Anyone using Linux desktop is almost certainly a tech-hacker to begin with and isn't necessarily tied to web applications as their go-to reason, but it certainly helps surviving with it. There are tons of reasons to use Linux desktop with no relation to web, but for market share, it's going to need consumer applications bordering on exclusivity that makes Linux first-priority and dumps support for macOS/Windows. Many Windows users don't want to switch to macOS or Linux because of gaming
Windows games kept me tied to the platform until my life became more focused on software. I only left Windows entirely after I learned that programming was a first-class citizen on Linux and macOS. Yes, you can program on Windows, but making software and using other people's software is more enjoyable elsewhere. So to wrap up this example, what can we learn about this? Well I knew life/job functions would be easier if I replaced Windows, but me doing software is coincidental. Give people a reason to use Linux. Make their lives easier, somehow, and make it clear that it will only happen if they leave their current platform. Otherwise you start coming up with systems like Windows Subsystem for Linux which... I'm not entirely sure why it exists.
I think the oft-repeated ire for modern web does not add anything at this point without understanding that there are good reasons people prefer to use web applications
Or, rather, web applications /are/ the common, universal cross-platform applications that we theorized, just that it arrived in less ideal ways
Point of fact: pg, the founder of HN endorsed downvoting for disagreement much to my chagrin.
Another option is to simply use distro packages. Users of good distros who use distro packages have software that's vetted built from source independently, and compatible with the rest of the system.
I do.
> AFAIK there still aren’t many quick provisioning tools for e.g. VMWare
I use VirtualBox. I boot just about any Linux distribution's live Desktop image without any hard drive attached (so, ramdisk only). Then curl a script to download and install any dependencies. After a few minutes I'm off to the races.
What? I made my own script. I don't need to mount any ISO.
> you risk losing all of your application state if the machine crashes since there is no storage
That's a feature given that apps these days insist on being in a browser with cloud storage, there's no loss here.
> Why don't we have something like Vagrant where you can quickly provision a VM from the command line following a template?
That'd be great, actually. I'd do it if I knew Vagrant better. The biggest blocker for me using Vagrant is that it uses Ruby. Give me Vagrant in something like Bash instead. Or like docker-compose.
Web Browsers really make poor client application runtimes for all but the most basic of things. ActiveX is a security nightmare and counter to making cross-platform applications. The web is a constantly changing and evolving standard separate from Microsoft or any specific operating system, as such implementing an application for just one specific browser and version with no intent to keep it updated is just asking for disaster. Tying local help files or other local content to a "live" web browser that may change in functionality is a bad idea.
But, nobody ever listened to anything I have to say."
Narrator: And nobody listened to anything he said.