Where are these web technologies?

It's 2007. We should have these things by now. Where are they?

Offline compartments
There's no particularly good way to download sites for reading offline. Some browsers can do it, and you can get applications that do it, but essentially they work by walking the link graph from some start page, fetching every node through HTTP, and dumping it in a file. You get a variable degree of success with your downloaded pages, and viewing them is awkward because they're in a file:// hierarchy separate from the original http:// hierarchy.

Consider by comparison Google Earth, or an IMAP mail client. They work whether you are online or offline. Of course they only let you see new content when you're online, but they also cache it for you automatically. When you're offline they let you see whatever is in your cache without making you jump through hoops, and the cached material is presented in the same context as the original (you don't have to open up some stupidity like a "downloaded content" folder).

There should be some HTTP standard for marking web content as being in a particular "compartment". The site designer should divide content sensibly in a few compartments, such as "free", "premium", "forum", "media", and so on. There should be some metadata to separate static content, dynamic content that may be cached (such as your friends view, or departures information), and content that only makes sense online such as forms. There should be an HTTP-based means for your browser to sync a cached compartment with the site.

This would allow you to set a preference in your browser that automatically syncs visited compartments where they make sense. You could also have a more advanced UI where you show the compartment in the toolbar and download it specifically. Offline viewing should work as normal, and the browser could also show and let you control how the compartment is cached if you really care.

Proxy identities
Every site that you ever want to use requires its own sign-on. This in itself is a pain, but if you always use your own computer and have a good password manager and a fairly smart browser, you sort of get by. Where it completely falls down is that you can't have good proxies gathering and organising content on your behalf because they can't authenticate.

Take the LJ friends page. Great concept, but not everyone is on LJ, and I'd rather not use LJ myself as my blog provider. I'd like to host a blog wherever, and allow LJ people as well as Myspace people, or various other places, to join as friends with the ability to see restricted entries, post messages, and such. Currently there is syndication, but it's essentially one-way because the two servers can't authenticate with each other.

There should be a standard based on a public key to authenticate pavlos@livejournal.com, or whatever online identity of the form user@site. The site should be identified in the first place through DNS, HTTPS and a certificate, and then there should be some mechanism for the site to return a public key for user@site to anyone who asks. For example the latter could be done by a particular HTTPS request. A public key authentication scheme could then be used to authenticate other HTTPS requests, or other protocols, as being representative of user@site.

Using this scheme, you could host your blog at your favourite provider, and so could everyone else. You would give friend access not just to people on the same host, but also to people on other hosts (assuming you trust both the people and hosts. The blog engines on the servers would then be able to authenticate and gather restricted entries from everyone, as well as post comments. Naturally this would require standards for these activities, as well as authentication.

You could also reasonably use this as a single sign-on account, so that your personal computer can authenticate to various sites more easily, You'd have to buy or otherwise get an identity at a site that is trusted by those other sites that you use, and then proceed as described above. I know that Microsoft is trying to do that with their Passport, but firstly where is the competition, and secondly I'd like to be able to shop for identities and keep them separate, for example one for games, one for social things, etc.

See you on the web
We use a number of instant communication systems such as Skype, GoogleTalk, iChat, and whatnot. As instant communication devices, these excel. They offer video, voice, chat, moods, quick file exchange, and most things that you'd want for instant communication. However as lobbies they suck. They suck because they are like lobbies - you have to go there for the express purpose of meeting people - and no-one likes sitting in a lobby for that.

People like to spend their time online either in games, or in web pages, because these things provide a form of community and entertainment superior to the bare white walls of the Skype lobby. Ideally, people would meet their friends in those places, where they like to be. Games provide their own proprietary means of instant communication, and web pages provide none. It would be good to have a means to spot your friends in a game or web page and interact with them using your preferred IM/voice/video chat.

Concerning web pages, there needs to be a means to advertise that you are there, viewing the page and using it as a forum. Obviously you wouldn't want to advertise your presence at any random page that you visit, but only a subset, typically the pages of forums or blogs that you frequent (and yes, some people would love the feature for porn ages, others would hate it). There would have to be an integration between your web browser and your Skype-like program, and some protocol and logic on the server to act as a live forum.

So, the web browser could tell the server that you're viewing your friends page, and if you wish inclde a picture from your webcam. The server would be configured to do something with this little avatar of yours, of which the simplest thing would be to display a box with all the people viewing a particular page, on the page. It would, of course quickly get smarter than this, for example displaying your online friends in a frame, or displaying your live status next to your dead posts and comments.

You should be able to initiate various forms of instant communication with the other people that you see this way, initially through the browser. For example you might be able to sent an instant message through a browser plugin, or start a video chat through a helper app. If bandwidth is cheap, you could simply have live video and audio updating in the page. Returning briefly to the case of games, that sort of thing would require specific plugins, but if there is a standard way of doing this for web pages, writing plugins for popular games would be more practical.

Are these applications incredibly difficult, or what? They are old ideas. Why are they taking so long to arrive?