wave

This section of Orient Lodge is where I explore Google Wave

Google Wave Federation Update

My Orient Lodge Google Wave Server has now successfully federated with several different servers, including the Google Wave Sandbox server. I’ve hit various bumps and curves along the way and hopefully this blog post will help others hitting similar curves.

Initially, I tried to use StartSSL for my certificates. However, my preferred web browser is Google Chrome and StartSSL just doesn’t work with Chrome. I gave up and went over to CACert.org.

I created a certificate file using a certificate signing request (CSR) to get a certificate from CACert. The generated certificate worked fine, and I started my wave server with just that certificate file. Later, I received signed certificates for my XMPP server as well, but these did not help with federation.

On the mailing list, there was a long discussion about people chaining certificates, so I added CACert’s root certificate in my chain.
e.g.

CERTIFICATE_FILENAME_LIST=${WAVE_SERVER_DOMAIN_NAME}.crt,cacert.crt

(I had saved CACert.org’s root certificate as cacert.crt)

With that, I managed to successfully federate with another wave server that runs using CACert.org certificates. However, I could not connect with WaveSandbox or other federated servers. Some of the problem connecting with other federated servers may have been because we are all struggling to get federation up and running.

Last night, I federated with one server whose owner I’ve been talking with on the production Google Wave server. What was interesting was that he could send blips to me, but I could not send them back to his server. He checked the log and found that his server was rejecting my requests because of a signing error. He suggested moving to StartSSL and noted that while it does not seem to work well with all browsers, it does work well with Firefox.

So, I went to Firefox and set up an account and got a certificate. I went back and forth trying to get the certificate to validate the certificates. If you can’t validate them with the openssl verify command, then the odds are your wave server will crash when you try to run it
In the end,

openssl verify –CAfile startssl.pem –untrusted sub.class1.server.ca.pem orient-lodge.com.crt

worked.

As part of my testing, I ran the keytool commands:

keytool –importcert –storetype jks –keystore /etc/java-6-opensdk/cacerts –file startssl.pem
keytool –importcert –storetype jks –keystore /etc/java-6-opensdk/cacerts –file sub.class1.server.ca.pem

With all this in place, I changed my run-config.sh file to include:

CERTIFICATE_FILENAME_LIST=${WAVE_SERVER_DOMAIN_NAME}.crt,sub.class1.server.ca.pe
m,startssl.pem

When I restarted my wave server, I could federate with wave24z, wavesandbox and even a CACert certified server. I’ve tested various combinations, federating with several different servers at the same time. This seems to work well. However, if you add servers federated with CACert to servers that do not recognize the CACert certified server, the wave appears to crash on all the servers.

I also ran into a problem with Wavesandbox where I was typing along, and seeing the typing show up on two other federated servers, when it stopped mid sentence. Wavesandbox had a message about the wave becoming unstable and marking it crashed. This is an area that needs further exploration.

For more on this, and a major hat tip to Ralf, whom I worked with a lot trying to get the wave server running, please got out and read his blog post Federate Google Wave sandbox with your own (FedOne) server.

A few other notes, partly as a followup to his blog post:

First, my environment:
Hosted via a 512M Slice at Slicehost. Slicehost is owned by Rackspace.
Running Ubuntu 8.04
With that, I’m running java-6-opensdk instead of java-6-sun
Now using certificates from StartSSL

If people want access to my wave server, please contact me directly.

P.S. I also added the StartSSL root certificate to Google Chrome on my main computer and that seems to have fixed the problem with their site.

(Categories: )

Federated Google Wave Server Update

Today, I did continued testing on my Federated Google Wave server. As a starting point, I received an email with a test id for the WaveSandbox server. This is the server to test federation against and I was glad to be able to do some testing there.

I found that I was still having problems connecting to the sandbox server, and started reading my logs a lot more closely in search of clues. I tried a collection of different things to get the server to work. These included changing my certificate to being signed by CACert.org, adding signed certificates to my XMPP server, adding an SRV DNS record for my server, and ultimately, opening up ports 5269 and 5270 in my firewall. These steps are described in the wiki page about federation. It seems like the key was opening port 5269.

With that, I am now successfully discovering wave servers and sending messages back and forth with them. However, I have yet to successfully create a wave on one server and then add a user from another server and have the other user see the wave.

I did use the client-console to connect to another server and had a great discussion on the production wave server about ways of testing. To connect on Google Wave, do a search on “wave federation” to see the waves where we’ve been working on this.

It seems like a lot of people are having problems with signed certificates. In looking at various reports, it seems like it is if they are using a signed certificate from cacert.org and java-6-sun. I’m using a signed certificate from cacert.org, but I used java-6-opensdk and this seems to be working okay.

I also did have one crash when I attempted to connect to a wave server that does not yet have signed certificates. My configuration is looking for signed certificates.

(Categories: )

Latest Explorations in Google Wave

During a few moments of free time today, I did some more explorations into Google Wave. Much of the explorations my friends are doing are using Google’s Wave interface connected to Google’s Wave server. If you’ve been invited, you should spend some time exploring the interface and thinking about use cases for Google Wave. It is well worth the exploration. One friend pointed out The Complete Wave Guide as a good source for ideas about how to use Wave. However, I’m much more interested in the geeky side of things.

So, I’ve set up my own Wave server and described the efforts in Google Wave Federation on Ubuntu. Since then, I started doing some testing. First, I connected with the run-client-console.sh client program. I managed to connect to my wave from a couple different logins and see that it was behaving the way it seemed like it should.

I’ve also set up another interesting aspect. I wrote a very simple shell,

#!/bin/bash
cd /home/waveserver/wave-protocol
./run-client-console.sh $USER

I then use that shell as the login shell for users that I’ve set up. So, a person logging in on a predefined account gets taken into the client-console. It has worked nicely for testing.

Another interesting test that I did was I build the wave-protocol software on another machine. This second machine is behind a firewall and does not have an XMPP server on it. So, when I started up the client console, I wasn’t expecting to be able to do much. In fact, if I tried starting a new wave, I would get a Java error. However, I was able to do something fairly interesting. I could connect to my wave server using the client and talk between local wave users. It also appears as if I can connect with other federated wave servers.

The other thing that I want to do is to add people from different federated servers to various waves. So far, I’ve had no luck on doing this. The best, perhaps, would be to use Google’s Wave Sandbox, but I don’t have an account there yet. I’ve applied and am waiting.

As I understand things, you need to have certificates enabled to connect with Google’s Wave Sandbox. Since XMPP.NET is no longer providing certificates, and I’ve had no luck with startssl so I tried CACert. Setting up the CACert certificate was fairly easy.

The next issue was making sure that I had the latest version of the software. I’m not used to working with mercurial, which is used to distribute the software, and it took me a little while to figure out that what I really wanted to do was go to my wave-protocol directory and execute the command

hg log | head -20

This shows the top twenty lines of the log, from which you can look at the changeset to determine which is the most recent. Currently, I’m using changeset 117 for my installation.

So, I can navigate around some different federated waves and try to figure out why they don’t seem to federate the way I would like. It may be that this is an aspect of the client console not showing the federation and not a problem with the servers failing to federate with one another. That is another aspect to check out.

This takes me to the next aspect of Google Wave Federation. So far, I’ve only used the text based client-console that comes with the software. However, there are some very interesting other projects emerging. One is Ruby on Sails. This is a nice client for testing Wave. However, I haven’t managed to connect to it via federation yet. When I try from my machine, I get an error saying that wave.danopia.net does not appear to have wave.

Another interesting client appears to be PyGowave, a Google Wave Client in Python. Unfortunately, I’ve been told that it does not yet support federation and I did get a similar error when I attempted to connect to it.

As another note, it has been suggested that I should run with WAVESERVER_DISABLE_SIGNER_VERIFICATION=false

I restarted my server in this mode and it still appears to behave essentially the same way. One thing that I do notice is that waves do not appear to be persistent between invocations of the wave server. When I shut it down and restart all the waves and blips disappear. This is okay for testing for right now, but persistence of waves seems to be a fairly crucial underlying function that is necessary.

So much for testing for now. If you are running a Google Federated Wave server, playing with a fun new client, or want to test in other ways, let me know.

(Categories: )

Google Wave - Naysaying the Naysayers

I just read a tweet pointing to CogDog's recent thoughts on Google Wave. He complains about mostly seeing Google Waves talking about Google Wave and sums up his thoughts saying "I am not seeing any value in endless chatter on the Surfboard."

I must admit, I have a different perspective which I expressed in my comment on his blog, included here for your reading pleasure

I am glad I read your post. It reassures me that there is a good future for Google Wave. Before disruptive technology gets a chance to disrupt things, there need to be naysayers complaining about it. Sort of makes me think of the early days of Twitter when people talked about how useless Twitter was and how everyone on Twitter just spent all their time talking about Twitter. Likewise, it makes me think of the early days of Blogging. With each of those, not only was there the phase of introspection, but there was also a phase of people complaining about the new media and the navel gazing on it.

Fortunately, we don't have as much talking about the medium in virtual worlds, which is probably why virtual worlds are so much more pervasive than blogging or tweeting. (* snark *)

Yet perhaps, this self reflection is important. Before a disruptive technology can get a chance to disrupt, people need to experiment with it and explore ideas of what it might be possible to do with the technology that hasn't been explored yet and complaining about things that just aren't working right with the technology yet.

To me, what is important are the underlying aspects; the ability to create gadgets that can be shared in waves as well as on other platforms; the ability to federate servers; and the ability to extend the platform.

Okay. That's my counter-rant. Go ahead looking at what is, and asking why. I'll go about experimenting with what is not fully yet, and asking, hmm, I wonder what I can do with this.

So, what are you thinking about Google Wave, the navel gazing taking place on it, (or should I say Wavel Gazing?) Will this technology disrupt? What are your ideas about what the disruption might look like?

(Categories: )

Google Wave Federation on Ubuntu – Openfire XMPP, StatusNet, Asterisk and Beyond

Last night, I spent more time exploring Google Wave, and find there are so many more areas that I need to explore. I am especially interested in Google Wave Federation.

On the GoogleCode blog, they talk about “the Google Wave Federation Protocol, the underlying network protocol for sharing waves between wave providers.” They go on to explain, “Yes, that's between wave providers: anyone can build a wave server and interoperate, much like anyone can run their own SMTP server.”

With this in mind, I set up my own wave server. To do this, I followed the steps in the Google Wave Federation Prototype Server Installation Wiki Page.

At first glance, it looked nice and straight forward for Debian and Ubuntu users. Make sure you have Java 6 installed, grab the Openfire package, install it, configure it, and add the Wave software. Unfortunately, it turned out to be a bit more complicated.

If you are running on an older version of Ubuntu, you cannot simply install sun-java6-jdk. The package isn’t found. You can install openjdk-6-jdk, but then the Debian package can’t find sun-java6-jdk and it won’t install.

I did install sun-java6-jdk and Openfire 3.6.4 on one of my machines. However, I couldn’t get it to start. Then, when I finally got it to start, it wouldn’t recognize the administrative password. I went through several cycles of installing, uninstalling, tweaking, and couldn’t get things to work consistently. It was then that I discovered two important things:

First, when you start Openfire, depending on the machine you are using, it make take a minute or two before it will start responding to http requests. So, install Openfire. Wait a minute or two. Then, attempt to configure it. This led me to the second issue. After you configure it and set up the administrative userid and password, it appears that you need to restart the Openfire service. Once you’ve restarted it, and given it a minute or two to get up to speed, you can login to the administrative panel, and continue on with the configuration.

Openfire is an XMPP server. XMPP is a standard protocol that is used for chat programs like Google Talk. It is used by StatusNet for connecting with their micro blogging. StatusNet connects with Twitter, and the Openfire server has plugins that allow connections to other IM services like AOL and Yahoo. Openfire also has plugins to connect to Asterisk and SIP, so that you can use an Openfire session to connect to Voice over IP services. These are things I have yet to test.

My first test to make sure that Openfire was up and running was to run Pidgin, a chat service that runs nicely in Ubuntu. Not only did it connect nicely with my Openfire server, but I managed to connect over IPv6 for some of my testing.

Once I had Openfire running smoothly, the next step was to add the Wave component. In the instructions, they say to download the software using the ‘hg’ command. I did not have ‘hg’ as an available command. Hg is part of the mercurial package, so I did a

sudo apt-get install mercurial

To install Mercurial. Then, I retrieved the code and tried to build it. However, I had initially installed just the Java Runtime Environment, and I didn’t have ‘ant’ available as a command. I installed ant and the full Java Development Kit and the build worked. It took about a minute to build on my machine.

The next step was to build certificates. The Wiki page for Certificates provides a simple easy way to build your own certificates. However, it suggests getting a CA-issued certificate. They suggested going to http://xmpp.net/. However, as of yesterday, XMPP stopped operations. They have a link to https://www.startssl.com/. However, Google Chrome says that StartSSL’s certificate is not valid. On top of that, the StartSSL pages just aren’t working for me right now. So, I’m running with my own self-signed certificate.

The next place where I ran into an issue was installing my certificate. The run-config.sh file has a line

CERTIFICATE_FILENAME_LIST=${WAVE_SERVER_DOMAIN_NAME}.cert

If figured I’d just name my cert file to be my domain name. The problem is that the procedure for making cert files uses an extension of .crt instead of .cert So, my first attempt to run failed. Fortunately, I found that fairly easily and now have the server up and running.

The Openfire administration pages shows the component session running. The message from the wave server looks like it is initializing okay, but it isn’t discovering any other wave servers. It is getting a message that

INFO: Couldn't find wave on initech-corp.com
initech-corp.com does not appear to have wave

So, it looks like I’ve got a wave server up and running, but not connected to anything or doing anything. If anyone else is experimenting with Google Wave Federation, let me know. In addition, if anyone wants to do other things with my XMPP server, I’ve set it up so that you need to contact me to set up a userid, but I’ll set up userids for people that want to experiment.

Later, I’ll reinstall statusnet. I had set up a very early instance of laconi.ca, the precursor to statusnet, but I haven’t done anything with it in ages. Now that I have a nice XMPP server, I will want to do an new installation and see how it runs with Openfire and ultimately, Google Wave Federation. If I really get motivated and have some free time, I’ll work on getting Asterisk up and running again. Also, still on the list is looking at Shindig and Drupal for Google Gadgets, but that is even further down the list.

So, are you doing anything interesting with Google Wave Federation? Got any cool ideas?

Syndicate content