googlewave

lca2010 Day 1

Well it's the end of day one of linux.conf.au here in Wellington and I have to say it's been a pretty good start to the event.

Breakfast, or so it claimed:

I left sleepy Dapto at 4am yesterday morning to make it up to Sydney for my 8:45 flight. Everything went well, and I met up with other lca attendees (Melissa Draper, Michael and Brett Morgan). Check in was fine and we were soon boarding. I took out my copy of LotR and the trip commenced.

Everything was fine, it was reasonably clear so got a good view of the ocean out of the window. Then they announced breakfast. "Hrmm" I thought, "I am a little hungry, I shall partake of their offerings."

Mistake.

When the flight attendants reached my row they had run out of the "cold breakfast". Instead they claimed they had scrambled eggs so I said "not a problem" and received my pre-heated meal. On taking the wrapper off the meal I was presented with what looked like a small mound of oatmeal (which I was to find was in fact meant to be a hash brown), what appeared to be a piece of leather (bacon) and something approaching scrambled eggs. This "delightful" meal was finished off by the presence of some mysterious red liquid with lumps in it (baked beans). Yum

Arriving in UnZud

Well I survived the meal and we finally arrived in Wellington. I have to say the approach to Wellington is very impressive from what I could see. It really did drive home the idea that New Zealand is a landscape still developing and growing as opposed to Australia, a land known for its deserts and plains in which the last million years has passed with nary a change.

FedOne inching closer to being useful

Okay I've added a new section to the FedOne book. This time we're concentrating on the FedOne Agent framework, which provides the same sort of functionality to FedOne that the Robots API does for Googles own Wave servers.

FedOne Agent Framework

In other FedOne news, by this time next week, we may be able to talk to Google Accounts from FedOne servers. From what I've heard they're going to be opening up the Sandbox Federation port, which will allow them to test how it all goes before opening up the Preview port, and will allow people like me to test how well our Agents translate across :)

Exciting times.

Oh and I've heard of movement on two different non Google Wave implementations. I'm going to grab the source and have a play soon, will blog about the results.

Wave - Working Around The Hype

I haven't blogged for a little while, and my only excuse is that I've been concentrating on doing rather than writing about it.

Anyway I thought I would put down some notes about the stuff I've been doing with Google's Wave and the avalanch that has been the launch of the new Beta Preview.

Firstly I should mention the new area I've setup for the work I am doing with Wave. http://wavingtheshiny.collaborynth.com.au/ is basically my Wave workspace, where I'm going to work on a range of different projects, from an embryonic book about the FedOne Wave Reference Server to a wiki that will contain information about the different Wave related projects I'm going to be working on.

Okay, next up, I am so sick and tired of seeing the "We have 000's of invites" spam awash on twitter and other places. Please people if you are looking for an invite, hit up wave.google.com this is the only legitimate place to sign up. Do not randomly beg people for an invite, do not believe the people who claim that if you just fill out a form and sign up for this free offer you're in like Flynn.

Right now for the hype. More has been written about Google Wave over the last week than since the IO Conference. This is understandable, all of a sudden a whole lot more people are getting a real look at the Googles system and seeing what it can do for them. I would like to make a couple of points though:

Greetings Agent Smith

If you're running the Wave Reference Server I would suggest that now is the time to update and rebuild it. In the latest release of the code, the guys at Google have added "Agent" support and an echoeyagent to demonstrate how to write your own Agents.

Agents fulfil the same roles as Robots in the Wavesandbox, being programmatic participants in the wave which respond to other users.

So let's see who can write the first third party agent.

Google Wave - Don't Bite Off More Than You Can Chew

I'm a parent to three wonderful and sometimes wonderfully frustrating children. Each of them has gone through that stage where they see something they like and believe they need to cram as much as they can in their mouth at once. You parents out there know this bit, their eyes bug out as they realise that they can't move their jaws because they're crammed to overflowing. What usually results is a huge mess and tears.

That's the same sort of thing I'm seeing with the "Google Wave is to complicated to get!" type claims being tweeted and blogged about. People have rushed in, cramming as much as they can in as little time as possible, and then when the inevitable mess occures, they declare that Wave is all too complicated and won't be a success.

To them I say the same thing I say to my kids. Don't bite off more than you can chew.

The World of Wave isn't some monolithic entity that demands that you understand all before being allowed into the secret club. Take me for instance, I do not pretend to understand the intracacies of Operational Transformations, and yet I am still forging ahead with building openausbot and learning how to setup and operate the WRS. Because I can understand those areas, without the need to understand the underlying magic that allows for the WRS and Robots to work.

With every new technology there is a learning curve. For users, it's going to be getting used to the new "real time" way of communicating and collaborating. For developers it depends on the area they are interested in. Robot and Gadget writers are getting their heads around the Wave API (which is a little bit of a moving target at the moment, but that's understandable this early in the game). Server and Client writers have probably the steepest learning curve at the moment, but they are getting there.

WRS - The Next Step

Okay so now that you've got the WRS all setup and federated, you're talking to people around the world with the console client and wondering what to do next.

Well personally I think the next thing to do is have a look at what needs to be added to the WRS to move it beyond "Reference" and into something that can be used to really explore the Wave Concept.

Below is what I think the WRS is going to need and why:

Client:

The WRS needs a web based client for a couple of reasons.

  • The Wavesandbox client demonstrates many of the features that make Wave "teh awesome". The text console while good for doing very basic testing cannot replicate many of those features (inline blips anyone? picture pasting?). So in order to demonstrate the real power of hosting your own Wave Server we need a WRC (Wave Reference Client).
  • The code of the WRC would need to be able to demonstrate exactly how best to use the existing (and hence defacto standard) protocols for communicating between the server and the client. This will greatly aid in the design of both the future "real standard" as well as new clients, both web and "native".

Persistance:

Currently the WRS has no way of tracking waves beyond the next restart. All information is kept in memory, rather than accessing a RDBMS or other storage method. This means that all information about the current/past waves are lost when you shutdown the server.

Being able to connect the WRS to a storage method would give a much better idea of the requirements for operating your own Wave infrastructure, particularly in terms of performance and hardware required.

User Management:

How To - Install WRS On Windows

*** Edit the information contained here is out of date. To find more up to date information please visit here: http://wavingtheshiny.collaborynth.com.au/books/fedone-book/fedone-book ***

Okay so I've worked out how to install the WRS on Linux (well Debian and Redhat based Distros anyway). So now I'm planning How Tos for the following Operating Systems:

  • Windows
  • OpenSolaris
  • FreeBSD

The main focus of this How To is going to be on actually getting and installing the various packages that you will need to complete the installation process under Windows.

Requirements:

Building the WRS under Windows is going to take a little bit more downloading and configuring than under Linux. Whereas Linux has tools such as Synaptic and Yum to manage software installation, Windows is sadly lacking in this. So this means lots of manual downloading.

Suns Java SDK

You will need Suns Java SDK to build the WRS on Windows. To get this visit the following page:

http://java.sun.com/javase/downloads/index.jsp

And select the most up to date version of the Java SE Development Kit. At the time of writing, this is JDK Update 14. Go through the process of downloading and installing the SDK.

Ant

While the SDK is vital it does not include a vital tool required in the building of the WRS, the Apache Ant Build Tool. There are a number of ways to get Ant for Windows, however I found the following project the easiest to use:

http://code.google.com/p/winant

OpenSSL For Windows

WRS Installer Script

Okay I've got version 0.1 of a WRS installer script here.

It's a bash script and has been pretty well tested in Ubuntu. It does have an alternative for Redhat based distro's but this is basically untested. The script itself is meant to manage the downloading and installing of the various pieces of software required to setup the server. It doesn't handle the Openfire management or DNS setup you will require.

One of the issue regarding the script and RH based distro's is that Sun's JDK isn't available by default, rather they carry the OpenJDK. No testing has been done with the WRS and OpenJDK so it's entirely possible that something will break.

Anyway download and let me know how you go.

Federating Your Wave Server

*** Edit the information contained here is out of date. To find more up to date information please visit here: http://wavingtheshiny.collaborynth.com.au/books/fedone-book/fedone-book ***

Now that you've setup your Wave Reference Server, you're probably going to want to test out one of THE big features. Federation. This post will take you through setting it up.

What Is Federation?

Federation is the thing that moves Wave out from JAGB (Just Another Google Beta) to being something more. It is the server to server communication protocol. This is what allows you to run your own Wave server and communicate with any other Wave server.

Okay, Cool, So How Do I Set It Up?

We actually did most of the work for setting up Federation in the last tutorial. To finish the job we simply need to do the following:

Ports: If you're running the server behind a firewall or NAT, then you'll need to setup port forwarding for port 5269 on your device to your Server.

DNS: For the moment there isn't an "Official" port for the Wave Federation Protocol. This means that the WRS relies on SRV records to indicate which port it should be communicating with the remote server on. Below is an example of an SRV record for your Wave Server.

_xmpp-server._tcp.blah.com. 3600 IN SRV 10 0 5269 wave.blah.com.

Also if this is a new subdomain for your domain don't forget to add an A record.

wave.blah.com  IN A [IPADDRESS]

Wave Reference Server - A Startup Guide

*** Edit the information contained here is out of date. To find more up to date information please visit here: http://wavingtheshiny.collaborynth.com.au/books/fedone-book/fedone-book ***

When Google announced the new Wave technology at the IO conference earlier this year they made a promise. That not only would the Protocols be Open, but they would also be Open Sourcing  "the Lions Share" of the code they were developing for the Wave.

Up until recently, that amounted to Robot and Gadget code, however true to their word, Google has released the first version of their Wave Reference Server under the Apache License. The instructions below will take you through the process of installing that server.

Please note: These instructions have been written for Ubuntu Jaunty, however I think we a little jigging around can be used for other distros.

What is the Wave Reference Server:

The Wave Reference Server is Googles first release of the code  behind their Wave server offering. Written in Java, it offers developers a chance to get into the guts of the Wave system and better understand how it works.

As well as the Server itself, the WRS comes with a Text based Wave Client. It is very rudimentary at the moment, however as with the Server it's an opportunity to see how exactly the Server and Clients communicate with each other. This can then be used to build other more featureful clients.

Requirements:

Syndicate content