Ask HN: Where do you see web and desktop apps in 5 years?

108 points by OedipusRex ↗ HN
As the browser becomes home to more and more software that traditionally would be desktop only, where do you see web apps and desktop apps in 5 years?

97 comments

[ 3.2 ms ] story [ 134 ms ] thread
I hope we trend towards open, public APIs that make which interface you build or use just a personal choice that others don't have to live by.

One example is HN, they've recently released an API and when that is full-featured apps and alternative sites built on the API will be able to completely replace the HN website for anyone who want them.

It's a platonic ideal, but the internet runs on ads, and that ruins everything.

An interface you don't control is an interface you can't advertise on. The vast majority of players will never open their data in a manner that hurts their ability to sell sponsorship, and this problem is entrenched in the fabric of the internet.

HN is a very, very rare exception in that it never was and never will be dependent on ad funding.

What about licensing their API? Could that be a viable business model for both the website and the app creators?
Chrome is going in this direction:

Packaged apps that have more and more hardware permission.

I think JS will be a compile target.

Desktop software is desktop because of mouse. Touch software replaces mouse with hand gestures on screen or panel. But web apps still trying to be 1990 desktop replacement. Soon biometric feedback makes this painfully obvious. Security and compatibility is key. But Apple and Microsoft refuse to agree on anything except basic web standards. Third player needed for anything to change.
I see everything moving to a ChromeOS-like model, with HTML+JS and WebGL for graphics-heavy things. If not those technologies in particular, something equivalent.

Essentially the consumer OS will be reduced to being a platform for a browser (I use "browser" loosely here -- I consider iOS to be an app browser in this sense). The OS will disappear from visibility.

To make this work you'll need a lot more standardization on APIs and data formats (because in the future consumers won't touch "files" anymore). I also think that's coming.

Finally, I see the server/client sides being even more divorced from each other. Clients will become dumber (single-purpose) and servers will become smarter (multi-purpose), and both will be much more connected.

Desktop apps are basically stuck where they were 10 years ago, and I don't see them advancing much in the next 10. Office, Photoshop, etc will still be getting upgrades every couple years. All the investment will be in what the new hot platform is.
I've thought for a while that certain web technologies that Google is developing or promoting (e.g. WebGL, NaCl/PNaCl, V8, Chrome app store, Chromebook, etc.) has implied a vision of web apps being just as capable as desktop apps, perhaps even in categories such as video games that need raw access to the CPU/GPU. However, progress towards this vision seems to be going much more slowly than I would have expected, and desktop apps will no doubt continue to fill certain needs and niches even if a fully realized web platform is achieved.

Of course, mobile apps (and the consumer electronics revolution that has allowed many people to consider their phone as a primary computing device) are also competing in this space.

I believe that web apps especially will see an Internet of Things (IoT) takeoff. Things like a web service to remotely control your house (lights heat TV etc) are prime and ready and wouldn't require that much work.

That may seem obvious for web apps; there's a wiki page for IoT. For desktop apps, I predict interfacing with mobile more. Making it seamless to go from one device to the next. We're almost there but not quite.

I think it will be less of a matter of you remote controlling your house, and more a matter of your house learning your habits. If remote control continues to be a matter of you reaching over to your phone, unlocking it and stating a request, people will continue to just get out of bed to turn the lights on.

If, however, the house knows that you set an alarm last night for 4:00, and it is designed to slowly bring the lights up to simulate a natural sunrise, then you'll wake up with the lights on already, which is far more useful. If it offers to start the shower and bring up the lights in the bathroom after it confirms you're out of bed, even better.

I think we overestimate the amount of control people really want over the mechanical and electrical systems in their living space. Most people just want the thermostat to keep them comfortable, whatever that means.

Javascript will no longer be the only viable language for working with the DOM in a browser. With technologies like asm, I think it is only a matter of time until we are freed of directly or semi-directly (coffeescript) coding Javascript in every project. If it isn't asm, I think this will happen one way or the other.
A related question might be: where will mobile apps be in 5 years?

Hopefully, the answer is that web standards will evolve to allow HTML+JS to do things currently only possible in mobile apps. This would mirror the original transition of desktop apps to web apps, and would have positive implications for the internet by bringing mobile users back to webpages (though I wouldn't count on it being done in 5 years).

And its corollary: what will devices look like in five years? How big will they be? And how will be people be carrying things that big?
I was shopping for phones today and physically they're all bigger than my almost five year old iPhone 4. The user interfaces are essentially the same as on my iPhone or my even older G1.

I did see a curved smartphone for the first time though, so I predict in 5 years phones will be semicircular, about 40% larger than they are today, and have slightly faster graphics.

Going totally off topic here, but if you're willing to try something different than iOS then have a look at the Sony Xperia Z3 compact. Small (by todays huge standards) but packs a good punch in specs :)
Developers will view REST APIs with the same dismissive disdain reserved today for SOAP/COM/CORBA. In 5 years time there'll be something much cooler, probably based on GIT. (GIT will live forever.)

The hot in-demand skill will be writing tight C code for ASM.JS based single page holographic apps.

We will commute in flying cars and poverty will be history.

Or maybe not - who knows? The best way to predict the future is to invent it. Nobody has a crystal ball, so it's really up to you.

Golang is so much easier than C and almost as light... :)
> The best way to predict the future is to invent it. Nobody has a crystal ball, so it's really up to you.

In a sense you're right, it usually takes a few people doing something different, and if it's better, others will follow suit. However, by following current trends and looking at how past trends played out, I'm sure we can have a reasonable idea of what will decline and what will gain favor.

As the OP already noted, we can already notice a move towards web apps. Based on that one might conclude that we'll all be using web browsers as our OS and Chrome OS is a perfect example of that. However, we should also notice that demand for desktop apps didn't suddenly die out as web apps gained popularity. Desktop apps are still in demand, so the previous conclusion is too hasty. One conjecture I want to make based on current trend is that developers will start developing more for mobile platforms (phones and tablets), rather than the desktop because this is where consumer demand and use is moving to.

In both cases we can use current trends to strengthen or weaken hypotheses. It's not like the future happens in a crystal ball either, yesterday was another day that contributed to the future.

I like the idea of a gradual merger of the abstractions we now call browser and operating system. I think that I first read about this idea years ago when ASUS floated the idea of having a ChromeOS-like thing in firmware, but I can't find the link.

The important point is that, like microwaves, for 99% of people (even devs), it will make no difference at all who makes the software running in the background. Sort of like BIOS. It will all look and act exactly the same: basically a browser. I already see this convergence happening in mobile, web, and desktop. There will be some other contentious thing to fill the HN threads, some new interface abstraction or maybe VR. Whatever abstracts the most away while working on the most number of devices seamlessly will become increasingly more interesting.

We will move to a cloud based model and all your data will be owned by the cloud providers. Google, Apple and Microsoft are already ensuring this.

From a Google filing in court about Gmail privacy:

>Indeed, “a person has no legitimate expectation of privacy in information he voluntarily turns over to third parties.” Smith v. Maryland, 442 U.S. 735, 743-44 (1979).

> it's "inconceivable" that someone using a Gmail account would not be aware that the information in their email would be known to Google.

Also referenced the scroogled ad campaign to support that users know and accept this behavior.

/facepalm

Zero knowledge platforms are a fairly simple solution to this... You just have to be willing to fork over a little money instead of letting them monetize your data.
The fact that your data is stored on a cloud provider doesn't mean that that provider owns your data. For example, from Google's TOS:

"You retain ownership of any intellectual property rights that you hold in that content. In short, what belongs to you stays yours." [0].

The context of the quote from the court documents you referenced [1] is that Gmail inevitably needs to be able to process your emails in order to send them (and potentially filter out the spam). It is not, as you seem imply, about violating your privacy.

[0]: http://www.google.com/intl/en/policies/terms/

[1]: https://www.scribd.com/doc/160041493/Google-Motion-061313

If rest of the world follows what apple is doing with Continuity, I would say that is where we are going.
I see web apps taking an even large slice of previously desktop apps. I believe Operating Systems will no longer matter as much (this is happening now) as they did in previous years. I would really like to see something other than JavaScript (etc) on the web.

Other than that I see the mobile app market exploding. More people will (if not already) be on mobile platforms than the standard computer. If there was a seamless way to merge mobile and web apps the possibilities are endless.

I am curious, which slice of previously desktop apps is already taken by web apps?
Of course not completely taken but to name a few: email, word processor, calendar, music player, chat clients, and many more.
http://blog.intercom.io/the-end-of-apps-as-we-know-them/ - This article about where mobile apps are going resonated with me. It says we're eventually moving away from a bank of homescreen icons to notification centers and all actions related to certain context are present in the notification itself (like, reply). Moreover certain products/services might not need to have their own app - piggybacking as child cards of others app notifications. Very fascinating read.
Same place we were five years ago: nobody cares what API you're programming to as long as your apps are good.

No, seriously. The iPhone SDK came out in 2008. Google Maps came out in 2005, ushering in the modern era of web apps. Mac OS X came out in 2001 and .NET came out in 2002, representing the major desktop platforms we know today.

The web as a platform is no different than any other platform in that it's just another platform with its own strengths and weaknesses. It just moves a whole lot slower than the rest, which is why we're still asking this question after this many years.

APIs and platforms come and go. Developers always have had and always will have choices about which ones to pick for developing their apps against. These choices have some impact on how easy it is to build various types of apps, but at the end of the day, the only thing that matters is how well your app serves the needs of those using it.

Desktop software dead. Software exists only on the internet. Browsers evolve into application runners.

Thin fucking clients.

Commercial CNC machines and other motion control applications will _never_ run off of web-based software. Not to say it isn't possible under the right conditions, but those conditions can't be ensured. There will always exist applications that require low response times that the internet cannot dependably deliver.

High end CAD and CAM software also falls under this umbrella. There is simply too much computation/rendering occuring.

no,the OS you'll be working on will be designed so it will be harder to tell wether you're using a webapp or a native app.
More voice control

No I don't like yapping at my phone or PC, but my 6yo kid loves FireTV's voice search feature and uses google voice search all the time on her iPad, even if she knows how to spell the words. As precision improves, I see my wife is using it more too, for searches and dictation.

More support for device-/screen-hopping (state-in-the-cloud, continued-commerce)

Stick-computers

Affordable devices optimized for streaming screens/desktops/apps hosted in the cloud. Hardware upgrades only in data centers. Consumers investing instead in high bandwidth/low latency connections.

Web 3.0 == forgetting (ignoring/hiding)

More apps featuring some form of 'forgetting' (hiding older, unused, unimportant, noisy data).

More apps assisting in the reverse: new mechanisms to improve recall/precision of 'forgotten' information by 'priming' our searches with user input (sounds, locations, colors, images) and/or interactive feedback (hot/cold, before/after, similar/different, binary search)

This also comes back to hands free for driving, etc. I don't understand why a tesla d can drive itself but we're still using blinkers and manual actions to change lanes...
Not just with the voice control - I can imagine something like Siri being able to respond to requests of things like, "Please show me all of my videos taken while I was in Hawaii of 2014."
Hopefully 5 years is long enough for us to stop and take stock of the inevitable destination of the browser: an OS in a VM.

With any luck we might finally realise that we're not dealing with "documents" anymore, that HTML, JS, and CSS do not a good UI framework make, and that JS simply isn't good enough for what we need it to do and how we need it to do it.

ECMAScript 7 will be pretty much ready to implement and the standards committee will realise that they've run out of syntax for ECMAScript 8, forcing a rethink. Fingers crossed a neckbeard will arrive and point out that a LISP would be ideal for both defining the "DOM" and providing a base language for targeting by other languages, who can just (ok, "just") serialize their ASTs and pass it in.

Seriously: if, in 5 years, we're still perfecting the dominant user-facing runtime by tweaking an arbitrary XML spec, a language with only one kind of number, and a styling language so inept it almost requires auto-generation tools, well I might just kill myself.

That would be lovely but I wouldn't hold my breathe...
I'm deathly afraid of that ever becoming true. An OS in a VM by default? Isn't that the end of all things nice and native? I know that's pretty much the state of affairs in the browser already but I do worry about how that would affect other parts.

Will system language become even less popular and "apps" even more popular? Will we completely live in the cloud by default? What will happen to our data in the long run?

Five years is nowhere near long enough for the entire platform to be replaced with something completely different. Unless, of course, you mean the "OS" and VM that is already in our browsers; but it seems apparent you don't want that OS and VM, you seem to want something very, very different (and different in ways that nobody is really working on, as far as I know).

I'm less critical of JavaScript, but I've also got a much more conservative expectation of how much will change in any five year period. Your estimate assumes more dramatic and rapid change to the web than at any point in its history (except maybe the initial introduction of the graphical browser, or of the release of JavaScript, itself), and an ecosystem with a few billion participants does not and cannot change as fast as one with a few thousand. And, of course, for something to be the way we all do things in five years, somebody would have to be doing it that way today on a small scale.

Please don't kill yourself, despite the fact that your dream definitely is not going to happen the way you've envisioned it. (In its place will be a gradual, but measurable, improvement on nearly every front in the systems we currently work with. It'll probably all turn out alright.)

I wouldn't dare expect this to exist in 5 years, but I hope maybe it's an issue slightly closer to the front of our minds. We really don't need, or even want, a wholesale replacement of the browser internals - the rendering engines, sandboxing techniques, etc. are good: all I'm saying is it would be really, really nice if we could have access to these components at a lower level (not too low, mind) than what we've currently got.

I'm fine with JS as a thing that exists, my problem is with it's position as the "assembly of the web" (credit to user Lerc below for that fine phrase.) The good parts of the HTML/JS/CSS paradigm are making awesome things, but the bad parts make our lives far more difficult than they need to be.

And don't worry, I'm not actually going to kill myself, but thanks for the concern.

To reiterate what /u/SwellJoe is saying, you can actually already run a full linux stack with UI in the browser.

Here's one without a gui: http://bellard.org/jslinux/

What more functionality exactly are you trying to achieve with this "OS in a VM" concept you are referring to?

Would you say Iphone/Android/WP apps satisfy what you consider a "OS in a VM?" Or close to it? The web and and iPhone app environment arent that different anymore.

It's not a concept I'm peddling, it's an observation.

Back in the day the browser was a document browser - like a read-only, network-enabled version of Microsoft Word. It's goals have changed immeasurably, but the technology largely hasn't - at least not at the conceptual level. We use it to make applications that are much more like actual applications than they are documents. The slow march of the browser is to doing "anything" a native app can - we now have geolocation APIs, graphics card access, "threading", native drag-and-drop interop, etc., etc.

By OS, I meant it more in the way the JVM is an "OS" ("virtual machine" is too vague): it can do almost anything the actual OS can, provides platform-agnostic drop-ins for many native toolkits (e.g. GUI), and for a tremendous amount of the workload, developers needn't care needn't care what platform they're on. Now the JVM has its flaws for sure, but at least it knew its purpose before it grew up, the result being it is highly performant (less the boot time) and flexible.

If you need a document browser, sure you can build in a little macro language with only one kind of number, but if you need a VM a la the JVM you'd be well advised to build something better. My point is that we're heading somewhat blindly towards the latter by making a Frankenstein out of the former, and we really could do with pulling over and looking at the map for a bit.

After doing web for a little bit, ending up loathing it, and then checking out iOS and enjoying it so far, I couldn't hope for this outcome more. I never realized how crippled browser based web applications and the ancient, shitty tools used for creating them are before developing on a web-connected platform that uses a systems language directly for its applications. Pretty much anything you can do with a computer, you can do in an iOS/Android app, and it can connect to the web, which lets you create rich experiences far more easily. To make any modern web application for a browser, you have to use garbage like opinionated JS frameworks and a myriad of other crutches and hacky solutions because the tools for the frontend are incredibly limited and were not designed for what is demanded of them today. Plus browsers don't easily support connection protocols other than HTTP, so this leads to a whole other host of hacky backend solutions for developing so called "real-time" applications, when you could easily use something like UDP were you not limited by a browser. Only downside to iOS/Android platforms is that they are governed basically by the Apple/Google dictatorships(which is somewhat understandable, because it would be a disaster if anyone could so easily distribute applications widely capable of executing malicious code on a user's device), and it is completely up to them what is allowed and what isn't, in contrast to the open nature of the web. I don't know how this could be remedied, seeing as there is an undeniable trend of more and more consumer-facing web activities being done through mobile apps, rather than browsers. Something like a completely FOSS device OS with a decentralized marketplace; e.g. anyone with a server can host their application, similar to how it is with jailbroken/rooted phones? This still wouldn't solve the problem of people being able to execute malicious code on a user device, but I guess if you think about it it isnt much different from some idiot downloading "free cursors" from some malware site and giving themselves a virus like what happens all the time today.
I've been telling this for long time: anyone promoting web technologies as the future of all apps should give a decent try to native APIs and tools.
Which native tools are you referring to? I only have a little experience with xcode which seems decent but not that great to me. Most of my experience was with Microsoft technologies like WinForms, XAML and MFC a long time ago.

To me, HTML+CSS which I am only really starting to use lately, is a much more pleasant experience. There are many quirks obviously, but I dread to think about how it would have been to design something that doesn't just look like a plain vanilla app in one of the native frameworks. I think Flash was probably a nice design experience with a bit more holistic approach, but I never learned that and I don't see a reason to now.

Well, what I meant was more APIs than tooling itself. Many hate XCode, but I think it OK, and AppCode is decent alternative.

I've been dealing with the web tech for some 18 years now, and iOS development experience was really refreshing. Yes, doing anything not plain vanilla takes some work, but the APIs are very powerful, and even so with addition of UIDynamics and friends. OTOH if you want plain vanilla app you don't have to reinvent the wheel.

>> I dread to think about how it would have been to design something that doesn't just look like a plain vanilla app in one of the native frameworks

I dread to think about how it would be to design something that does just look like a plain vanilla app in HTML5+CSS+JS.

> Which native tools are you referring to?

I know it's a little dated, but I love Java SWT for producing native GUI. In particular, I almost exclusively use 'GridLayout' on all my controls and it just works.

With HTML + CSS I find it difficult to map 'how the screen should look' in my head to the HTML/CSS code due to the complexity of the layout mechanism. I often grind my teeth and think, "How can such a simple layout be so difficult to produce?!"

Really? Web technologies are much easier to work with and make a much better UI toolkit. Just look at the share amount of developers doing Web stuff and compare them with the amount of developers doing iOS.

And btw, iOS development is easy for as long as you do not want to customize things. Once you start changing the standard controls you are entering the land of no return.

Now compare this with web technologies which are designed to be customizable.

> Just look at the share amount of developers doing Web stuff and compare them with the amount of developers doing iOS.

I think that is more because web apps can reach a much larger audience, not because web apps are easier to develop.

I love javascript and will continue using it.

I really hate language snobbery.

I am also not fond of language snobbery. There are certainly languages I hate, but I accept that people find that they suit their needs. People should be free to choose something that works for them.

The difference with JavaScript is the notion of it being the "Assembly of the Web". JavaScript as a Compilation target presents a problem. People can't freely choose their preferred development style if it is not accommodated by JavaScript. Blocking IO, pre-emption, concurrency etc. These are all things that programmers may choose, You shouldn't be forced to use such techniques, but nor should a platform deny them because of the limits of a single language.

I think this is a ridiculous thing to say. Don't think of the web as dev platform. Think of it as OpenGL or any other GL language. To create a game you need to use a graphics card which provides a primitive set of instructions but they can be empowered with the help of libraries. The web is the same. It provides a primitive set of functions that can be represented in a common way. They are still usable on their own but much more useful as part of frameworks.

Web technologies is for UI what opengl is for gaming.

It's an exciting future for web apps – I'm more interested to know who's going to take us there. It will require a significant collaboration between the browser makers and the operating systems – and while sometimes they are the same people, the major players have a conflict of interest.

When the iPhone launched without an app store or sdk, apple pushed for web apps. Yet [this article](https://developer.apple.com/library/safari/referencelibrary/...) hasn't been updated in over five years. And Apple has very little incentive to do so now. The Chrome web app store is a promising concept, but I'm not convinced it has great traction.

My fear is that as web apps gain access to native app features, standardization will go out the window as each operating system (or maybe browser at that point) competes for market share.

We don't have the same pace of innovation happening on the big screen that we did in previous decades.

Desktop apps are the same except for upgrades to their UIs and engines. Web apps are the same except for an explosion of .js libraries - some production worthy - and a shift in popularity away from php.

Most of the innovation is on smartphones. Those in turn are most like the desktop, but with more interesting I/O - at least for a developer.

In 5 years you'll have to know C++ and emscripten as it will be the main way to develop frontend applications.
>>As the browser becomes home to more and more software that traditionally would be desktop only

Sorry I don't see that. All of my desktop apps are still desktop apps. On Windows I still use Office, VS, Adobe CS, Amira.

I don't see this happening any time soon due to legacy codebase as well as performance and ease of coding issues. For example, with great difficulty one could port Photoshop, perhaps using clever off-screen WebGL buffers to do the heavy computation, but why would you do that?

Adobe might want to do that if they thought they could make more money that way, perhaps by reducing piracy or increasing lock in.
There are plenty of Photoshop-inspired apps that run in the browser already. None of them are on par with Photoshop obviously, and maybe none will be in 5 years but I don't think it's completely unrealistic.

There are a bunch of obvious advantages to webapps like no installation, settings are kept no matter which computer you are working from, works everywhere, etc. They may not outweigh the disadvantages in your view but it does seem to be the trend in the world.

Do you think it's technically possible to get something on the level of Photoshop with performance that is, at least, acceptable enough, in the browser? Using asm.js I suppose?
I don't see why not. I won't make any guesses about a timeline, but it seems inevitable to me that it will happen at some point or another. Current technologies allow you to do quite a bit locally and it might even make sense to offload heavy expensive operations to a server instead.
Ah, sorry, I meant to ask if you think it's currently possible with asm perhaps, considering that we can already do quite a bit of heavy stuff in js right now. I have no doubt over time it will be doable, I'm just curious if we might already be there (purely technically, of course, I can imagine we might not have the right tools to actually pull it off right now).
I think we both agree that the technologies will soon be there that enable native performance (not to mention the JVM) but I still can't see the advantage with the exception of freeing the user to run an installer, but caching assets will still be a requirement. The ability to keep settings persistent can be addressed with a traditional model in the same way as Abode Creative Cloud or the Steam client, that is to say just store them. The run from every machine claim is incorrect because engineers must tune and verify that the programs run in each browser, in much the same way as is required by conventional C++ programs. In fact, the myriads of browser, version, architecture combinations make me remember the good old days of targeting x86 Windows XP.

I think the trend is very much only applicable to service startups, and against it run trends like C++11 and QT letting me build native apps on Windows and Android from the same codebase.

Multiple concurrent screens (phone, tablet, desktop, living room) as viewports onto your cloud-resident stuff.

The cloud will move away from being largely passive storage, into hosting active applications/agents.

The underlying OS API will lose its grip, but the cloud framework(s) will take over the role of application platform(s).

I think in the next 5 years the focus will be shifted from desktop and web apps to virtual reality (Oculus) and smart hardware apps (smart homes, wearables etc).

Even for web apps it is going to be more mobile oriented than actual standard web view