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.
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?
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'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.
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.
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.
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.
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 be to design something that does just look like a plain vanilla app in HTML5+CSS+JS.
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?!"
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.
I think that is more because web apps can reach a much larger audience, not because web apps are easier to develop.
I really hate language snobbery.
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.
Web technologies is for UI what opengl is for gaming.
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.
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).
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.
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)
Check out https://www.youtube.com/watch?v=eOYsI1cqUrw or the long version https://www.youtube.com/watch?v=DeWriarFlsU
Update: I never saw this video, very cool thanks!
I think the change is coming, it's just that the timeframe of 5 years is just too short.
I started a project a few years ago aiming to do Desktop style things using HTML+CSS+JS. When I started I was just mucking around and I expected something better to come along and I'd abandon the project, but I'm still plodding along ( https://www.youtube.com/watch?v=7namj7iy16Y ).
Along the way I came across a simple idea as a test of whether or not WebApps were up to the job of desktop work. Completely replace the functionality notepad.exe (or OS Specific equivalent level program) with a Webapp. The text editing part is easily managed, but the test is not for what can be done but what can't. What about opening all .txt files with it, editing then saving the result to the desktop, or hacking on startup scripts when nothing else is available?
Much of the behaviour of WebApps assumes that "It's on the Cloud". That is a Deal breaker for a lot of people. Especially since Snowden.
We're getting there (or at least somewhere) but we're not doing it terribly quickly.
Data is replicated, no item exists only in one place.
Data is shared, shareable and in formats that can be operated on both by the owner and by the user, the visitor, the renter, the spectator of the items in question.
Data is encrypted, watermarked, tagged, associated to immutable provenance histories.
Data is ephemeral, guaranteed to be forgotten, subject to erasure, intended to be unrecoverable once used.
The network is reliable. The network is unavailable. The network is on the side of the people. The network will stab you in the back when you least expect it.
Some programmers will insist on writing javascript to control medical devices. Some programmers will insist that casual games running in sandboxed environments be provably correct.
Someone will cobble together an AI and set it to rewriting enterprise java apps, when interviewed after the disaster the AI will claim that humanity "had it coming".
A software bug will start a small war. And a EULA clause will end another one.
You will be completely transparent and documented for everyone else to see. You will not have sufficient permissions to find out anything about anyone with any power over you.
Most applications will incorporate blockchain technology; but bitcoin will be the subject of jokes and nostalgic pop culture trivia questions.
It will be the best of times ( for some ), and the worst of times ( for others ).
Using a simple hack [1] it is already possible to write a single Android app that runs on (a) Android tablets; (b) Mac computers; (c) Windows computers; (d) Chrome OS computers; (e) Nexus Player set-top boxes. If Google were to put its full weight behind this strategy then I think it would quickly become the default platform for desktop development and thereby destroy the Windows empire. It might even mean Android apps being developed for what would normally be the domain of web apps.
[1] http://lifehacker.com/how-to-run-android-apps-inside-chrome-...
Also, how many users are constantly switching between different platforms? If all I see is the lousy app on my platform of choice I could not care less about its capability to run on others platforms.
You are right that users don't care about having one app running on multiple platforms. Instead, it is the software developers who would benefit by not having to write the same app three times.
You seem to be assuming that an Android app running on a non-Android platform would be 'lousy'. Is that because an app designed for a touch-based tablet would provide a bad user experience when run on a desktop computer?
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.
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.
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?
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.
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.
Rust will ease the pain of heavy desktop development somewhat. C and C++ needs to retire, but that won't happen over night. It will take 30 years, not 5.
Web dev will be helped by ES6, or even better: AtScript/TypeScript. JS becomes the assembly of the web and hopefully no one has to actually write todays JS directly.
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.
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.
Ease of updates: just go to the same URL and you get the version. Well ok, what if I don't like the new version? How do I keep the old one? And how big advantage is that (again, from users perspective) compared to app stores and auto updating, that is already there?
I am afraid that in five years from now we will see the same we saw five years ago: throwing in half-baked features into browsers to keep them "on-par" with native APIs and endless search for THE framework. The trouble is, that while native have those frameworks at foundation, web tech basically requires them to be bolted on…
5 years goes past pretty quick, if I think of desktop or web apps 5 years ago not that much has changed.
I have a lot of faith in browser engines continuing to make a great progress, and web as a platform has more developers and momentum than anything else so I expect to see a lot of interesting things coming out as web based SaaS software.
If I think of some of the more complex desktop apps I use (things like Photoshop, After Effects, 3DS Max, Logic Pro, Davinci Resolve) I don't think those will be replaced in 5 years by apps running solely on web technologies. I think something like Qt offers a better fit for these types of apps if cross-platform is a goal.
Having said that, apps of that complexity are a small fraction of what people actually use - as web closes in on the quality of user experience of native apps I think more and more traditional desktop and mobile apps will be built with web technologies.
And there will probably be some curve balls in terms of how people interact with computing devices like IoT devices and Oculus Rift/Magic Leap type wearables with completely new interfaces.
Nowadays with node.js you can convert your web-app to an android, ios, mac, windows app, etc. You have access to system hardware, and from the users perspective it is no different than any native app, even though it is built with web technologies.
It is quite amazing, html, css and javascript standards are becoming a universal platform for developers. We are writing apps for html5 architecture vs specific processor architectures. The browser is a compile target and javascript is becoming like bytecode.
I see a future in which we develop multiple new ways of coding apps using web technologies, completely different than the way we do now. We will have various languages, methodologies to do it with but in the end it will all compile down to code a browser rendering engines can understand. And we can use this rendering engine to run the app outside the browser.
So basically I am saying we can code apps in various ways that compile down to web-technolgies and use this single codebase to port to any platform. And the user experience will be indistinguishable from native apps coded directly for the platform.
Current Usage: Current desktop apps are used by the majority for purposes such as documents, presentation, image modification, watching videos. If these purposes are served in fullest and flexible enough to adopt, then web apps will start dominating.
Current set of users: By numbers, if we go, majority of current set of users for desktop apps will fall in the category who might not be aware of a browser turning to be a replacement for all their needs. It will take 5 years for web apps to expand and become popular enough and reach out to this majority for extinction of desktop apps.
Availability of internet: Currently desktop apps are predominantly used for offline purpose, since connection to internet is not required. And places where there is no connectivity to internet is present, still desktop apps would survive. But web apps requiring internet connectivity at all times for each request-response will not be able to reach out to places where there is lack of internet connection. Web apps will need to provide a offline environment similar to desktop apps, then web apps would dominate. Otherwise, if internet connection is provided to everyone like how sun provides light to every corner of the planet, then web apps would burn down desktop apps.
Kind of exposure to apps: Currently, majority of users tend to sit in a cubicle and perform work, which is more related to desktop apps. If majority of users tend to become more mobile, for example, all the personal PC boxes become tablet/iPads/smartPhones then web apps (mobile apps) would need to replace desktop apps.
Everyone will be back to native application development, with REST/socket protocols to communicate with micro services in distributed servers.
HTML will be used just as multimedia document format as a means of providing an interactive reading experience, while a group would be pushing for HTML 6 as the real thing.
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.
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.
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.
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.
As for Web practices I hope everyone embraces responsive design as being served a separate ghetto version of a site with less features is lousy. I hope everyone stops making a app for their site as that's usually just as bad as the ghetto mobile site if not worse because perhaps the developers didn't have experience in that platform.
And possibly, the concept of API's might hit desktop environments and we might be able to string together such actions much like we do with UNIX piping, allowing for more automation (e.g. 'append this text to document x with time stamp', where the doc is rich text document)
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
"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
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.
Pendulum comes fully around, it's already happening in some arenas.
Would you like to download 'facebook' to enhance your browsing experience?
In the kitchen appliances will increasingly be connected to the internet and be able to download recipes.
The ingredients list your blender displays for Pesto will be transmitted in HTML. But I will write it in markdown.
Your crispy skinned pork roasting application will execute as JavaScript. I wrote it in JavaScript, I will think about writing it in Clojure next time.
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.
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.
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.
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).
Packaged apps that have more and more hardware permission.
I think JS will be a compile target.
Even for web apps it is going to be more mobile oriented than actual standard web view
in general, very much like the idea of Firefox OS, where you basically develop a web-app, and publish it as a native app. I would like to see this on the desktop as well.
Oh yeah, and a truly first class alternative to Javascript in the browser is really overdue.
i.e. long, single page applications where content is mostly displayed either in cards or in a feed format.
About half of the high end and mid end laptops have touch screens now. More will have them next year. The year after that, it'll be impossible to find a laptop without a touch screen. Touch will become pervasive, as it is how kids are comfortable interacting with devices and a lot of current kids will be adults in five years.
JavaScript will continue to evolve and find its way into new places. While Firefox OS probably won't make a dent in ChromeOS or iOS market share, the paradigm of developing mobile/desktop apps using web technologies probably will expand. It's hard to argue with tech that allows building run-anywhere applications.
Performance of browsers will continue to approach desktop native performance, further allowing more applications, including some that are currently impossible in-browser, like good 3D games. Native games will be among the last types of app to go browser, but they will come along, as well. The browser VM is pretty good and getting better. Unity has already shown that a lot of games can be built in a VM language and environment (and while Mono/C# is currently faster than JavaScript for some things, and has more native access, that likely won't be forever, and increasing machine performance will likely close whatever gap remains).
Assume everything will be more powerful, and things that are just out of reach today because of memory, or CPU speed, or disk space, will become mundane in a few years. Maybe not five (Moore's law has slowed, as has every other "law" about increasing computer performance, but it has not ceased), but in a span of ten, the difference will be huge. So, when someone says you'll never make a great 3D game on a table running in the browser, you should assume that really means, "you won't make a great 3D game on a tablet in a browser today".
Network speed will be a continuing source of revolutionary change. Fiber is making its way slowly, but surely, into the home. That kind of speed changes everything about how you interact, just like broadband brought us YouTube, GMail, Netflix streaming, streaming every kind of media, etc. fiber will make it seem entirely normal for every file to be stored in the cloud. We're nervous about that, as nerds who understand the privacy implications, but it'll happen, whether we trust it or not. Just like facebook continues to happen, despite our misgivings about what a privacy nightmare it is. So, building good encrypted ways to use that incredible network will be an ethical and profitable way to predict and create the future. (Building un-encrypted ways to use that network will be evil, but profitable.)
and we're overdue for a bandwidth upgrade. The NBN in Australia is slowed by politics, but not dead and people are beginning to realise how awesome it actually is. The same I gather for Google Fiber in the USA? Are there any similar projects in Europe? Elsewhere?
Thin fucking clients.
High end CAD and CAM software also falls under this umbrella. There is simply too much computation/rendering occuring.