Because not all programs require for their operation resources reachable over the Internet. Many are just local applications that in their concepts have nothing to do with accessing the web.
Besides, Internet connectivity isn't ubiquitously available in every country, in every town, in a non-inhabited place, in the train, on the plane etc. And even if it were, there is always the risk of the connection going down and interrupting your work at the worst possible moment. And even then, if you were to accept that risk, there is the additional danger that the service loses your files, discloses them to a third party due to a bug or a security issue, suddenly starts to charge [more] for the usage or even goes out of business one day. You want to have the security of a local application, local machine and local data storage.
But the general trend holds, many desktop applications are being transformed into web software.
You may want to read this:
Because it doesn't make sense for EVERY program to be a web-app. Some examples of things I don't think would work well as web-apps (though it's probably possible to deliver them via browser plugins, Flash apps, or some sort of network-basd application delivery system such as Steam):
- Graphics tools such as Photoshop, Maya, Blender, Illustrator.
- IDEs such as VisualStudio, NetBeans, other development tools such as source control (well, this one is a maybe but I really prefer the desktop versions of such things)
- Database-based code, such as some of the stuff I write a work (data conversion).
- Games - Let me know when I can play Crysis 2 by loading it through a browser. ;)
Why should web-apps replace all desktop apps? It's a different platform suited to different tasks.
It seems that "web-app" and "program in the browser" are being used almost interchangbly. I don't think they are necessarily the same thing. You can take a program and deliver it to a user via Flash or some other plugin and it's a program that's available on the Web, but I'm not sure it's the same as a "web-app", which I'd say is a program that runs on the server (not on the client via plugin) and are usually CRUD-based and have some database in the backend. Of course, there are probably situations that overlap.
Most of the examples I mentioned could in theory be (and in some cases have been) made available over the web as browser plugins or Flash apps, but that doesn't mean I think it makes sense to build them as server-side CRUD-baed web-apps.
(original answer's been edited for what I hope is increased clarity)
The web software haven't just yet reached the power of complex desktop applications. Besides, their user interfaces are usually annoying to use with a keyboard, they aren't available offline (big one), have worse performance etc. Some people just don't want to, or can't (think CIA or FBI), have their data on others servers. If the service goes down, what will happen with your data?
They just aren't ready, and they will most likely not be. Offline support matters a lot, so does performance, and keyboard friendliness etc. etc.
And, it would cost a lot to move all programs to the web and in many cases, the benefits are actually few.
I'll go against the grain here. Hopefully I won't be downvoted into oblivion.
Most applications are being converted to work in a browser.
For every example I've read in the thread, there is a browser version. The reason is very simple: most people may prefer just visiting a site than downloading and installing an application for their simple needs.
The point is: if you expect a 1:1 copy of a desktop application, the technology is not there yet. If you want a simplified version, you may be better served by an online application. No install, no maintenance, possibly free.
From working in the field, it's evident there is a large trend of moving applications "to the cloud". This is generally intended as an alternative, with pros and cons.
The truth is - the two are complementary. One does not exclude the other.
Here's my short list as to why:
- Not all devices you program for have access to the internet
- Not all applications can assume the user will have access to the internet
- There are a great deal of applications that wouldn't make sense to be a web app
- Though web development is getting better, it's still not as strong as non-web technologies
Those are the ones off the top of my head. I'm sure there are more.
When you start writing an application you need to decide if it makes sense to make it a web app or not.
Also, I'm not buying that it's quicker and costs less to maintain. As soon as you get into doing anything complex, that argument quickly fades.
It's just as much a non-starter on the server side for the following reasons:
- Security - I don't want other people seeing my bits;
- Accessibility - I don't want to lose access to my work if a server goes down or a tree falls on a cable somewhere, especially if I have to present to someone in the next 20 minutes (the server ate my homework);
- Performance - I don't want to sit there and wait while my 40 MB PDF document makes its way through a congested pipe;
- Applicability - I don't want to use a browser-based tool that's clearly inferior to a dedicated desktop tool (think Photoshop, programming IDEs, video editors, etc.).
Keeping everything in the cloud seems like a great idea until you really start thinking about it. I mean, yay for Google for trying, but my experience with Google docs has not been entirely positive.
Sarcastic mode on. Because those web apps need a non-web platform to run. Sarcastic mode off
Is not feasible to turn all non-web apps into web-based app because of:
- real reasons: why would an existing app that works be turned into a webbased one?
- some limitation of web apps
- dependency of connectivity. You don't want to add a weak link in the chain if you don't need it
I'm sorry but web is not the answer to everything...
There are reasons why what I'm working on is not going to the cloud any time soon.
First, it's proprietary and internal software, like most of the software out there. There's many more reasons to push shrinkwrap software onto the web than internal. We don't care if our people can't use the software from home or a hotel room. We supply the platforms, so we don't have to be at all cross-platform.
Second, it's a lot easier to make a program work well not on the web. We've got MFC and Visual C++, and that's the main stuff we developers need to know. Web apps require a lot more different things, and most serious web apps are written by large companies.
Third, it's harder to get performance, and we do have to worry about performance for this software. Having to send large amounts of data over HTTP is going to be a lot slower than keeping it in local memory particularly with network difficulties, and will prevent our people from working at all if the network is down.
I think it'd be cute trick to get Crysis 2 running in a browser using HTML & CSS.
And then, of course, much of the world doesnt have internet access thats reliable and fast enough such that they are guaranteed to have it whenever they want to use an application. Nor are people always eager to store their data on someone else's servers (cough Amazon EC2 outage cough)
I must say that there have been a lot of good answers already, but I can't imagine something like SAP being easy to do in Rails/Django. Even if it was easy, why would somebody spend a year or so re-writing something that they spent over a decade perfecting to keep up with the latest fads? Do some programs fit well with the "web 2.0" experience, yes. I believe Google has done really well with that (such as Google Docs, etc), however, people do need to face the fact (even Google) that not everything will be a nice little web app.
I don't like the phrasing of the question. But neither I like the answers. To address some issues
why isn't there a move to get every program browser based
This is just plain wrong, web application is not the same as browser based application.
Internet connectivity isn't ubiquitously available
- HTML5 explicitly addresses question of offline web applications.
- Google previously achieved same thing with Google Gears.
- On the other hand are many WebKit or Mozilla based applications that use web technology stack, but are actually totally offline and have nothing to do with web (e.g. Komodo Edit).
examples of things I don't think would work well as web-apps in the browser:
- Graphics tools such as Photoshop, Maya, Blender, Illustrator.
Adobe introduced browser based Photoshop Express in 2008. Of course it's not full Photoshop yet, but enough to prove that it would eventually be possible. And actually if you think about that kind of apps, it would be great to have them web based, because it could use the computing power of the cloud. I mean, you'd click 'render' and have result in split second, not few minutes later. Another example I could give is Publitas ePublisher, it's browser based, it's in cloud.
Games - Let me know when I can play Crysis 2 by loading it through a browser. ;)
- the most popular PC gaming platform nowadays is Steam. It's cloud, it's client is web based (current version uses WebKit, old one was using MSHTML). Same goes for most popular one on consoles (Xbox Live);
- WebGL -- not yet on par with DirectX 11, so no Crysis 2 yet. But should be enough to implement Crysis 1 (if anyone would bother to port the engine);
- gaming on demand - like OnLive, Gaikai or OTOY;
- through browser plugins - like QuakeLive.
Because writing applications for different platforms and/or losing out on market share because it only runs on one is just too much fun. I look forward to the day when all I have to do is create installation packages. If I were to get real lucky, I could do the customer support for installations as well.
Maybe the question should be, "Why do programmers still use languages I don't like?"
Trust me, if an application that the users would like the interface to be on a browser could be created, it probably has or soon will be as web technologies improve.
Most of Evernote's users are on a free plan and they still make apps on several platforms. I'm sure if they just had a browser version, life would be much easier, but that's not what people want/need.
With experience, one day you'll be able to conjure up some applications that are not suitable on the web.
Simply because time has not come yet! Probably once we have something like UWS (Uninterrupted Web Supply) ;).
PS: Web app does not mean that it will be on cloud, it may reside on local secure server so security logic may not be used for Desktop apps.