Roadmap Update

The core software of the client is ready to be released. I am already using the client day to day. I wish there were a Google Chrome extension. But it has only Firefox and IE currently. So I am using more Firefox than usual.

The biggest remaining problem: although the software is ready, it needs configuration. If you have a web server which hosts an avatar description and if you have an XMPP account and if you are prepared to add both to the config file like I did for my tests, then the software works for you. This is probably not the case for most of you. Therefore, I have to add a bit of auto-configuration before I can release the software (is this correct?). I can release now, but would you want it with so much work on your side? Tell me what you think.

Anyway, I updated the roadmap and I will keep it up to date from now. Here is the task list:

IE Plugin, Installer, Setup, VS10, Support Software

Just a short notice what's currently happening: I am working on
  • some issues with the IE support. Stability is very good, but avatars were "behind" the browser window
  • installer for the IE extension
  • simple setup process which starts after downloading/installing, where you can select install browser extensions, select a nickname/avatar.
  • I upgraded to MS Visual Studio 2010. There are some migration issues to be solved. But I feel, that it is better to migrate now than during the beta phase.
  • There is now a separate code repository for the WebKit SDK. It has 1.5 GB headers, libraries and DLLs, which are needed to build and run the WebView module. Surprisingly the result is not larger than 10 MB.
Still next on the list:
  • Finishing Setup and browser extension installers
  • Simple Web site
  • Installer packaging and final testing

Asynchronous and Messaging

Our extensive unit test suite discovered, that
  • if two WebKit instances are loaded simultaneously, which use the same JS file from the local disk, then initializing one of the JS engines sometimes fails.
The average WebKit programmer will never experience this. The average WebKit programmer uses WebKit to make a web browser. And web browsers do not create many instances simultaneously. You press CTRL-T to open a new tab. Then another. Not two at the same time. Especially not from the local file system. Maybe that's the reason why nobody discovered the "feature" before.

Anyway, this means, that creation of WebKits must be serialized. This in turn, introduces all kinds of asynchronous behavior, which must be handled properly in many places. Asynchronous programming is always more challenging than spaghetti coding. Fortunately the client is message based. The image shows events which wait for other things to complete, before they are forwarded. In other words: the display must be loaded before it can show something. As simple as that.

This kept me busy several evenings and made a huge commit. Now I can continue with the setup/install process.

Internet Explorer Plugin, Autostart and System Tray

Three of the remaining six tasks are done:
  • IE Support: I implemented an IE browser helper which connects to the client and tells about opening and closing of tabs, about URL navigation and tab switches.
  • System Tray Icon: a small fun project. Since the client has no window, we need something else to control it. I created a small system tray icon which can start and stop the client.
  • Autostart: this was the easiest task. Just a registry setting, configured by the system tray icon menu.
Now remaining:
  • Settings dialog (do we really need this, we could start with config files and add a settings dialog later)
  • Simple Web site
  • Installer packaging and final testing
Next is the Web site. We need some place to download the installer and a simple way to configure the avatar, e.g. change animations and nickname.

Finally, we have to bundle all files and create an installer for Firefox and IE extensions. Not a simple task, especially the IE installer. And finally, finally there is much testing required because we want the installer to do it's job smoothly.

Translations and Release Packaging

In the last blog post I mentioned a list of remaining tasks:
  • Translations
  • Release packaging
  • Installer testing
  • Auto start
  • Tray icon
  • Settings dialog
  • Browser compatibility
  • Web portal
I just ticked off 2 tasks: Translations and Release packaging. This is the remaining list in the most likely work order:
  • IE Support
  • Auto start
  • Tray icon
  • Settings dialog
  • Simple Web site
  • Installer testing
Most of these tasks are of medium size. We might defer Google Chrome support until after the first beta release. Maybe someone from the community wants to take this task. We hope to complete these tasks until August 2011.

There are more tasks which should and will be done after the beta release:
  • Google Chrome support
  • Personal inventory of virtual items
  • Virtual Items on Web pages
  • Real Web portal with item shop and (avatar) trading
  • Facebook, Twitter, OpenID authentication
  • More social interactions (wuscheln and more)
  • Porting to MacOS
Some of these tasks are big chunks of work. But most will be done until the end of this year.

Chat Window

This is the brand new chat window.

It is a normal chat window as you would expect. But there are few facts worth mentioning:

1.
It is a module. Actually, it is a display module. This means, that while you are in the chat, you will stay in the room, even if the browser is closed. This is a feature which many weblin power
users wanted.

2.
It is HTML based. See the bold user names: a single line CSS style. See the resize bars between chat-out panel, chat-in panel, and participants panel: just a few lines of HTML with the help of jQuery UI Layout.

Do you remember a blog post one year ago about "Starting Avatar Display Development"? This was after the client core and protocol was implemented, but before you could see avatars.

Now the chat is implemented and I can paint a new picture with a blue box around the finished chat module (there is also a grey cross over the IRC protocol. We do not need it now. IRC is just a future option).

All this means, that the client is basically complete.

There are only small things missing, like:
  • Translations: there is a translation module, but not all visible texts are translated,
  • Installer: there is an installer, but the client must be packaged and tested before release,
  • Auto start with windows: currently you have to start as any other program by double clicking the icon,
  • Tray icon: would be nice
... and some bigger parts:
  • Settings and configuration dialog: there are config files and a config database, but no dialog yet,
  • Browser compatibility: currently only Firefox works, but we want IE and Chrome as well,
  • Web portal: a portal like weblin.com would be nice where you can change avatar images.
There is still much to do. It is not configured for normal users. It is for people who know what they are doing. It has still less features than weblin. It is an alpha version. But it's cool and it's on the way.

Tabs and Windows

I am working on support for multiple browser tabs. Good old weblin had only one room per browser window. If you changed the tab, then you changed the room. If you switched between tabs very often, then you switched between rooms all the time.

For the OVW client we will support multiple tabs in the same browser window. Each tab will join a chat room. If you change the tab, then you stay in the room. The client will always show the avatars of the visible tab. If the tab is changed, then the next set of avatars will be shown and avatars of the hidden tab will be made invisible.

With weblin there was only one avatar display for each room. If you opened the same page twice in two different browser windows, then you saw avatars only on one of them. The other browser had no avatars. This was sometimes confusing. Now, there will be avatars on all browser windows, even if they show the same page. You can chat in one browser and see the chat also in the other window. You move your avatar in one browser and it magically also moves in the other browser. This is made possible by a real MVC implementation. The avatars will be duplicated. They are just a view of the scene model.

We currently have a Firefox plugin. But of course, we also need IE and Chrome. These plugins are much more complex, than the simple windows message hook of weblin. In other words: they are more work. But they will provide much richer features in the future and ... tabs.