Now Linden Lab seems to be eager to ship feature after feature. First Havok 4 was announced (of course this is not really about a new feature but about reducing the crash rate) and is now even available in beta, then Windlight seems to make some progress (and we even had a First Look some time ago) and now we hear back from another long awaited project, called HTML on a prim which Linden Lab prefers to call “Web Media” (on a prim) because it’s supposed to be much more than just HTML.
Earlier today there was a little meetup with Callum Linden, the project leader for the Web Media project. He presented us the state of the project as well as future directions. There is even a wiki page available now which gives quite a lot of detail actually and it’s nice to see some more formal use case descriptions on there. That’s how I like it 🙂
So what is Web Media actually all about? As mentioned already it is not just about putting HTML on a prim in the form of a media texture and thus like we do it with videos today. It is all about an extensible system which also allows 3rd parties to provide handlers for completely different formats. One idea which came up during the meeting was a simple text rendering engine to get rid of the limitations of xytext (while being a great tool done by smart people it’s still sort of a hack). So one part of the work is apparently decoupling the actual rendering module from the logic. What comes then will come in 4 stages. As only the first stage is sort of fixed so far only for this a rough date is given.
Stage 1: Getting static HTML on a parcel
This work is supposed to take 2 months and Callum is doing everything to ship this before the end of this year. Of course it’s very brave to give a date but I think the main point here is that it’s being worked on. In stage 1 also the refactoring of the current implementation to allow for the pluggable architecture described above. Static HTML here means that it won’t support forms or anything like that.
Stage 2: Extending the system
In stage 2 Linden Lab will work on enabling more than one stream per parcel (he says a handful). This is of course great news as having only one stream is quite limiting and parceling up ones land is annoying, too. Especially as you can have different sorts of media on one parcel then (like HTML and a video), this makes sense. Callum said also, that support for media on a HUD will be implemented then. The question here maybe remains how the details are. It would be great to put your music or video stream on a HUD and just carry it around with you. Having dynamic HTML on a HUD would also allow for a better way of implementing search or information interfaces (so the Reuters HUD could simply be a web page which makes things quite easy). As these requirements came up more during the conversation there’s nothing about this in the wiki yet.
Stage 3: Making things dynamic and interactive
So here the fun begins, both for security experts (sort of) and users. This stage will actually contain separate phases in itself. First of all single user interactivity is going to get implemented. This means every website you see on a prim or HUD can only be seen by you (of course people can see the same URL but if you do any input only you can see this. It’s basically like everybody having their own browser). I’d think that even this step will enable quite a lot of possibilities, beginning with the search/info interfaces mentioned before (actually an info interface could already be implemented with stage 1 if there is no clicking involved).
The second phase will then what he calls “poor man’s shared browsing”. In this scenario URLs, clicks and keyboard input will be passed around between users on a parcel. I am not sure how good this will work. We might try out beforehand by getting a bunch of USB mice, connecting them to one single computer and everbody trying to browse the web simulatanously ;-). But if done right and maybe only one person being allowed to click at one time this might be nice for tutorials etc.
The final stage is true shared browsing. In this situation the actual browser sits on the server and delivers it’s graphical output to the prim. Again I am not sure how good this will work and Callum also said that having the browser implemented on the server side can be quite tricky. Additionally it’s not very useful for highly dynamic sites using Flash or AJAX like components. The implemenation in the end will probably be a mix between these 3 alternatives and parcel owners can then choose which one to use.
Callum was making clear that he definitely is looking for more input especially for stage 3. This is where all of you can participare by adding your use cases to the wiki page. What would you need and do with HTML on a prim?
Stage 4: Implement the holy grail
The holy grail is actually to implement full support for web on a prim. This means that you don’t put media textures on a parcel but instead you can define them on a per-prim-basis. According to Callum this is a completely separate project though and we might come back to that with another meeting.
Problems to solve
So the main problem to solve is actually security esp. when it gets interactive. If many people can see the same browser page instance then it needs to be defined who is allowed to input data into forms, click on which links and so on. If everybody can click and type everywhere and they are logged into your account you might soon have a different password or worse things. And with a shared browser you’d also have shared cookies for authentication. This sort of sounds scary to me and thus this definitely needs to get tackled.
What else might be nice to have?
Of course some more feature requests came up during discussion. Here are some parts of the discussion:
- We have Quicktime support only now as this can be implemented easily cross-platform and along with GStreamer on Linux it gives a wide range of media support.
- Flash is complicated to get it running. Callum was making some progress on windows but not an any of the other platforms. But it’s definitely something they wish to implement for obvious reasons. Flash playback works though but the interactive part is what’s the hard part. This means that Flash videos will probably work after stage 1.
- With support for multiple streams different streams can also be played on in different heights (e.g. on each floor one TV at the same location)
- Users should be able to turn these streams off or get a confirmation before starting it. This is important for people who are afraid of eventually giving out their IPs to foreign people (which you do all the time browsing the web anyway but we all know that some people are very sensitive to that so this should probably be an option).
All this sounds great to me and by looking at the use cases for stage 1 it should already adress quite some use cases (examples are listed here). And should it be possible later to add HTML to your HUD and at some point even to perform some text input there (not really sure actually in what stage form support for individual users get’s tackled) we should have a quite decent solution.
And again I would like to invite you to participate by providing use cases. Some are listed already, many are hopefully waiting in your brain to get added to the wiki page!