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.
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.
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.
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:
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.
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.
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.
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:
*** 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:
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
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.
*** 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]
*** 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: