16 ms·
Goodbye, Native Apps
- juststeve 6y agoOr native apps will go through a revival due to new languages, compiler optimizations and access to intrinsics and C libraries.
- karmakaze 6y agoTechnology still matters. It's not native vs not-native, there are many points along this scale. An app written in Swift on an iPhone should run faster than a similar app in Java on Android. If they run about the same, remember that the iPhone can do it with less memory and battery consumption. The Java Android app is more native than a React-Native app executing js.
- juststeve 6y agoyep, so the goal should be to compile everything down to light binary images the first time, and not require mobile devices work it all out at runtime.
- pjmlp 6y agoModern Android versions have multiple tiers. Interpreter written in Assembly for fast startup, if the application was never executed. Followed by JIT compilation to native code and when the device is idle, the PGO data collected by the JIT is used to produce a binary for direct native execution. As of Android 10 those PGO files are uploaded to the stores and then if a similar device installs the application, they will get the PGO data as well and thus achieve a relatively fast result for their initial compilation.
- peatmoss 6y agoAs an avowed skeptic of all things deep learning, I do wonder if there is a role for AI generated native code from some form of psuedocode. I know that a lot of old school code used very little memory due to everything sharing one set of libraries. I wonder if in the future, “installing an application” could be flipping a bit in a registry and your device being delivered a highly optimized monolithic system image.
- juststeve 6y ago> I do wonder if there is a role for AI generated native code from some form of psuedocode. I think that's pretty much what a good compiler is meant to do? smaller binary images would be amazing though, especially when OS dependencies are required
- njhaveri 6y agoAs a developer of a native Mac email client, I sincerely hope that this is true. At least in the Apple ecosystem, there are new technologies like SwiftUI and Mac Catalyst that should make this easier, particularly for the army of iOS developers looking to bring apps to the Mac. Before starting my app, I did briefly consider going the cross-platform route, and I realize that it's possible to build a decent app that way. But personally, I could always tell when I used one. Little things like swipe gestures and drag and drop didn't quite work right. The extra polish, consistency, and speed of going native is so nice for things you use all day every day. With the shift to remote work, people might notice this extra 5-10% of polish more than they did a year ago.
- emodendroket 6y agoIt's a double-edged sword. I like that no matter what OS I'm using I can set up IntelliJ to work exactly the same, down to non-native keymaps.
- saagarjha 6y agoI am unsure we're going to see a performance increase there; nobody has really made the highest performance languages faster by more than an order of magnitude in the last couple decades.
- mikewarot 6y agoI have Lazarus up and running... it's currently taking 32 Megabytes of RAM. It compiles in the blink of an eye, has one of the best possible 2 way GUI builders in the open source world, and I can reach back 30 years into the libraries I wrote in the days of Turbo Pascal 7/MS-DOS and pretty much use them intact. It amazes me how many people went with the .NET bloatware and all that follows it. Of course, 95% of programmers out there are newer than me and don't have knowledge of this type of efficiency to compare against.
- pjmlp 6y agoYou have to thank Borland's management for that. Delphi and C++ Builder are still around, but now only some lucky enterprise employees get to play with them. .NET Native and C++/CX were finally shaping up to be Microsoft's proper version of what .NET and Visual C++ should have been all along. However they are the most recent victims of the whole Reunion reboot, .NET Native now has uncertain future, while C++/CX got replaced by C++/WinRT with a tooling at the same level as doing C++ ATL 2.0 in 2000. Still, there is a certain guarantee of the underlying platform and respective languages being around. Borland mismanagement was my hard lesson to only use tools from platform vendors. Not only did they decide to leave the indie developers, they were always late providing bindings to Microsoft SDKs.
- vintagedave 6y agoAt least there is a free Community Edition now. It is one release behind (so doesn't have the latest goodness, eg the LSP server for code completion), but it does let you build apps for non-commercial use or pre-income startups for free, using Delphi/C++, the VCL, etc. Ie, if you want to encourage people to use tools like Delphi, it is much more open to indie devs than it used to be. Link: https://www.embarcadero.com/products/delphi/starter https://www.embarcadero.com/products/delphi/starter
- pjmlp 6y agoI am fully aware of it, but the damage has been done and very few will give it a second look, which is quite a produvity loss, but so is the circle of "innovation".
- Fizzadar 6y agoI don't think it's impossible to have (relatively) lightweight hybrid apps. The article focuses entirely on electron, which ships a whole browser. There are other options, such as pywebview, that use the system native browser. Still means the underlying JS bundle has to perform, which goes the same for websites too. That said, I normally seek native apps where possible (ripcord for slack, sublime), but that's also pretty hipocrytical of me ref Kanmail!
- c-smile 6y agoWell, HTML/CSS/JS apps can fit into 5mb size even they contain HTML/CSS/JS engine linked in. I've started publishing Sciter.JS builds to prove that: https://github.com/c-smile/sciter-js-sdk https://github.com/c-smile/sciter-js-sdk Those binaries contain HTML5, CSS 2.1 + some Level 3 modules and full ES6 engine. 4-5mb of binaries is comparable with native hello-worlds of purely native Qt, wxWidgets, etc.
- mike_ivanov 6y agoUnfortunately, Sciter is not opensource. Qt and wxWidgets are.
- wademealing 6y agoI feel like writing a 'goodbye goodbyes' medium piece which talks about never listening to a 'goodbye' article again.
- thotsBgone 6y agoCan you find an example of a tech goodbye article which has been wrong?
- kerbs 6y agoI still hold this one close to my heart https://medium.com/javascript-scene/native-apps-are-doomed-ac397148a2c0 https://medium.com/javascript-scene/native-apps-are-doomed-a...
- schwartzworld 6y agoVSCode is a poor example. Its a fully featured IDE, and sure it would be lighter without electron, but it still wouldn't be a lightweight piece of software. I use JetBrains which is not Electron, but also uses it's fair share of ram.
- danmur 6y agoI haven't compared ram usage but vscode feels (subjectively obviously) very slow by comparison to me. Intellij is a beast of an application in terms of features also.
- pjmlp 6y agoNope is a very quite good example, because one can compare it to Emacs, vim, Sublime Text loaded with a similar set of plugins. And it isn't an IDE, rather a programmer's text editor.
- gumby 6y agoFor decades people complained that Emacs was huge, bloated, etc. Now there are bigger web pages
- pjmlp 6y agoExcept I don't need an application in 2020 hardware to replicate my Emacs experience in 1995 hardware, with hardly any improvement worth mentioning.
- gumby 6y agoIt seems a bit unfair if your computing environment is faster than an 0.0125 MIPS KA-10 though doesn’t it?
- peatmoss 6y ago“Eight Megabytes And Constantly Swapping” must be an alien sentiment to so many younger techies.
- allo37 6y agoThe cheapest laptop I could find on walmart.com right now has 4GB of RAM. "Low-end" isn't what it used to be! Only techies care about things like how much RAM a program is using. End users, from my experience at least, don't really care - as long as it works.
- possiblerobot 6y agoYou might be right with respect to non-techie users. But, it's not about whether it merely works. It's about what we could be doing with modern hardware if we used it as efficiently as old software had to use its hardware. What kinds of wild things could we accomplish on this hardware if we weren't bogged down in gigabytes and teraflops of bloat?
- qayxc 6y ago> What kinds of wild things could we accomplish on this hardware if we weren't bogged down in gigabytes and teraflops of bloat? Not that many: An early 1990s PC platform could be thoroughly described in a 200 page book and you could write a boot loader for the CPU, a VGA driver, and drivers for the most common peripherals from scratch in a few weeks. In fact, games of that era shipped with their own audio drivers, (C/E/V)GA libraries and peripheral support. Today this would be a) impossible because many manufacturers (cough NVIDIA cough) don't even release OSS drivers and specs and b) individual programs don't own the hardware anymore - the OS does. Also the multitude of target platforms (CPU types, -core counts, and -speeds, graphics cards, peripherals, etc.) makes it virtually impossible to ship code that it optimal for each of even the most common combinations of hardware. The final nail in the coffin of the "super lean no bloat why-not-just-unikernel-everything-for-maximum-performance" idea can be summed up in one word: cost. Development costs would be insane if we started optimising every aspect of every program for performance (on every possible platform, no less), memory use, and (binary-) size. And that's even ignoring the fact that it's more often than not outright impossible to optimise for binary size, runtime performance, and memory footprint all at the same time. Plus interactions between programs (plugins, {shell-}extensions, data formats, clipboards, etc.) require "bloat" like common interfaces and "neutral" protocols. Most of the myth of great "old software" comes from the fact that functionality was severely limited compared to modern apps and that many folks simply weren't around to actually see and feel how much some of them actually sucked. Sure, Visual Studio 6.0 runs incredibly fast on a vintage 3.2 GHz Pentium 4 with 2GiB of RAM using Windows 2000 - but when it released in 1998 many PCs had a 60MHz Pentium 1 or a 100MHz 486DX4 with 64MiB of RAM and it ran like a three-legged dog with worms on these machines compared to the DOS-based Borland-C... Speaking of which, remember when sometime around the 2000s all Borland Pascal program stopped working, because CPUs had become too fast (>200MHz IIRC)? That was because their runtime used a loop to determine how fast the CPU was, which caused a divide-by-zero on fast machines IIRC. Good times indeed...
- mekster 6y agoTo be fair, writing apps that tries to throttle the use of memory is harder as you might have to let go of unused data onto disk instead of read and forget or process data little by little instead of all at once. So, as soon as devs realize their apps fit in 1GB or something these days where even mid range phones have 4GB of RAM, they see no reason to optimize further.
- burtonator 6y agoHere's the thing. Apple, Google, etc are trying to lock developers into specific platforms. This is why Apple has been so hostile towards PWAs. It's totally possible to build a PWA that behaves like a native app but Apple actively tries to destroy them. There will never be a viable hybrid app platform.
- athenot 6y ago> It's totally possible to build a PWA that behaves like a native app but Apple actively tries to destroy them. It may look the part but it rarely feels like it. Something like OmniGraffle would not end up feeling the same. Even Microsoft's apps on mac feel better than their web-based counterparts in O365.
- giantDinosaur 6y agoOmniGraffle could be fine; hasn't Figma shown us the way?
- durandal1 6y agoFigma falls into the trap of all other claimed high performing web apps, conflating maintaining a 60fps refresh rate with responsiveness. Try dragging any object around (even simple shapes) and you'll see it trail the mouse cursor in Figma. Does not happen in OmniGraffle. The result is a distinct difference in feel.
- lucasverra 6y agoCan any person in the planet edit the same document than you in real time, for free, running hardware up to 5 to 10 years old, in < 3 min after receiving a link with Omnigraff ? Because that is the main feature of figma. Latency of mouse issues is a good trade off from my POV.
- giantDinosaur 6y agoFair point! I might file this under 'latency' which is often ignored for improvement so long as it's tolerable.
- egypturnash 6y agoI hate this trend so much. I just dug around in Time Machine for the old version of Evernote, after being frustrated by the Electron trash they are calling version 10. It's missing so many little touches that just magically happen when you make a real application instead of having to fake everything from inside a browser.
- jamesu 6y agoI’ve been tempted to do a native clone of an early version of evernote for a long while now. Learning it’s turned into electron trash might just push me over the edge and actually do it.
- ksherlock 6y agoHave you tried Notational Velocity?
- crossroadsguy 6y agoIt’s been abandoned for almost a decade now. It survived changes until now. In Catalina it’s crashing left, top, bottom. Moved to nvAlt which, it seems, is abandoned now as well. Author is focused on something caller nvUltra. No idea what’s that. Besides for people who use Evernote, nv isn’t a replacement at all for them.
- egypturnash 6y agosearches No sync, looks like it won’t let me put images/PDFs in, no way to collaborate with my co-writer on projects, last version is from 2011. Nope. Haven’t tried it, don’t think I will, I dunno who it’s for but it’s not for me.
- z3t4 6y agoThere are also "chromeless" apps which are just web apps (no Electron) and runs in the default browser, but without the address, tab bar etc. You can run the "app" by for example adding the "--app" flag for chrome, or -k for iexplore. Then there is also "add to home screen" (A2HS).
- emodendroket 6y agoAs much as anything else the growth of hybrid apps is a symptom of a couple of things: 1) people now expect apps to run on a million different devices and nobody has the time or resources to develop four or five native apps with feature parity between them 2) progress on UI frameworks is pretty much stalled. Just looking at .NET, because I'm familiar with it and traditionally desktop software has been a big area of concern for it, Windows Forms will work for forever but hasn't been touched in a long time, WPF has some sharp edges that make it feel unfinished but isn't being touched, and WinRT was basically stillborn because of their attempts to tie it in with the whole "new" Windows 8 ecosystem. Meanwhile, browsers are getting new capabilities constantly. It's hard to blame anyone who looks at that mess and says to hell with it and goes with a Web browser-based solution.
- nicoburns 6y agoIndeed, my prediction is that native apps will make a comeback when the UI toolkits catch up. Flutter is in this vein. And some of the Rust UI ecosystem looks promising (although very early stage).
- heavyset_go 6y ago> And some of the Rust UI ecosystem looks promising (although very early stage). Can you recommend any projects to check out?
- nicoburns 6y agoIced https://github.com/hecrj/iced https://github.com/hecrj/iced and Druid https://github.com/linebender/druid https://github.com/linebender/druid Iced is taking the "get something working now" approach, whereas Druid is taking the longer term "build it right" approach. I wouldn't recommend either of them for serious projects yet though. I would also recommend Raph Levien's blog https://raphlinus.github.io/ https://raphlinus.github.io/.
- amelius 6y agohttps://www.areweguiyet.com/ https://www.areweguiyet.com/
- tehabe 6y agoI wonder if there is really a big difference between using an Electron based application or a progressive web application (PWA). My current guess is, that the biggest advantage of PWA's is, that you use the same browser for several applications. But I never really tested my guess.
- IggleSniggle 6y agoAn advantage/risk of Electron is inheriting the users filesystem and device privileges.
- r-w 6y ago> Hence, there were no intermediate layers like run-times in order to execute native applications; just binary content was there. That's not true. Even with "native binaries" you have the OS as an intermediary.
- zuhayeer 6y agoThis is why building for web first is underrated – let people access everything within their browser, it's naturally cross-platform 'But Larry Page and Google were not interested in application software. “We like the web,” he is said to have told Lars Rasmussen, one of the Gordon’s fellow co-founders. And he set the team a deadline to get their idea working in a web browser.' Source: https://medium.com/@lewgus/the-untold-story-about-the-founding-of-google-maps-e4a5430aec92 https://medium.com/@lewgus/the-untold-story-about-the-foundi...
- ericmcer 6y agoMemory usage is not that important to users. They would way rather have feature parity and familiar UI across all devices. That’s kinda why the browser is cool...
- tiew9Vii 6y agoMemory usage is important to users! I recently wasted two weeks starting a new contract at a tier one multi billion dollar orginisation unable to do any work as their standard issue laptop where 8gb window machines and they had no availability of other machines. It took two weeks pointing out we can't do any work, our contractor rates they paying us to do nothing and the approaching deadline to make it way up the chain for senior execs to organise machines with 16gb. If you need to run Docker with a few containers that's several gigs immediately unavailable to the system. Start MS Teams, another gig, visual studio code / intelij, another gig, a browser another gig or so. Even without running developer tools on a 8gb machine which seems to be standard issue laptops at most office based companies and average non techy person off the street you very quickly hit the memory limits and swapping to disc as you have a handful of small Electron applications open. Memory usage is extremely important to users just that most users being non technical don't know it and just think their machine is slow. Running an application in 2020 with the ubiquitous use of Electron my desktop apps seem less responsive, i can run fewer of them, and any sign of bad internet connection my system comes to a halt as all that apps even if only sending metrics block until api requests are complete or timeout vs running them in the background and not blocking ui functionality.
- gcanyon 6y agoAs an example I haven't seen elsewhere of why web apps suck (maybe this could be coded around?): I can receive a notice from Slack of a new message, with who it's from and a snippet preview, as I'm leaving my office's WiFi, and then the actual Slack app won't show me the actual message until I return to WiFi :-(
- twodave 6y agoSounds more like an implementation detail to me. The notification doesn’t contain the entire message (it goes through a different channel altogether). By the time the app tries to poll to retrieve the message (I assume here that it’ll wait until you try and view it) there’s no connection.
- reader_mode 6y agoHow is this getting uovoted ? Is nobody reading the article ? A few paragraphs in and I can see the author has terrible writing skills and doesn't know what he's talking about >In fact, writing software with C/C++ was hard because developers had to work with different operating system API(Application Programming Interface). Seriously ? Writing C++ apps is hard because you had to use different APIs ? That's the least problematic part about C++ app development, behind say the fact that your app can segfault when dealing with strings... (and especially pre C++11) or that you could take lunch breaks during builds which kills GUI iteration. I feel like this doesn't belong on front page and people upvoting this are doing the site a disservice by upvoting based on title alone.
- bluedino 6y agoIt is a shit article.
- sudobash1 6y agoI agree the article in of itself doesn't deserve front page placement, but the discussion that it is generating does. Sometimes I upvote or favorite mainly because I found the comments engaging and informative.
- reader_mode 6y agoI mean this is a dead horse beaten over and over weekly, but even if it wasn't I don't expect to read blog spam when I click on front page stuff on HN - if this becomes the norm the site will lose value for me.
- baxtr 6y ago"Goodbye, Medium articles". That's the article I want to see trending...
- gabereiser 6y agoI’ll upvote that
- 6y ago
- ineedasername 6y ago"Older native software used resources in a well organized manner" That made me laugh a bit. Yes, I tend to agree with other criticisms, although in some ways this type of increased resource usage has been going on forever, so I'm not sure it can be laid purely at the feet of hybrid programs:
- ineedasername 6y agoI think the basic principle at work here is that new programs will only ever be optimized enough to be functional on a typical (< 5 years old) computer.
- cwyers 6y agoI mean, that Pentium III he shows up top probably cost $900, and even with inflation, a Windows laptop with 4gb of RAM costs $250 off Amazon.com right now. The "low-end PCs" that the author complains are being left out by Electron apps... a lot more people have PCs capable of running VS Code than had PCs that could run the old Borland IDEs back then. Computing is more accessible now, not less.
- dreamcompiler 6y agoElectron is only the latest in a long line of almost good enough cross-platform solutions. Java for example was supposed to solve this problem but the widgets never looked quite right and Microsoft threw a wrench in the works so Java-on-the-desktop never quite caught on. What Electron gets mostly right is the UI, since everybody is used to browsers. What it gets wrong is insisting on shipping an entire browser rather than using the platform's native webviews, so the result is ridiculous bloat.
- ausjke 6y agowhy not just golang+http in one binary as backend and browser for the GUI frontend, that seems can solve all the GUI problems. of course you will need a modern browser, which is everywhere these days.
- hu3 6y agohttps://github.com/webview/webview https://github.com/webview/webview
- ausjke 6y agoaware of that and yes that's an interesting project
- saagarjha 6y agoIt doesn't solve the GUI problems of the web in general.
- ausjke 6y agowhat is it missing then? more specifically, what can't be done this way comparing to electron ,or Qt5 style GUI. yes for corner cases Qt/Electron has their place, but I feel 95% GUI these days can be done with Browser + Backend, which is what Electron is doing basically(chromium+nodejs), I just don't want to run browser and electron in parallel, both are memory hungry, so why not just directly browser+backend(in C,golang,nodejs,or whatever)
- WaltPurvis 6y agoThe thesis that native apps are being supplanted by hybrid apps seems wildly overstated. I have about 500 applications on my Mac (465 in the Applications folder and at least a few dozen others scattered about), and I believe only two of them are hybrid apps (Visual Studio Code and Discord). There might be another two or three I'm forgetting about. In other words, somewhere between 99% and 99.6% of all my applications are native, and I see zero reason to believe that percentage will decline very much in the next few years.
- mushufasa 6y agohow do you have so many applications? Do you just accrue them over time? How many have you used in the last 6 months?
- WaltPurvis 6y agoI was honestly shocked just now when I checked the number. Quite a lot of them are small utilities and menu bar apps. Many others were acquired via bundles (e.g., BundleHunt, Paddle, etc.) and a fair number of those I've probably never used. Here's a list of about 60 apps that I've used in the last month: Activity Monitor, Adobe Digital Editions 4.5, AppCode, Bartender 3, BBEdit, BitBar, calibre 4.23, Carbon Copy Cloner, ColorSnapper2, Console, Dash, Discord, Downie 4, EtreCheckPro, Evernote, FastScripts, Firefox, Font Book, GoLand, Google Chrome, HazeOver, Highland 2, IntelliJ IDEA, iTerm, iTunes, Keyboard Maestro, KeyCue, Launchpad, Mactracker, Magnet, Messages, Microsoft Excel, Microsoft Outlook, Microsoft Word, OneDrive, Parallels Toolbox, Paste, Paw, PopChar, PopClip, Preview, Safari, Script Editor, Scrivener, shayre, SnapNDrag Pro, Snappy, SQLPro Studio, SQLPro for SQLite, Terminal, TextSoap, TG Pro, Typinator, Vienna, Visual Studio Code, VLC, WebStorm, Window Tidy, Xcode, Xojo.
- saagarjha 6y agoTo be fair, calling the JetBrains IDEs "native" might be going a bit too far ;)
- 6y ago
- bikamonki 6y agoThe browser is the new OS. For most users, a Chromebook-like PC is all they'll ever need. On mobile, most native apps should be web apps or PWAs. Native code is now unnecessary in terms of hw/os features accessibility and performance. In order to run such stacks we need to devote a couple of GB's of RAM for the OS and browser. Not a bad deal if you compare cost to benefits.
- fareesh 6y agoThis is really poorly written and argued. The topic isn't exactly novel either. I'm wondering if these upvotes are organic
- barnaclejive 6y agoPaw is a far better app than Postman, on a Mac, for no other reason than it is native and behaves as you would expect.
- lucasverra 6y agoLast time i checked this app felt native https://hoppscotch.io/ https://hoppscotch.io/ (See the fact that you can use it after a click, how can i do the same with paw ?)
- jamesgeck0 6y agoIt feels like a browser app. It’s snappy, but not as snappy as native. You also need to expend several more clicks to install a browser extension to get the same level of functionality that Paw has.
- mr_vile 6y agoWhat a confusing title.
- gorbypark 6y agoI know the article is talking about "truly" native apps, but React Native is quite an interesting project. Microsoft has been heavily investing into React Native for Windows and macOS, so combined with RNWeb (which is still a work in progress, but quite usable), a developer can target iOS, Android, Windows, macOS and web with the same code base and have a native UI for each platform. It's pretty magical when it all works.
- wdb 6y agoMy main grievance with solutions like Electron the app doesn’t adapt to the platform. Personally, I don’t see much benefits of Electron or non native apps when they don’t mix well with the OS UI interaction model. In the end you need to implement a lots of parts twice for Windows and macOS due to the differences interaction models. In the case just share the business logic, and write UI separately, works perfectly fine. I have written apps that run on the web, natively on Android, macOS, iOS, and Windows were the only change is the UI layer and data storage (e.g. iCloud on Mac etc)
- trzeci 6y agoNo company that tries to have the biggest possible user base will drop old devices that are running Android 4.2 or iPhone 4. Author lives in a dream 10 years from now.