This articles tries to give a brief introduction to that ‘Wave‘ thingy everyone used to talk about, explaining the concept, history overview and even how to get it running by yourself.
Quick history lesson
At the Google I/O conference on May 27, 2009, Google announced this new communication concept: “Wave”. Most technical people attending the event “got it” right away and applauded.
Later that year, Wave was open for testing through the typical invite system. Google Wave, however, was still half baked and unusable. Most of the critics dismiss it as yet another unnecessary social network, a solution waiting for a problem, etc.
Nearing the end of 2010, statistical analysis at Google showed the public reception wasn’t as good as expected. Google decides to pull the plug and open source parts of it, deviating resources to other projects.
Before the year 2010 ends, with many parts of it open sourced by Google, the small dev community gathers the pieces, and starts the new Apache Wave project.
Nowadays, in 2011, Apache Wave is actively developed by the open source community, and an alpha version can be easily run in your computer.
Cool… what was “wave” again?
For the computer literates, here you have two easy to understand comparison tables, using email as a reference:
|Concept description||E-Mail term||Wave term|
|A piece of information||an email||a wave|
|The act of sending a piece of information||to email someone||to wave someone|
|Protocol||SMTP, POP3, IMAP...||Wave Protocol|
|Interaction between different servers||ability to send email from one @domain to another @domain||wave server federation|
|Development of the project concepts and reference software||IETF + independent developers?||Apache Wave|
|Software description||E-Mail software||Wave software|
|Proprietary server+webclient package||Yahoo! Mail||Google Wave|
|Open source server+webclient package||Zimbra||Wave In A Box|
|Open source server||Exim||Google FedOne|
|Open source client||Thunderbird||Google Wave-Splash|
|Open source webclient||RoundCube||Micro-Box|
What can Wave be used for?
Wave aims to be a common denominator to many other communication forms. An open standard that anyone can use and implement (even in the form of proprietary servers or clients, like Google Wave). Let’s see an example:
In a common use case, your internet workflow could involve:
- An email client running on your desktop
- Twitter client
- Facebook tab
- An feed reader
- Receiving messages from two mailing lists
- Manually checking some random movie forums weekly for new posts
- Get notified by email of replies to some blog post comments you wrote
In the wave world case, your internet workflow would involve:
- A Wave client
- Or, alternatively, go the old route: keep using the very same specific clients for each of those services, even if they use the Wave Protocol under the hood (just like Facebook Chat and GTalk run on top of Jabber).
Most importantly, and this cannot be stressed enough:
You are free to choose which clients to use as interface.
And you are also free to choose which servers to use for storing your data waves.
Now try doing that with Facebook, Twitter, Flickr…
Test a WaveInABox demo now
So you want to test the open source Apache Wave software? The wave community runs some test servers and clients on the net. The most common one is located at http://waveinabox.net, and is updated daily.
Disclaimer: WaveInABox server and client are still in very early development stage, so do not rely on them at all, and do not expect everything to work correctly.
Or deploy your own WaveInABox
Maybe you want to test it locally, perhaps play with the code, or even run it privately for personal purposes. In that case, it’s really easy to get it up and running in Linux:
# apt-get install mercurial ant default-jdk eclipse
$ hg clone https://wave-protocol.googlecode.com/hg wave-in-a-box
$ cd wave-in-a-box
$ ant compile-gwt
$ ant dist-server
$ ant -f server-config.xml -Dwave_server_domain=$HOSTNAME -Dsigner_info_store_type=file -Daccount_store_type=file -Ddelta_store_type=file -Dattachment_store_type=disk
(there’s instructions for Windows and MacOSX too)
At this point, the server is running, and the web client can be accessed at http://localhost:9898.
Even if this article is very shallow, I hope it provides a different perspective of the whole subject, and helps people see the actual purpose behind the waves.
By the way, I’m reachable at
firstname.lastname@example.org. Feel free to wave me any time! 😉