Software Development

Correcting The Future

What Will Come After the Web?

As a futurist, I have to look to none other than the future. Lately, I've been wondering what will come after the web. Eventually, we will move one to something else. I don't know if the web will become just another protocol of if it will die out, but I do know that something new will eventually take over.

I often hear people that the web has displaced desktop apps. Or that the web has taken away any monopoly over the platform and has freed the hand of many programmers. Web apps can be used anywhere in the world and are thus superior and always will be compared to desktop apps. For example, you can check your email from anywhere. These are indeed advantages over desktop apps. But there's more to the story.

I'm noticing a trend lately. Actually, it's been happening for quite a while. Some talk about RSS being one of the big successes of the web. I find this odd because I use it to show exactly what's wrong with the web. RSS is not part of the web. It isn't. Your browser knows nothing about RSS. Sure, today's browsers can have functionality for it. But that's my point. The browsers had to change. If it was part of the web, this wouldn't be necessary.

I can list RSS, browsers, chat, email, P2P, news readers and others as software that use the Internet. Some of them have merged. Some have not. But what they all have in common is that they are all desktop applications. There will be MORE desktop applications like these in the future. So there's something about the web that just isn't enough. It isn't filling all our needs. This means there's room for something new. Something fresh to fill that void.

So what is this void? This is the wrong question to ask. It's the logical one though. And that's why we haven't seen any changes yet. The correct question is what makes the web superior in some cases. The answer is not any of the reasons I've given or any you will find online. The real reason is that the web has a universal API. No matter what web page exists out there, they must all implement the GET command. ALL OF THEM! On top of this, all web pages use HTML. It's a universal data format that has meaning. If you see a certain tag, it means something. As bad as some people think HTML is, you cannot deny what it has made possible.

Now tell me what universal API ALL desktop apps have! None! Zero! Zilch! Nada! They don't even export any functionality. You cannot send a command to any desktop app unless it is specifically built to handle this. But there's no common API or set of data structures. So that's the void. Extra API's and data structures. These other desktop apps that use the Internet implement new commands like RSS and P2P using protocols like bittorrent and Gnutella.

Just having a standard API and set of data structures for desktop apps would change the entire desktop application market. This would decentralise things, so big companies would be in a tough spot. Back on the Amiga, this actually happened. Large companies would leave completely and go into markets that didn't work this way (the PC). I'm convinced this is why the PC doesn't have interoperability between software.

With the Amiga, all GUI components were automatically published so that external scripts could control the app. Usually, all the functionality was also published so you would have more direct commands. Then you could write scripts to do repetitive tasks. You could even take the output of one app and send it to another app. Eventually, people wrote their own applications to replace these scripts and started selling them. You still had to buy the applications that did the work, but you could buy only the tools you needed. If you were to buy all the tools, it would cost much more than the big company's version. But you never needed all the tools. So it ended up being much cheaper.

At first, the tool companies were furious that others were profiting by making apps that used theirs for functionality. After a while, when sales were going up that was clearly due to outside factors (as they were claiming the extra sales were because of their own doing), there could be no denying that these configuration and auto-scripting apps were helping business. These small businesses actually displaced larger ones. But then the Amiga died out (for reasons not mentioned here) before it saw the full extent of the web.

I don't believe that just having a common interface is enough. I do believe that it would be a good start. And I also believe that if someone invents a platform for interoperability at the desktop level, the web won't stand a chance. It will happen. It's just a matter of time. Unfortunately, I see nothing anywhere near what I foresee or would like to see. Not even close. Outside of what I'm trying to do with Project V, I'd say it would take about another 10 to 20 years before this would come to fruition. Right now, people are caught up with adding functional programming to existing languages as well as the coming multicore crisis. This will last for several years. Then I'm sure something else will preoccupy people's minds. After a little more of this, programmers might want to finally solve the real problems why software is getting more complex.

What will come after the web? Interoperable desktop apps that can run anywhere. The difference is that web apps are at the mercy of the protocol. Desktop apps are not. They can make their own and use hardware devices. If you can have this under one roof, you've got a recipe for success. Will this happen anytime soon? No! The best ideas rarely make it. I'm hoping what I'm working on will prove useful, but this article isn't about that. It's about trends and seeing the logical conclusion of those trends. In chaos, order always prevails. I believe something good will eventually come out of all this expanding software complexity.

AutismProvince of New Brunswick Enters Dictatorship

Comments

Unregistered user Friday, March 16, 2007 4:53:48 PM

Kyle Lahnakoski writes: Wasn't Sun trying to do this? I guess the applet was before it's time. The Java libs provided a cross platform common api to make desktop apps, access hardware, and access remore servers. The JVM is on all OSs, and was even on all browsers. Too bad.

Vorlath Friday, March 16, 2007 6:46:59 PM

What killed the applet is that you had no control over what version they had installed. Earlier versions (and later versions in IE) had very nasty bugs like audio eating up memory every time you played a sound. That effectively killed any kind of multimedia applet. Plugins required at least 14MB download which was ridiculous. Plus, the whole MS debacle didn't help. Even without these problems, it still wouldn't have succeeded. Today, there are no desktop apps built in Java that are worth mentioning. And it's still slow as mud. Yes, even today. That anyone can say it's faster than C or C++ is laughable. So the weight of its own bulk would have killed it anyways.

Unregistered user Friday, March 16, 2007 10:39:35 PM

WickedSmoke writes: There *are* others working on Web replacement technologies. One such attempt that I have studied for a few years is the REBOL programming language. REBOL has remained obscure because it is not an open platform, but there are some good ideas there. I am surprised that I have never seen you mention it (and now I am more surprised because I find you are familiar with the Amiga). The Web is only the success that it is because it is a fairly narrow layer within a larger, open framework. Below is the Internet, which supports any number of standardized or custom protocols which can be used in conjunction with the Web. Similarly from above, the Web can be extended with any number of technologies. We may see more layering like this with desktop applications because people have become used to mixing languages on the web. Embedded scripting languages are not uncommon. It might be better for the long term if there were a single standard application language (as ARexx was on the Amiga), but because of the wealth of choices, I don't think there is any chance of that happening.

Vorlath Saturday, March 17, 2007 2:26:04 PM

Well, you didn't need ARexx on the Amiga. It was just a popular choice. I personally have used C, C++, and Pascal and assembly to interface with applications' API instead of using ARexx.

About the web, desktop apps have access to everything you mention. But like I said, the apps themselves don't have a common interface. So they are left out. I agree with some of what you say on this as I've said the exact same thing.

About REBOL, I've heard the name a couple times. But I'm not familiar with it and don't remember anyone who's owned an Amiga being familiar with it either. I'll take a look and see what it's about.

Unregistered user Tuesday, March 20, 2007 7:47:04 PM

SamK writes: Imagine if browsers didn't know anything about HTML, Java, Javascript, etc. And were simple virtual machines (for example) with a fixed instruction set. A browser sends a website request to a server, and recieves an instruction stream as response. Bingo, the web solved. No more browser incompatibilites, no more flash downloads, no more client side java. Websites are no longer constrained to how the browser decides to render their information, they can render it as they see fit. Naturally, the instruction set does not include anything that can access the local machine directly. Freed from the constraints of HTML, Server side technologies can rapidly evolve in any direction. See Alan Kay video 1997 (about 21 minutes in): http://video.google.com/videoplay?docid=-2950949730059754521&q=alan+kay

Vorlath Wednesday, March 21, 2007 2:14:08 PM

True, but you'd still be limited to that fixed instruction set. That's why I'm against VM's in general and why I'm working on Project V. I've seen many Alan Kay videos where he talks about this. I still think Alan Kay is wrong in this respect. It seems good on the surface. But it's not extensible. It locks you in.

In other words, I agree 100% with the premise. But I don't like the implementation.

Unregistered user Wednesday, March 21, 2007 4:56:59 PM

SamK writes: Yes I agree, in the above description, the fixed instruction set is the weak point.. is this description more in line with your thinking? 1. Client connects to Server and sends a "request" 2. Client recieves a component who's sub-components describe the "site" 3. Client d/l's any non-cached sub-components from global component store(s) 4. Client executes component network (after possible "compilation" step) 5. Client and Server networks communicate as if one big component network Where the component(s) in step (2) don't go right down to the metal, and the system is free to pick and choose low-level components that will perform the high-level tasks in the most optimised manner given the actual client hardware.

Vorlath Wednesday, March 21, 2007 5:13:57 PM

Exactly! For security, you could perhaps have a set of sandbox component implementations where all other compound components must be built on top of these. This may seem like an instruction set... but over time, maybe other secure (and complex) components will become more common usable by existing software. So in the case of secure environments, software can still improve without changing the design, but at a slower pace.

ALSO!!! You can provide your own set of allowed operations. That would be cool. Servers and clients alike can have functionality published and be usable by others. Then you can have truly global running software using all sorts of computers as nodes. Ok, I'm starting to dream again...

BTW, your explanation rocks in 360 degrees.

Vladasvladas Thursday, March 22, 2007 4:30:52 PM

Something similar (no HTML, only code and data are get from the server) I do in my project, called Memel. I will post a link to it by ICQ, because it is not yet protected by password.

You may look at the source, and you will only see the initial small chunck of HTML. The rest is JS. All further markup is generated on the fly.

The project is on very early stage, and is concentrated mostly on the storage of fluid tagged data (by now).

Write a comment

New comments have been disabled for this post.

June 2012
S M T W T F S
May 2012July 2012
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30