{"id":887,"date":"2011-04-27T23:11:40","date_gmt":"2011-04-27T22:11:40","guid":{"rendered":"http:\/\/www.stenyak.com\/?p=887"},"modified":"2011-04-27T23:11:40","modified_gmt":"2011-04-27T22:11:40","slug":"crash-course-in-wave-and-apache-wave","status":"publish","type":"post","link":"https:\/\/www.stenyak.com\/?p=887","title":{"rendered":"Crash course in Wave and Apache Wave"},"content":{"rendered":"<p>This articles tries to give a brief introduction to that &#8216;<em>Wave<\/em>&#8216; thingy everyone used to talk about, explaining the concept, history overview and even how to get it running by yourself.<\/p>\n<h1>Quick history lesson<\/h1>\n<p>At the\u00a0<a class=\"vt-p\" href=\"http:\/\/en.wikipedia.org\/wiki\/Google_I\/O\">Google I\/O<\/a> conference on May 27, 2009, <strong>Google announced this new communication concept<\/strong>: &#8220;Wave&#8221;. Most technical people attending the event &#8220;<em>got it<\/em>&#8221; right away and applauded.<\/p>\n<p style=\"text-align: center;\"><object width=\"425\" height=\"344\" type=\"application\/x-shockwave-flash\" data=\"http:\/\/www.youtube.com\/v\/v_UyVmITiYQ&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0xCFCFCF&amp;color2=0xEEEEEE\"><param name=\"allowFullScreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"src\" value=\"http:\/\/www.youtube.com\/v\/v_UyVmITiYQ&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0xCFCFCF&amp;color2=0xEEEEEE\" \/><param name=\"allowfullscreen\" value=\"true\" \/><\/object><\/p>\n<p>Later that year, Wave was <strong>open for testing<\/strong> through the typical invite system. Google Wave, however, was still half baked and unusable. Most of the <strong>critics dismiss it as<\/strong> <em>yet another <strong>unnecessary<\/strong> social network<\/em>, <em>a solution waiting for a problem<\/em>, etc.<\/p>\n<p>Nearing the end of 2010, statistical analysis at Google showed the <strong>public reception wasn&#8217;t <\/strong>as<strong> good<\/strong> as expected.\u00a0Google decides to <strong><a class=\"vt-p\" href=\"http:\/\/googleblog.blogspot.com\/2010\/08\/update-on-google-wave.html\">pull the plug<\/a> <\/strong>and<strong> <a class=\"vt-p\" href=\"http:\/\/googlewavedev.blogspot.com\/2010\/09\/wave-open-source-next-steps-wave-in-box.html\">open source parts<\/a> of it<\/strong>, deviating resources to other projects.<\/p>\n<p>Before the year 2010 ends, with many parts of it open sourced by Google, the small dev community gathers the pieces, and <strong><a class=\"vt-p\" href=\"http:\/\/googlewavedev.blogspot.com\/2010\/12\/introducing-apache-wave.html\">starts the new Apache Wave<\/a> project<\/strong>.<\/p>\n<p>Nowadays, in 2011, Apache Wave is <a class=\"vt-p\" href=\"http:\/\/incubator.apache.org\/wave\/\">actively developed<\/a> by the open source community, and an <strong>alpha version<\/strong> can be <strong>easily run<\/strong> in your computer.<\/p>\n<p>&nbsp;<\/p>\n<h1>Cool&#8230; what was &#8220;wave&#8221; again?<\/h1>\n<p>For the computer literates, here you have two easy to understand comparison tables, using email as a reference:<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" class=\"size-full wp-image-905 aligncenter\" style=\"margin-top: 4px; margin-bottom: 4px; border: 2px solid black;\" title=\"wave-concepts\" src=\"http:\/\/www.stenyak.com\/wp-content\/uploads\/2011\/04\/wave-concepts.png\" alt=\"\" width=\"92\" height=\"70\" \/><\/p>\n<p>[table id=1 \/]<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" class=\"size-full wp-image-906 aligncenter\" style=\"margin-top: 4px; margin-bottom: 4px; border: 2px solid black;\" title=\"wave-software\" src=\"http:\/\/www.stenyak.com\/wp-content\/uploads\/2011\/04\/wave-software.png\" alt=\"\" width=\"92\" height=\"74\" \/><\/p>\n<p>[table id=2 \/]<\/p>\n<h1>What can Wave be used for?<\/h1>\n<p>Wave aims to be a\u00a0<strong>common denominator<\/strong> to many other communication forms. An <strong>open standard<\/strong> that anyone can use and implement (even in the form of proprietary servers or clients, like Google Wave). Let&#8217;s see an example:<\/p>\n<p>&nbsp;<\/p>\n<p><strong>In a common use case,<\/strong> your internet workflow could involve:<\/p>\n<ul>\n<li>An <strong>email<\/strong> client running on your desktop<\/li>\n<li><strong>Twitter<\/strong> client<\/li>\n<li><strong>Facebook<\/strong> tab<\/li>\n<li>An <strong>feed<\/strong> reader<\/li>\n<li>Receiving messages from two <strong>mailing lists<\/strong><\/li>\n<li>Manually checking some random movie <strong>forums<\/strong> weekly for new <strong>posts<\/strong><\/li>\n<li>Get notified by email of replies to some <strong>blog post comments<\/strong> you wrote<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>In the wave world case,<\/strong> your internet workflow would involve:<\/p>\n<ul>\n<li>A <strong>Wave<\/strong> client<\/li>\n<li>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 <a class=\"vt-p\" href=\"https:\/\/developers.facebook.com\/blog\/post\/110\">Facebook Chat<\/a> and <a class=\"vt-p\" href=\"http:\/\/code.google.com\/apis\/talk\/open_communications.html\">GTalk<\/a> run on top of Jabber).<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #000000;\"><strong>Most importantly<\/strong>, and this cannot be stressed enough<\/span>:<\/p>\n<blockquote><p>You are <strong>free to choose<\/strong> which <strong>clients<\/strong> to use as interface.<\/p>\n<p>And\u00a0you are <strong>also free to choose<\/strong> which <strong>servers<\/strong> to use for storing your data waves.<\/p><\/blockquote>\n<p>Now try doing that with Facebook, Twitter, Flickr&#8230;<\/p>\n<p>&nbsp;<\/p>\n<h1>Test a WaveInABox demo now<\/h1>\n<p>So you want to test the open source <strong>Apache Wave software<\/strong>? The wave community runs some test servers and clients on the net. The most common one is located at <a class=\"vt-p\" href=\"http:\/\/waveinabox.net\">http:\/\/waveinabox.net<\/a>, and is updated daily.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Disclaimer<\/strong><\/span>: WaveInABox server and client are still in\u00a0<strong>very<\/strong> early development stage, so do\u00a0<strong>not<\/strong> rely on them at all, and do\u00a0<strong>not<\/strong> expect everything to work correctly.<\/p>\n<p style=\"text-align: center;\"><a class=\"vt-p\" href=\"http:\/\/www.stenyak.com\/wp-content\/uploads\/2011\/04\/wiab.png\"><img loading=\"lazy\" class=\"size-medium wp-image-926 alignnone\" style=\"margin: 4px; border: 2px solid black;\" title=\"Wave In A Box\" src=\"http:\/\/www.stenyak.com\/wp-content\/uploads\/2011\/04\/wiab-300x209.png\" alt=\"Wave In A Box\" width=\"300\" height=\"209\" \/><\/a><\/p>\n<h1>Or deploy your own WaveInABox<\/h1>\n<p>Maybe you want to test it locally, perhaps play with the code, or even run it privately for personal purposes. In that case, it&#8217;s really easy to get it up and running in Linux:<\/p>\n<p><span style=\"font-family: monospace;\"># apt-get install mercurial ant default-jdk eclipse<br \/>\n<\/span><span style=\"font-family: monospace;\">$ hg clone https:\/\/wave-protocol.googlecode.com\/hg wave-in-a-box<br \/>\n<\/span><span style=\"font-family: monospace;\">$ cd wave-in-a-box<br \/>\n<\/span><span style=\"font-family: monospace;\">$ ant compile-gwt<br \/>\n<\/span><span style=\"font-family: monospace;\">$ ant dist-server<br \/>\n<\/span><span style=\"font-family: monospace;\">$ \ufeffant -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<br \/>\n<\/span><span style=\"font-family: monospace;\">$ .\/run-server.sh<\/span><\/p>\n<p>(there&#8217;s <a class=\"vt-p\" href=\"http:\/\/www.waveprotocol.org\/wave-in-a-box\">instructions for Windows and MacOSX<\/a> too)<\/p>\n<p>At this point, the server is running, and the web client can be accessed at <a class=\"vt-p\" href=\"http:\/\/localhost:9898\">http:\/\/localhost:9898<\/a>.<\/p>\n<h1>Final words<\/h1>\n<p>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.<\/p>\n<p>By the way, I&#8217;m reachable at <code>stenyak@googlewave.com<\/code> and <code>stenyak@waveinabox.net<\/code>. Feel free to wave me any time! \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This articles tries to give a brief introduction to that &#8216;Wave&#8216; 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\u00a0Google I\/O conference on May 27, 2009, Google announced this new communication concept: &#8220;Wave&#8221;. Most technical people attending the event [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[13,28],"_links":{"self":[{"href":"https:\/\/www.stenyak.com\/index.php?rest_route=\/wp\/v2\/posts\/887"}],"collection":[{"href":"https:\/\/www.stenyak.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stenyak.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stenyak.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stenyak.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=887"}],"version-history":[{"count":0,"href":"https:\/\/www.stenyak.com\/index.php?rest_route=\/wp\/v2\/posts\/887\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.stenyak.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stenyak.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stenyak.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}