10 ms·
The Web Is Eating the Desktop (2017)
- rogerkirkness 5y agoI've been using a Chrome OS laptop to run a business, including developing software. No issues.
- pottertheotter 5y agoThis intrigues me, mostly because my mom works for Google and that's all she has for work and it looks painful to me. Granted, I've not used a Chrome OS laptop, but I greatly prefer a desktop app to a web app. And I don't think I could get by having to use Google Docs instead of Microsoft Office. I've tried to do that on my computer and really disliked the experience. Also, what does R, J, and M mean in your library spreadsheet?
- rogerkirkness 5y agoI think it's valid to like desktop apps, not saying it should be the only option, just that it can be done quite painlessly. It's family names in our family :)
- imbnwa 5y agoWhat's the development workflow/environment?
- rogerkirkness 5y agoVSCode running on the Linux container thing.
- zach_garwood 5y ago> the Linux container thing I think "Linux Container Thing" is actually a better name than "Windows Subsystem for Linux."
- s15624 5y agoNot only the desktop. React Native web should enable a singular code base for mobile and desktop.
- joeldo 5y agoShared maybe, but the view layer is quite different between react native and regular react on the Web.
- The_rationalist 5y agoAnd it is completely shared with ionic capacitor
- OrvalWintermute 5y agoI don't know how well thought this article is, due to a number of use-cases where desktop apps dominate (high performance, GPU, extreme latency sensitivity), and I don't see that changing. I think we are more likely to see some stratification between different types of apps.
- overgard 5y agoI think this is probably true, but I kind of hate it. It's such a staggering waste of computing resources. I don't know, maybe we can get to the point where these apps that include an entire browser are highly optimized but it's still kinda nuts.
- lubujackson 5y agoRecognize this is a stepping stone toward a better experience. Electron apps are slow, but eventually MS or Apple will decide to launch some sort of "integrated web desktop API" that plays well with Electron (and eventually eats its lunch). Seeing the speed boost, the other desktop OSes will do the same and suddenly we are all coding for the web for everything while the guts are rearranged dramatically beneath us. This happens over and over in tech - like setting up a soundcard in 1995. First we had to futz with config files and IRQ conflicts and then things were Made Nice with "Plug and Play" - this is the step we are at now: Electron makes stuff work without all the futzing. It doesn't matter if it is slower or worse, it is winning and things will move underneath to make it make sense. The step that next is the not caring: now sound cards just come baked in to the motherboard, hardware conflicts can be managed in software, dynamically resolved or who knows - I don't have to think about it any more. Soon you won't have to worry about performance on desktops because it will be an OS problem to make arbitrary web code run faster on desktops, not developers.
- overgard 5y agoArguably this exists right now, at least I know Microsoft kind of has it, but a lot of the web is always going to inherently be more expensive (much higher RAM usage, 3 stage JITs, etc)
- sebmellen 5y agoOTOH, JavaScript is a poster child for what optimization can do on a language level. If one were to propose Node.js to a developer 10 years ago, it probably would’ve been seen as a fantasy, but today many production apps run in Node and actually work. I suspect that with WASM and further development of the Java/Typescript ecosystem, we’ll see highly performant web apps running complex loads in the next 5 years (for better or worse).
- mastazi 5y agoWhy is the post focusing exclusively on desktop? > The last five applications I installed are Electron apps. The last few companies I've worked at made their mobile apps using React Native[1]. > In ten years nearly every desktop app that isn't over ten years old will be a progressive web app or a containerized (e.g. Electron) web app. Some of the apps I have installed on my phone are progressive apps, one of those decided to promote their PWA over App Store / Play Store because they didn't want to share revenue with Apple/Google, the revenue issues with mobile stores have been in the news a lot recently, I wouldn't be surprised if this became more common in the future. [1] worth noting I'm not a mobile dev so my own skillset doesn't have anything to do with how those companies make their apps.
- jitl 5y agoReact Native is much more native than Electron, though. There’s no “web” involved in React Native. It just happens that the language (JavaScript) is also used by the web platform.
- mastazi 5y agoYes, this is a fair point. Just worth noting that it's not just JavaScript that makes it web-developer-friendly though, it's also its HTML-like templating system and its CSS-like styling system.
- sciprojguy 5y agoFWIW, the styling system mainly talks to the parameterized native components that the build system pulls down from GitHub. You can do the same kind of thing in SwiftUI using View Modifiers.
- MattGaiser 5y agoWhen there was a single platform (Windows), native made sense as either way it was one codebase. You now need to support at least two desktop platforms and some computers now only support web stuff (Chromebooks). The only argument for native is if resources are such that make a web app impractical for most people (high performance GPU intensive stiff). Otherwise, sure, Electron isn't that efficient and takes up relatively a lot of space, but we are at the point where space and RAM are abundant, so it is not a limiting factor for most people.
- ahartmetz 5y agoWith a cross-platform native toolkit, there is also one codebase.
- sebmellen 5y agoBut what cross-platform native toolkits really work and are easy to get started with? I would love to see some sort of CSS -> native GUI UI kit, or maybe something like what Sublime Text has if it were open-sourced.
- ahartmetz 5y agoI may be biased, but I think Qt is pretty great :) It's C++ though. Some people use PyQt. It's popular in some niches, e.g high end VFX packages, especially plugins.
- sebmellen 5y agoMaybe I've just lived in the webdev world too long and been spoiled by CSS, but making layouts work and fit together is so horribly confounding in Qt and other such frameworks that it makes me want to bash my head against the wall (and I do that enough with CSS). Also, Qt's licensing model is sub-optimal IMO.
- pjmlp 5y agoThere was never a single platform, unless we are talking about 1950's in computing.
- armchairhacker 5y ago> I took the post offline after about a week because I received among other things DDOS attacks and frothing at the mouth e-mails including one sent from a throwaway e-mail that actually made threats of physical violence against myself and my family. What is wrong with people? It’s not like he wants crappy Electron w/Javascript to replace desktop with all its flaws! He acknowledges the main issues for webapps and proposes solutions. OP, if you’re reading this, I’m sorry you had to go through that. EDIT: misread. Still doesn’t justify any of the hate.
- alkonaut 5y agoI’m not sure one will eat the other. The two will converge. The technologies typical of desktop apps like GPU acceleration, type safe languages, AoT compilation, multithreading etc - all of those things have rather recently moved from being somewhat or entirely desktop exclusive, to being on the web. With novel means of deploying sandboxed apps the line will continue to blur.
- madeofpalk 5y agoThe web is not eating the desktop. Instead, cross platform development is "eating" the desktop.
- hn_throwaway_99 5y agoShould have a [2017] appended to the title. When I first saw the title I thought "You're a bit late", but when I clicked on the article and saw it was from Dec. 2017 I thought this is just around the time I felt like that tipping point was reached.
- Barrin92 5y agovery likely, if you take a sort of long historical view then it's I think intuitive to predict that the ark of computing bends towards greater and greater connectivity, and the web is the basic infrastructure for that. Hardware and operating systems just become details and everyone hooks into the matrix pretty much. The piece is from 2017 but it's pretty prescient when it recommends web based interfaces as a way for linux to leapfrog into that world. Reminds me of Flutter being adopted by Ubuntu recently which does very well as a web/desktop/mobile platform.
- hrififjkrjr 5y agoThe usual retort is "people use Electron because they only know web technologies". No, it's not only that. I've been programming GUI apps for 30 years, going through TurboVision, Delphi, MFC, WinForms, wxWidgets, Qt, WPF, native Android/iPhone, and probably 2 more I forgot about. They all suck terribly when compared to React/Vue/HTML/CSS. Creating a GUI app with web tech it's just so much more productive. It's like comparing the productivity of Python to C++. Sure, you can't write an audio editor in Python/Electron, but for 90% of GUI apps it makes no sense to use native frameworks. They are as productive and expressive as writing in assembly.
- VoodooJuJu 5y agoCompletely agree. I'm developing a desktop app with Qt and while the API is pretty nice for most of the logic, there's just so much friction when it comes to the GUI design, I feel like it's working against me. Compared to designing in HTML/CSS, it's night and day.
- rcurry 5y agoCompletely agree with you, hardcore XAML developer and I walked away for React and Tailwind CSS. I will never write another desktop app again.
- the_only_law 5y agoI wanted to do a mockup of a UI a few moth back. It was moderately complex, I suppose. And I was just trying to find something that would let me build out a shell. I started on Linux and I found most of the UI frameworks to be quite disappointed and a bit involved for what I was wanting to do. I think I was splaying with Glade and then QT creator and realizing just how much boilerplate code I'd have to write to get things to look how I wanted. I then ran over to Windows, because I recall having done similar things with WPF. I instantly recalled why I hated it though, as doing any custom styling on components is a miserable mess of boilerplate XML and overriding values I have little knowledge of and seem not related or tangentially related to what I was styling. I was able to create what I wanted relatively easily with a mix of HTML and CSS though. I think something like WPF but with CSS-like styling would be nice.
- MeinBlutIstBlau 5y agoSince the gui-fication of everything, nothing has made making a gui easier than web apps. The reason I like it is because of the cross platform capabilities. I don't have to worry about compiling for different platforms. I don't need to worry about platform specific issues. It's the ultimate form of portable code honestly nowadays.
- coffeefirst 5y agoRight. Web for UI is fine for a lot of things. The bigger concern to me is losing offline support and control of the data as it all moves into the cloud.
- no_time 5y ago>The reason I like it is because of the cross platform capabilities. Anal sex is "cross platform" too. It doesn't make it the superior choice in a large majority of cases.
- robertoandred 5y agoElectron apps are simply awful. They ignore all platform conventions.
- ridiculous_fish 5y agoElectron is a large step backwards in usability and software quality. Spotify has its own context menus which don't support arrow keys or type select. GitHub Desktop has a "Select All" which doesn't actually Select All, only what's been paged in. VSCode doesn't confirm key equivalents by highlighting the menu bar. All of them blink the cursor even without typing focus. All of them steal focus at launch. Our UI vocabulary is shrinking. Undo support used to be table stakes, but now I'm surprised when it works. The web is not only eating the desktop: it's eating what it means to be an expert computer user.
- Pxtl 5y agoEven just "what elements on the screen are clickable" would be a huge improvement, not to mention visual feedback that you've clicked/touched such an element. At least loading indicators are back in fashion, the brief period where it was assumed everything would be instant and so they binned visual feedback that the user is awaiting something is over.
- gobookdev 5y agoVS Code is my favourite software of all time, no need to use the menu bar with the command pallete and the excellent custom keybinds. It completely gets out of the way it is still more feature rich than any IDE through extensions. A blinking cursor is a small price to pay, I haven't even noticed that. I know it's not meant to be good being written in mostly TypeScript, but it just is.
- ridiculous_fish 5y agoAn example of why it matters: hit command-S to save your file. Native apps confirm the save by highlighting the menu bar until the save is complete. VSCode does not indicate to the user when the save is complete. I've had saves require 15+ seconds, and they are not atomic, so you must be careful to not use the file (compile, git, etc) until the save is finished, which is hard to know. I've personally lost data this way. I agree that command palette is great and is clearly a point of convergence among new apps. I wish Apple would embrace it!
- Animats 5y agoI dunno. The trouble with web apps is that they keep changing, usually to the detriment of the user. The first one is always free. Then they start charging. Or they add ads. Or they use your info for marketing.
- Mountain_Skies 5y agoHow does security factor into this? Seems like we keep exposing more and more data to networks while at the same time collecting more and more data on everyone. It doesn't seem like a great combination for those who have to protect this data nor for those who will be the most harmed if it gets out (the folks the data is about, not the companies that leaked it).
- bernardv 5y agoThe webification of Desktop app GUI’s is the result of a total disregard for usability .. from a user’s point-of-view (not a developer’s point-of-view of what users >should< want). Most young devs I speak to stare blankly at me when I enquire about GUI standards and usability best-practices. They are now foreign concepts to a lot of developers. As a user, I don’t care about the dev’s challenge of supporting multiple OS’s. These best experience comes when I load up a new application and can intuitively navigate it without the mental overload required trying to decipher a GUI layout which doesn’t adhere to any standard. Web frameworks are great, but have their limitations. The blame is not so much with the new generations of devs, but with the likes of Microsoft and Apple who have ditched standards and are encouraging the Desktop to turn into the wild-west. Or something like that.
- manigandham 5y agoI agree that there's a lot of form-over-function and bad usability decisions in apps but that's completely separate from the underlying frameworks and distribution technology. You can have great webapps and terrible native apps. Also when it comes to usability, users prefer having a consistent UI over a "native" UI, especially as the number of devices have exploded between laptops, phones and tablets. Slack looks and works the same everywhere, and that's one of it's advantages.
- bernardv 5y agoTrue, the user doesn’t necessarily know a ‘native’ UI from a familiar/consistent UI. The two major OS’s used to be the promoters of well thought-out standards and consistency. The two went hand-in-hand.
- kitsunesoba 5y ago> I agree that there's a lot of form-over-function and bad usability decisions in apps but that's completely separate from the underlying frameworks and distribution technology. You can have great webapps and terrible native apps. I may be wrong in this but I feel that lot of the push for Electron and the like is for the styling capabilities it brings compared to native toolkits. In the case of many Electron apps, especially simpler ones, maintaining something in Qt or even WPF/AppKit/etc wouldn't be a challenge, as long as the dev is willing to use standard widgets. An inordinate amount of energy and resources has been spent on turning apps into an arm of branding/marketing. > Also when it comes to usability, users prefer having a consistent UI over a "native" UI, especially as the number of devices have exploded between laptops, phones and tablets. Slack looks and works the same everywhere, and that's one of it's advantages. Slack is a bit of a funny example, that's one app where I'd greatly prefer to run the iOS app on desktop if I could. The web/electron version is a mess.
- HeyZuess 5y agoThe benefits of web based apps in the majority of cases I would say far outweigh any other issues. Right now I am working on a side project in Flutter, it is in the very early stages but the ability to target multiple platforms, web, multiple desktop environments, multiple mobile platforms from a fairly singular code base is rather interesting. This makes good commercial sense, in practical thinking speeds up development and release. Yep issues may arise. I would not hesitate to say that for many users the average users that web based apps, either browser based or electron or whatever are suitable in a lot of cases. There are some cases where this does not make sense currently, like computational (although), video/audio editing, etc. However look at tools like Google Colab where machine learning is being pushed server side because of the power of 3rd party infrastructure. The web just makes sense in a lot of cases. Ease of development, maintainability, cost, UI, accessibility (availability).
- Zetaphor 5y agoI've been saying a a version of this (the browser will eat the OS) for a few years now, really as soon as I heard about WASM. Once the executives learn that they can deliver binary blobs through the browser, that's the end game for the current distribution model. Piracy will be crippled at the knees and everything will become SaaS. Microsoft has signaled towards this direction when they talked about 10 being the last version of the OS, and the Office suite slowly porting more features to Office 365. Have you seen how aggressive the OneDrive nags have become recently? I fear for a world where PC's more closely resemble Chromebooks than the traditional offline first binary model of today. I can see the benefits this could bring to an end user, but I personally feel the price of freedom and privacy is too high.
- beckingz 5y agoWindows 11 builds are already leaking.
- TingPing 5y agoIt was announced and released (as an insiders update).
- paulryanrogers 5y ago> Microsoft has signaled towards this direction when they talked about 10 being the last version of the OS,... Apparently they never said this, though didn't deny it either. Now with Windows 11 it would seem they are back to selling new OS software.
- HKH2 5y ago> In ten years nearly every desktop app that isn't over ten years old will be a progressive web app or a containerized (e.g. Electron) web app. What proportion of desktop apps are computer games?
- darepublic 5y agoI love JavaScript
- mikewarot 5y agoThe main advantage of writing a program instead of an app is that you can utilize all of the power of the underlying operating system to give the user an experience that is fast, user friendly, and efficient. If everyone is willing to throw that away, say goodbye to general purpose computing, and say welcome to your new App Store Overlords. The last GUI program I wrote in Lazarus worked out to a 24 megabyte executable, because I left the debug information in. It used MySQL and did a lot of computing with gear information. I didn't have to sign the code, or ask ANYONE's permission to deploy it. I'm not giving up general purpose computing, neither should you.
- HeyZuess 5y ago> The last GUI program I wrote in Lazarus worked out to a 24 megabyte executable, because I left the debug information in. It used MySQL and did a lot of computing with gear information. I didn't have to sign the code, or ask ANYONE's permission to deploy it. I agree with this in some context, I bought the device, I own it and I should be able to use it as I see fit. However not all uses are equal. Take my elderly mother, her needs are much different and in fact centralized distribution channels, app reviews, signing etc are all mechanisms which benefit her.
- mikewarot 5y agoMy limited experience with App stores is that there are usually a large number of "fake" apps that are indistinguishable from the real thing. Has this been addressed on the platforms you're familiar with?
- HeyZuess 5y agoThat's a fair comment. But I believe the number of these is probably a small percentage given the size of the stores (at least for Apple). At least in the case of my mother, she has somewhere to go to when there is a problem. I am not discounting the personal computer as a utility, but app stores and restrictions for some are not a hinderance either. With a mac (I am not sure about windows, I gather with ARM it is not possible), the ability to be in a hybrid mode suits most cases. A mobile device at least from an Apple perspective is not a general computing device. Android on the other hand is more general purpose. But even with Apple's case there are ways to deploy your own app to your own device. At least in the desktop space there is a choice, and it's not bad thing.
- ryeguy_24 5y agoIf the title of this post is true, I just really hope there is something better than CSS in the future.
- feifan 5y agoI'm early in the tinkering/prototyping phase of a developer tool (not a text editor) that is native AppKit, and it'll stay that way if/when I release it. I actually find myself a lot more productive (i.e. can build a given feature faster) with Xcode+Swift+AppKit than VSCode+Typescript+React+Electron[0], and the near-unanimous disdain for Electron-based apps here gives me a lot of confidence that being a truly native app might actually be its own selling point. [^0]: I learned to program in the early iOS days, spending 3–4 years tinkering around before moving to web dev for the past ~7 years. This is my first project using Swift.
- perryizgr8 5y agoEven though electron apps are strange and quirky compared to native apps, I am thankful they are being made. The other option is what Google is doing. No native apps at all. Have a chrome tab open for everything. Chat, Gmail, calender, meet, YouTube music. Evrything in its own tab, no apps for any platform. Fuck that.
- kumarvvr 5y agoI always thought that deploying web apps as desktop apps is a great thing to do. As in, not bunch it up into electron, but using shell scripting to start a local only web server and send a command to the OS to open a localhost page. The advantages are that you don't need bloated software to do stuff, you have the full power of the OS, because you have a local webserver running, you have access to the file system, etc, you have the choice to use any programming language and framework (not be limited to JS), etc. I keep thinking why people don't go this way. Are there any glaring mistakes to this approach I am unable to see?
- ferdowsi 5y agoMost consumers don't want anything to do with shell scripting or npm install.
- kumarvvr 5y agoThey don't have to do that. You can have a tiny OS specific program that takes care of the starting part and hide the terminal window and other stuff from the user and simply open a web page. Or, even a full web browser view embedded inside a custom window. (If users expect a non-browser UI)
- nooorofe 5y agoAlmost nobody argues that Web application is easier option for developer. As a user I don't want 500M program to do the same what 30M program did before. It is a real example my company is replacing WebEx with MS Teams. And it is not a single program, more and more like those. Electron is "bloated software". Usability is another issue: web UI elements appears from nowhere, there is no single way to find where is settings button...
- seabird 5y agoI think this take is right in the sense that most consumer-oriented shitware and business CRUD programs are going to be written as web apps from here on out, but I don't really buy that it will completely supplant native software. If you're reading this site, you're probably in tune with the latest hype cycles, and see the world in that lens. In the same vein as the Dark Matter Developer post that occasionally pops up on here, most of the world's software is Dark Matter Software. Mountains of native software quietly runs the world, completely oblivious to the churn we're discussing. Replacing their functionality with a webapp is either impossible or just not worth it.
- akmittal 5y agoI really wish flutter to succeed on Desktop. It checks most of the points. 1. Modern reactive API like React 2. Better rendering performance than electron 3. Interoperable API between web/mobile/desktop
- jenkstom 5y ago"Web" desktop software adds layers of abstraction and complexity to poorly emulate functionality that already exists in order to decrease the cognitive load of programmers learning paradigms they aren't familiar with. It's less about everything looking like a nail when you only know how to use a hammer, and more about not realizing that there's a better tool for the job. One that is less prone to errors and actually easier to learn to use. That's fine, though. My plan for retirement is to make millions supporting desktop apps that can't be replaced because the "web for desktop" programmers have a ceiling on the level of app complexity they can handle. Line of business apps require 1 to 2 orders of magnitude more effort and so the things written before that paradigm are not economically feasible to replace. If you thought knowing COBOL in 1999 was profitable, just wait 20 years until only a few old-timers know how to maintain the millions of custom WinForms or VB apps that make businesses work.