<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">Process&#45;one Blogs</title>
    <subtitle type="text">Process&#45;one Blogs:Process&#45;one Blogs</subtitle>
    <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/" />
    <link rel="self" type="application/atom+xml" href="http://www.process-one.net/en/blogs/atom/" />
    <updated>2008-03-05T16:51:05Z</updated>
    <rights>Copyright (c) 2008, Process-one</rights>
    <generator uri="http://www.pmachine.com/" version="1.5.2">ExpressionEngine</generator>
    <id>tag:process-one.net,2008:03:05</id>


    <entry>
      <title>Open AIM: AOL opens its Instant Messaging protocol</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/openaim_aol_is_opening_its_instant_messaging_protocol/" />
      <id>tag:process-one.net,2008:en/blogs/3.243</id>
      <published>2008-03-05T14:32:00Z</published>
      <updated>2008-03-05T16:51:05Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <content type="html"><![CDATA[Today, AOL relaunched its OpenAIM initiative and published the specifications of the AIM and ICQ protocol. <p><a href="http://dev.aol.com/aim">OpenAIM</a> is an initiative from AOL that aims at building a development community around its Instant Messaging service and protocol. This time it seems that they are dedicated to seriously open their Instant Messaging network and give access to their IM platform. You can now officially build a compliant AIM / ICQ client, use the platform to push presence back and forth, write plugins and bots that plug to the AIM network. The protocol is called Oscar and fully described <a h href="http://dev.aol.com/aim/oscar/">here</a>.</p>

<p>This is a very clever move from AOL. They decided that the value lies in their users base and in the network they provide. They thus want to grow the community usage of their platform. Revenue is based on advertising. You can filter ads in your client but you can also decide to build an ads supported software and benefit from AOL advertising network. You will thus be able to share advertissement revenues with AOL. I bet that MSN and Yahoo! will now think about the large set of opportunity that this model opens.</p>

<p>What does this move mean for the Instant Messaging community ? Simply, it means that building a client for AIM is now officially possible. Building an Instant Messaging aggregator is possible regarding the AIM / ICQ protocol aggregation.</p>

<p>For ProcessOne, it also means that AOL and ICQ gateway software can be published officially. Maybe it is time to dream about the most scalable AIM / ICQ gateway ever published (<b>hint, hint !</b>).</p>

<p>AOL has now opened the AIM / ICQ platform and protocol. Now, there is no major reason to not fully adopt the XMPP protocol. See my previous blog post on that topic for more information: <a href="http://www.process-one.net/en/blogs/article/the_aol_xmpp_scalability_challenge/">The AOL XMPP scalability challenge</a>. The missing part is still allowing to chat with a contact without requiring an AIM or ICQ account. In the XMPP world, this is called federation. I am not convinced that they will do this move if they managed to extend advertisements and revenue sharing to this larger community.</p>

<br/>
<script type="text/javascript">
digg_url = 'http://www.process-one.net/en/blogs/article/openaim_aol_is_opening_its_instant_messaging_protocol/';
</script>
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script>
<script type="text/javascript" src="http://reddit.com/button.js?t=2"></script>
<script type="text/javascript">
slashdot_badge_style='v0';
</script>
<script src="http://slashdot.org/slashdot-it.js" type="text/javascript"></script>

      ]]></content>
    </entry>

    <entry>
      <title>XMPP DevCon day 2</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/xmpp_devcon_day_2/" />
      <id>tag:process-one.net,2008:en/blogs/3.239</id>
      <published>2008-02-26T09:58:00Z</published>
      <updated>2008-02-26T11:14:13Z</updated>
      <author>
            <name>Jérôme Sautret</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <content type="html"><![CDATA[Quick summary of the second and last day of the XMPP DevCon. <br/><br/>
On this second day, participants have talked about file transfer. There is some incompatible different needs (streaming vs offline/MUC, web clients constraints, NAT...), so we've finally focused on a negotiation protocol that would allow clients to choose the right method. The next discussion was about server side messages archiving. IMAP was considered as an option, but <a href="http://www.xmpp.org/extensions/xep-0136.html" title="XEP-0136">XEP-0136</a> seems almost fine. We've finally addressed some miscellaneous topics like SSO/OAuth (how to share XMPP authentication with web applications) and distributed MUC (so that people can consider replacing IRC with MUC) which led us to consider SRV records for XMPP services.
      ]]></content>
    </entry>

    <entry>
      <title>XMPP DevCon day 1</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/xmpp_devcon_day_1/" />
      <id>tag:process-one.net,2008:en/blogs/3.238</id>
      <published>2008-02-24T17:54:01Z</published>
      <updated>2008-02-26T11:06:12Z</updated>
      <author>
            <name>Jérôme Sautret</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <content type="html"><![CDATA[Quick report of the first day of the XMPP DevCon in Bruxelles. <br/><br/>Today was the first of the two days <a href="http://wiki.jabber.org/index.php/FOSDEM_2008" title="XMPP DevCon">XMPP DevCon</a> at the Atlas hotel in Bruxelles, Belgium. Lots of interesting people were here and we even ran out of chairs in the room, which may be a sign of the growing interest in XMPP...
<br/>
So far, we've talked about the abuses that a public XMPP server may face (botnets, spam, DoS...) and how we can prevent them (providing operators contact information, servers reputation, shared black lists...). XMPP on mobile devices was also a hot subject, with proposed solutions to limit CPU and traffic usage (traffic filtering based on profiles, fast reconnect, cached rosters...). Finally, we had some vast discussions on synchronizations (whiteboarding, shared editing...), with many different approaches. Now it's beer time before day 2...

      ]]></content>
    </entry>

    <entry>
      <title>ejabberd 2.0.0</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/ejabberd_200/" />
      <id>tag:process-one.net,2008:en/blogs/3.237</id>
      <published>2008-02-21T14:27:00Z</published>
      <updated>2008-02-21T14:34:10Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <content type="html"><![CDATA[ejabberd 2.0.0 has been released after more than one year and a half of work. <p>We are already working on improvements for ejabberd 2.1 branch. The roadmap is still described on this page: <a href="http://www.process-one.net/en/blogs/article/angie_ejabberd_roadmap_updated/">Angie: ejabberd roadmap updated</a>.</p>
<p>For now, let's celebrate !</p>
      ]]></content>
    </entry>

    <entry>
      <title>We are hiring Erlang developers</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/we_are_hiring_erlang_developers/" />
      <id>tag:process-one.net,2008:en/blogs/3.233</id>
      <published>2008-02-20T09:16:00Z</published>
      <updated>2008-02-20T11:51:05Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="Erlang"
        scheme="http://www.process-one.net/en/blogs/article/category/Erlang/"
        label="Erlang" />
      <content type="html"><![CDATA[Join a company of talented developers today ! We are working on innovative projects with one goal in mind: build the de facto reference instant messaging platform. <p>We are now hiring Erlang coders to join our development and support team. You will participate to ejabberd development, customer projects but also work on the  new exciting projets we are currently preparing.</p>
<p>Experience in Erlang and/or XMPP protocol is a big plus, but is not mandatory.</p>
<p>The jobs are preferably based in France, but our company being international and our team distributed across the world, remote work is possible.</p>
<p>If you are interested, please drop me a mail (mremond at this website domain) with a summary of your technical achievements and a description of why you would love working at Process-One.</p>


      ]]></content>
    </entry>

    <entry>
      <title>IM 2.0 or how XMPP can become the network protocol of the Web 2.0 era</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/im_20_or_how_xmpp_can_become_the_network_protocol_of_the_web_20_era/" />
      <id>tag:process-one.net,2008:en/blogs/3.232</id>
      <published>2008-02-20T07:58:00Z</published>
      <updated>2008-02-20T08:06:29Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <content type="html"><![CDATA[Tim Julien has written an interesting blog post explaining how XMPP is slowly being adopted to power the social web. <p>I found this nice blog post by Tim Julien: <a rel="nofollow" href="http://blog.limewire.org/?p=252#">IM 2.0</a>. Regarding the recent acceleration in XMPP usage, he says <i>I believe it will spark a wave of IM 2.0 startups (not just ones focused around mobile IM, which is where you see a lot of the focus today). [...] XMPP could become the standard machine-readable way to represent a social network.</i>.</p>
<p>I think this is an interesting read.</p>
      ]]></content>
    </entry>

    <entry>
      <title>Programmez: Introduction article on ejabberd XMPP application server</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/programmez_introduction_article_on_ejabberd_xmpp_application_server/" />
      <id>tag:process-one.net,2008:en/blogs/3.231</id>
      <published>2008-02-19T16:32:00Z</published>
      <updated>2008-02-19T21:56:58Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <content type="html"><![CDATA[The French Magazine Programmez has published an introduction article on ejabberd module programming. <p>The French magazine <a rel="nofollow" href="http://www.programmez.com/magazine.php">Programmez!</a> has published a full <a rel="nofollow" href="http://www.programmez.com/redaction_interactive.php?article=996&&titre=D%E9marrer%20avec%20ejabberd">article on ejabberd programming</a> in the February 2008 issue.</p>

<p align="center"><img src="http://www.process-one.net/images/uploads/programmez_200802.jpg" style="border: 0;" alt="image" width="231" height="314" /></p>

<p>The article has been written by Jérôme Sautret and presents basic ejabberd architecture and concepts.</p>
      ]]></content>
    </entry>

    <entry>
      <title>After AOL, Yahoo! is also experimenting with XMPP</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/after_aol_yahoo_is_also_experimenting_with_xmpp/" />
      <id>tag:process-one.net,2008:en/blogs/3.230</id>
      <published>2008-02-09T15:35:00Z</published>
      <updated>2008-02-10T13:53:18Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <content type="html"><![CDATA[Interest among big instant messaging players is suddently rising. Yahoo! is now experimenting with the open XMPP protocol. <p>After <a href="http://www.process-one.net/en/blogs/article/the_aol_xmpp_scalability_challenge/">AOL experiments</a> to give access to AIM and ICQ with the XMPP protocol, This time, it has been found that Yahoo! is also experimenting with XMPP to provide chat for its new video sharing service called <a rel="nofollow" href="http://live.yahoo.com/">live</a>.</p>

<p>Proof is given with the following sequence:</p>
<pre>
Memphis-2:~ mremond$ telnet chat.live.yahoo.com 5222
Trying 68.180.220.125...
Connected to chat.live.yahoo10.akadns.net.
Escape character is &#x27;^]&#x27;.
&lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;UTF-8&#x27;?&gt;
&lt;stream:stream xmlns:stream=&#x27;http://etherx.jabber.org/streams&#x27; version=&#x27;1.0&#x27;
 xmlns=&#x27;jabber:client&#x27; to=&#x27;chat.live.yahoo.com&#x27; &gt;

&lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;UTF-8&#x27;?&gt;&lt;stream:stream
 xmlns:stream=&quot;http://etherx.jabber.org/streams&quot; xmlns=&quot;jabber:client&quot;
 from=&quot;chat.live.yahoo.com&quot;
 id=&quot;5d46000b&quot; xml:lang=&quot;en&quot; version=&quot;1.0&quot;&gt;&lt;stream:features&gt;
&lt;mechanisms xmlns=&quot;urn:ietf:params:xml:ns:xmpp-sasl&quot;&gt;&lt;mechanism&gt;PLAIN&lt;/mechanism&gt;
&lt;mechanism&gt;JIVE-SHAREDSECRET&lt;/mechanism&gt;&lt;/mechanisms&gt;&lt;compression
 xmlns=&quot;http://jabber.org/features/compress&quot;&gt;&lt;method&gt;zlib&lt;/method&gt;&lt;/compression&gt;
&lt;auth xmlns=&quot;http://jabber.org/features/iq-auth&quot;/&gt;&lt;/stream:features&gt;
</pre>

<p>This is a bit technical, but what what this command shows, is that Yahoo! server is replying on the standard XMPP port. When sending the stream opening XML, it replies with a server stream, meaning that there is this is really an XMPP server.</p>

<p>Note that we have no reason to believe yet that those experimentations will ever come to Yahoo! Instant Messaging service. However, as they gather XMPP knowledge, they are more and more likely to progressively add XMPP support to their main instant messaging service.</p>

<p><b>Update 1:</b> I have checked and server-to-server connections are not open: It means you cannot join a Yahoo! Live chat room with your usual XMPP account and client.</p>

<br/>
<script type="text/javascript">
digg_url = 'http://www.process-one.net/en/blogs/article/after_aol_yahoo_is_also_experimenting_with_xmpp/';
</script>
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script>
<script type="text/javascript" src="http://reddit.com/button.js?t=2"></script>
<script type="text/javascript">
slashdot_badge_style='v0';
</script>
<script src="http://slashdot.org/slashdot-it.js" type="text/javascript"></script>

      ]]></content>
    </entry>

    <entry>
      <title>Introducing the XMPP application server: The Twitter example</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/introducing_the_xmpp_application_server/" />
      <id>tag:process-one.net,2008:en/blogs/3.229</id>
      <published>2008-02-03T16:09:00Z</published>
      <updated>2008-02-04T10:40:54Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <category term="Erlang"
        scheme="http://www.process-one.net/en/blogs/article/category/Erlang/"
        label="Erlang" />
      <content type="html"><![CDATA[ejabberd is probably the first XMPP application server ever released. This article introduces this new concept and explains how to build a distributed event-based infrastructure for social networking. The example application that illustrate this article is a distributed Twitter-like microblogging platform. <br/><br/>
<h2>Introduction</h2>

<p>Since I designed the first version of the pluggable pubsub module for ejabberd in early 2007, I had in mind to turn it into a powerful application server. I have already blogged about the power of the new <a href="http://www.process-one.net/en/blogs/article/angie_flexible_plugin_based_publish_and_subscribe/">API of ejabberd 2.0 pubsub engine</a>. However, this single article does not do any justice to this idea and how it can change the face of the web.</p>

<p>Customizable services based on pubsub is <a href="http://www.xmpp.org/">XMPP</a> (eXtensible Messaging and Presence Protocol) at its full speed. The XMPP protocol has been designed since the beginning to be a near real time routing / distribution engine. A piece in the puzzle was missing however. This is where I think our new plugin based pubsub API fills the gap and turn ejabberd into the first XMPP application server.</p>

<p>As a proof of concept and as a way to robustify our API, we have written the <a href="http://www.xmpp.org/extensions/xep-0163.html">Personal Eventing via Pubsub</a> (PEP) as a plugin of our pubsub engine. It is a big specification and should clearly show the potential of the framework.</p>

<br/>
<h2>The XMPP application server: The Twitter case</h2>

<p>The PEP implementation was still not enough to demonstrate that ejabberd is a fault-tolerant, highly scalable application development platform for the Web 2.0 era. I decided to start a serie of articles demonstrating how to build a distributed Twitter-like microblogging platform based on ejabberd 2.0.</p>

<br/>
<h2>Step 1</h2>

<p>The goals of the first development step are the following:</p>
<ul>
<li>Write a new ejabberd service as a pubsub extension: this is a XMPP Twitter-like application code itself.</li>
<li>Show that you can integrate with other pieces of the XMPP framework and not only the event distribution: The code uses the service browser as a user interface, building a fully dynamic hierarchy.</li>
<li>Write the near realtime publishing / distribution code. To show how powerfull it is, I wrote the code in a way that node creation and subscriptions are not necessary. You only have to publish content and it is distributed to anyone that can see your presence. The end result, like PEP, is closely integrated to the user roster.</li>
</ul>

<p>The architecture is distributed across as many user base (domain) as you want: A user can get events from users having their account in a large number of different servers.</p>

<br/>
<h2>Writing a new plugin to define custom node hierarchy</h2>

<p>I wanted to build a special service hierarchy so that the application integrates nicely in XMPP service discovery. I wanted a dynamic discovery tree whose content was depending on who was doing the query. This would make the application more user friendly and the example much more impressive.</p>

<p>To write a custom node hierarchy with our API, you simply have to write a <i>nodetree</i> plugin. I have written the nodetree_twitter module to handle our special hierachy looking like the following:</p>

<ul>
<li>Root node: "twitter"</li>
<li>Special node: MyStream. This is a collection displaying your latest published posts.</li>
<li>Special node: FriendsStream. It contains the latest posts of my friends.</li>
<li>Special node: MyFriends. It contains the list of your friends and allow you to see the latest posts of a given contact.</li>
</ul>

<p>Friends are taken from the instant messaging contacts list: I defined this friends list as "the people that already share their presence with me". This way users do not have to manage the cumbersome subscription process specially for this application: Their friends from their contact list are cleverly reused.</p>

<p>Note that the node hierarchy is not defined in the Pubsub specification (XEP-0060), but is totally needed to make the application flexible. This pubsub node hierarchy does not violate the Pubsub specification, so we are fine with it.</p>

<p>This is the result as shown by Psi's service discovery::</p>

<p align="center"><img src="http://www.process-one.net/images/uploads/xmpp_app_server1.jpg" style="border: 0;" alt="Psi: Service Discovery" width="500" height="405" /></p>

<p>The contact <i>Blaine</i> (thank you for your comments, by the way) is coming directly from my roster.</p>

<br/><br/>
<h2>Posting entries</h2>

<p>Posting an event is simply sending a small piece of XML code in ejabberd. As Psi does not support publishing events to our special virtual nodes (yet <img src="http://www.process-one.net/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" />), we will send it from Psi XML console.</p>

<p>For example, I can send the following piece of code in the XML console. I publish the post on my special pubsub node <i>MyStream</i>:</p>
<pre>
&lt;iq type=&#x27;set&#x27;
    to=&#x27;pubsub.localhost&#x27;
    id=&#x27;publish1&#x27;&gt;
   &lt;pubsub xmlns=&#x27;http://jabber.org/protocol/pubsub&#x27;&gt;
     &lt;publish node=&#x27;/twitter/MyStream&#x27;&gt;
      &lt;item&gt;Demoing my Twitter-like code&lt;/item&gt;
    &lt;/publish&gt;
  &lt;/pubsub&gt;
&lt;/iq&gt;
</pre>

<p>The message is received instantly by all the contacts that have subscribed to my presence. No polling mechanism is needed. This is the beauty of using ejabberd XMPP App Server.</p>

<p>The received message is the following:</p>
<pre>
&lt;message from=&quot;pubsub.localhost&quot; to=&quot;test1@localhost&quot; &gt;
  &lt;event xmlns=&quot;http://jabber.org/protocol/pubsub#event&quot;&gt;
    &lt;items node=&quot;/twitter/FriendsStream&quot; &gt;
      &lt;item id=&quot;4B2C8277256F&quot; &gt;Demoing my Twitter-like code&lt;/item&gt;
    &lt;/items&gt;
  &lt;/event&gt;
&lt;/message&gt;
</pre>

<p>Note that the dynamic hierarchy is very powerful: We publish on our special node. The message seems to come from another special node on the other end, for the sake of consistency.</p>

<br/>
<h2>Persistence</h2>
<p>I did nothing special for persistence of the published items. It is handled as a default by the ejabberd pubsub framework.</p>
<p>We can browse our new service to check  that the blog post has been actually published:</p>
<p align="center"><img src="http://www.process-one.net/images/uploads/xmpp_app_server2_thumb.jpg" style="border: 0;" alt="Psi: Service discovery" width="500" height="405" /></p>
<p>I did not yet write the part of the code to browse friends posts. This will be part of a second article.</p>

<br/>
<h2>Conclusions</h2>

<p>The end result is the basis of a Twitter-like application. It is fully distributed at the web scale. You can run this application on different servers and get events from people with account on different servers. It is compliant with ejabberd clustering and high scalability features. Most of all, thanks to our Pubsub API, I wrote this first code in 3 hours. It tooks something like 200 to 300 lines of code to write this extremely powerful infrastructure. Yes, that's amazing, I agree, as I was surprised myself by how easy and fast it was to write !</p>

<p>After a bit of clean-up, the code will be added to ProcessOne <a href="https://svn.process-one.net/ejabberd-modules/">contributions Subversion repository</a>. If you are impatient to play with the code, please drop me a mail <img src="http://www.process-one.net/images/smileys/smile.gif" width="19" height="19" alt="smile" style="border:0;" /></p>

<p>In a next article, I will present the second stage of this application. I will add better and complete browsing of the items and publish directly for the service browser thank to adhoc commands supported in Psi.</p>

<p>In the meantime, I hope to get this experiment running with client developers: It would be very nice see the messages received properly displayed in <a href="http://www.process-one.net/en/oneteam/">OneTeam</a> and in <a href="http://psi-im.org/">Psi</a>. Stay tuned !</p>

<br/>
<script type="text/javascript">
digg_url = 'http://www.process-one.net/en/blogs/article/introducing_the_xmpp_application_server/';
</script>
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script>
<script type="text/javascript" src="http://reddit.com/button.js?t=2"></script>
      ]]></content>
    </entry>

    <entry>
      <title>Microsoft + Yahoo!: What it could mean for the Instant Messaging world</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/microsoft_yahoo_1/" />
      <id>tag:process-one.net,2008:en/blogs/3.228</id>
      <published>2008-02-01T18:25:00Z</published>
      <updated>2008-02-02T09:05:56Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <content type="html"><![CDATA[  <p>The possible acquisition of Yahoo! by Microsoft is one of the biggest moves to control the Internet. It has lots of implications in the search engine space, but also in the social networking arena. Instant Messaging is certainly the grand father of all social networks: you have to add contacts and have them to accept to share presence, status message, avatar, and some additional personal pieces of information. As such, it could be a domain that will be heavily impacted by a Microsoft/Yahoo! merger.</p>
	
<p>Let's try some guess work imagining what it could mean in the Instant Messaging space. To keep the reasoning, we will concentrate on the biggest IM services.</p>

<h3>A bigger IM community ?</h3>
<p>I see three possible options for the Microsoft and Yahoo! public Instant Messaging and Presence service:</p>
	<ul>
		<li>Microsoft keeps both networks: I do not think it will happen, as Microsoft has always tried to increase its MSN IM community. The advantage in having one big community is much larger than probably they keep both networks, but interconnect them (already being done in MS / Yahoo! interop programme)</li>
		<li>MSN Instant Messaging user base is merged inside Yahoo! service: I do not think this will happen. MSN community is bigger than Yahoo!. MSN is a very strong leader in several parts of the world. It make more sense to do the other way around.</li>
		<li>Yahoo! IM user base will be merged in MSN. This sounds currently the most likely to happen.</li>

<h3>Forces on the public IM battlefield</h3>
<p>Merging the two Instant Messaging networks is not enough for MSN to become the biggest Instant Messaging network.</p>
	
<p>The best figures I found are the following: in 2006, according to Neilsen/Netratings, the market share in the public IM space was as follow:</p>
<ul><li>AOL: 53 million users</li>
<li>MSN: 27 million users</li>
<li>Yahoo: 22 million users</li>
<li>Google: 866,000 users</li>
</ul>
<p>The figures are a bit outdated, but the hierarchy is probably still the same. </p>

<p>As said earlier, we can expect that in a distant future MSN and Yahoo services will be at least fully and totally interoperable, if not completly merged.</p>

<p>Recently, it has been found that AOL was <a href="http://www.process-one.net/en/blogs/article/the_aol_xmpp_scalability_challenge/">experimenting XMPP</a> access to their service. XMPP stands for eXtensible Messaging and Presence Protocol and is becoming very hot. It is the same protocol that Google is using. This protocol is also used by a <a href="https://www.xmpp.net/">large federation of IM servers</a> around the world.</p>

<p>It means that the battle lines are shaping up, splitting the public IM world in two or three parts, depending on these hypothesis:<p>
<ul><li>AOL: 53 million users</li>
	<li>MSN + Yahoo!: 49 million users</li>
	<li>AOL: Google + all federated XMPP networks: estimated 100 millions (pessimistic figure if we trust <a href="http://en.wikipedia.org/wiki/Instant_messaging">Wikipedia article</a>, probably more)</li>
</ul>
<p>AOL needs absolutely to join the XMPP front if they want to keep their leadership in Public Instant Messaging service.</p>

<h3>Conclusions</h3>

<ol>
<li>What it could mean is that AOL is constrained to accelerate the move to XMPP to merge forces with XMPP players. This move seems very good for XMPP: by possibly reducing the number of proprietary protocols in the Instant Messaging world, it possibly strengthen the open standard one.</li>

<li>It also makes more fragile companies whose business model rely on Instant Messaging aggregation. The less different protocols, the fewer accounts you need, the less you need aggregation tools.</li>
</ol>

<p>I bet that the future of XMPP and XMPP companies is even brighter today.</p>
      ]]></content>
    </entry>

    <entry>
      <title>The AOL XMPP scalability challenge</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/the_aol_xmpp_scalability_challenge/" />
      <id>tag:process-one.net,2008:en/blogs/3.226</id>
      <published>2008-01-30T20:40:00Z</published>
      <updated>2008-02-01T11:17:43Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <category term="Erlang"
        scheme="http://www.process-one.net/en/blogs/article/category/Erlang/"
        label="Erlang" />
      <content type="html"><![CDATA[  <p>It has been widely reported on the Internet, that <a rel="nofollow" href="http://florianjensen.com/2008/01/17/aol-adopting-xmpp-aka-jabber/">AOL is experimenting an XMPP gateway</a> that will allow users to connect to AIM and ICQ with a compliant <a href="http://xmpp.org/">XMPP</a> (eXtensible Messaging and Presence Protocol) client.</p>

<p>It is still early days, but this news proves that interest in XMPP is growing at a tremendous rate.  Big players, like IBM, Google, Sun, Apple, Adobe and now possibly AOL, are embracing the protocol, and it seems that the <a rel="nofollow" href="http://www.infoworld.com/article/03/05/23/21FExmpp_1.html">battle between XMPP and SIMPLE</a> (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions) is drawing to an end.  The market has already chosen XMPP because it is closer to Internet technology.  In comparison, SIMPLE feels like an overly complicated Telco protocol.  It covers only a fraction of the scope of XMPP, and XMPP supports a very <a rel="nofollow" href="http://www.xmpp.org/extensions/">large number of extensions</a>.</p>

<p>The other interesting thing is that, if XMPP wins the battle over SIMPLE, it can also win over other proprietary protocols.  Google chose it for Google Talk, and now AOL is considering it.  Certainly, the Instant Messaging market is moving, and 2008 will probably be a very interesting year for XMPP.</p>

<p>For us, XMPP protocol designers and XMPP server developers, this year might present some of our biggest challenges yet.  We have lots of customer deployments that prove that our XMPP server can scale to large numbers of users.  Google Talk is also proving that XMPP can work on a large scale. However, the next challenge is XMPP federation on a large scale.</p>

<p>Federation in the XMPP world means sharing presence information, so that users can exchange messages with others users, no matter which server (called domain) they have an account with.  In practice, different servers need to be able to put users in touch, connect together and route messages.</p>

<p>Google Talk is federated with quite a good number of other XMPP servers, as is Jabber.org (powered by our XMPP implementation, ejabberd, and supported by ProcessOne).  Google Talk and Jabber.org probably have around the same number of connections (approximately 3000 server connections each is a good guess).</p>

<p>With the rapid spread of XMPP, two challenges need to be addressed: </p>

<h3>Challenge 1: Massive number of federated servers</h3>

<p>News of the AOL experience will probably boost the number of XMPP servers in production.  Even though Jabber.org has 3000 connections to servers, this number is still very small.  What will happen when this number grows?  </p>

<p>Netcraft counted 70 million active domains in December 2007.  This is a possible target for XMPP when all domains have web, mail and Instant Messaging.</p>

<p>I believe that the new version of ejabberd, ejabberd 2.0, is a step in the right direction.  ejabberd 2.0 embeds a lot of improvements in the management of server-to-server connections.  It can be set up in clusters and relies on special technical features to handle tens of thousands of connections on a single node. Connections between servers in ejabberd are now multiplexed to cope with large traffic between servers.  We have also added protection mechanisms to detect when another server stalls and to disconnect it gracefully.</p>

<p>As a final note on this topic, my personal view is that, at some point in the future of XMPP, we will need to add meta routing nodes to avoid the possibility of up to 70 million servers connecting to 70 million other servers.  I will share more thought on this point at a later time.</p>

<h3>Challenge 2: Massive number of users on two federated servers</h3>
<p>The possible future developments highlighted above will lead to another potential scale limit. </p>
<p>What will happen when two servers (for example AIM and Google) disconnect, and one of the servers needs to restart?  If those two servers have a large overlap in their user base (for example if many users from one server are linked to many users in the other), those two servers would need to synchronise presence for millions of users at once.</p>
<p>Again, we believe that we are leading the way in ejabberd with experimental code.  We are developing priority mechanisms to synchronise presence in an incremental way when servers need to get in touch for the first time.  We are also testing protocol improvements that will limit the number of presence synchronisation packets that need to be exchanged between two servers.  If this works well, we will propose this optimisation as an extension to the XMPP protocol. </p>
<p>Fault-tolerance and high-availability are very important features to consider when you select an XMPP server.  This is not only because you cannot schedule downtime when your users are spread all over the world, but also because, each time you need to restart your server, you then need to undertake a possibly costly presence resynchronisation.  Our Instant Messaging solution provides features to upgrade the code in a running system.  It means less maintenance downtime and thus a smaller synchronisation burden over the whole XMPP network when you restart one server.</p>
<p>Please note that the rumoured AOL experiment is only a gateway that just targets XMPP client use. At this stage, we do not know if AOL will allow communication with other XMPP servers in the future.  This question is only purely theoretical for the moment, but we need to make sure we are ready.</p>

<h3>Conclusion</h3>
<p>The big public server providers are considering switching to XMPP.  This is a great opportunity for the XMPP protocol and brings new challenges.  As a developer of XMPP servers, we are ready to face these challenges.  Let's hope 2008 will give us even more opportunity to prove it.</p>
<h3>Other interesting reading</h3>
<p>On the scalability topic, you can read a previous blog post: <a href="http://www.process-one.net/en/blogs/article/web_20_shifting_from_get_fast_to_get_massive/"><span class="Internetlink">Web 2.0: Shifting from &quot;Get Fast&quot; to &quot;Get Massive&quot;</span></a></p>
      ]]></content>
    </entry>

    <entry>
      <title>ejabberd 2.0.0 rc1 released</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/ejabberd_200_rc1_released/" />
      <id>tag:process-one.net,2008:en/blogs/3.225</id>
      <published>2008-01-17T09:14:00Z</published>
      <updated>2008-01-17T12:43:12Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <content type="html"><![CDATA[A new version of ejabberd 2.0.0 has been published, this time as a release candidate version. <p>Thank you for your feedback during the beta testing phase !</p>
<p>You can get more details from the official <a href="/en/news/article/ejabberd_200_rc1_has_been_released/">ejabberd 2.0.0 rc1 announcement</a>.</p> 
      ]]></content>
    </entry>

    <entry>
      <title>ejabberd 2.0.0 beta 1: Updated packages</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/ejabberd_200_beta_1_updated_packages/" />
      <id>tag:process-one.net,2007:en/blogs/3.221</id>
      <published>2007-12-26T15:32:00Z</published>
      <updated>2007-12-26T15:36:26Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <content type="html"><![CDATA[We have updated ejabberd 2.0.0 beta 1 packages to extend compliance on various Operating systems. <p>The installer works better on Windows and is compliant with MacOSX Leopard. Installation in chinese should now works on all operating systems. The latest documentation is also included in this version.</p>
<p>If you have already downloaded it, you can retry with the <a href="/en/ejabberd/downloads/">latest version</a> if you had installation problems.</p>

<p>Thank you for your feedback !</p>
      ]]></content>
    </entry>

    <entry>
      <title>ejabberd 2.0.0 beta 1 released: Merry Christmas !</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/ejabberd_200_beta_1_released_merry_christmas/" />
      <id>tag:process-one.net,2007:en/blogs/3.220</id>
      <published>2007-12-24T15:54:00Z</published>
      <updated>2007-12-24T15:54:53Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Jabber / XMPP"
        scheme="http://www.process-one.net/en/blogs/article/category/Jabber / XMPP/"
        label="Jabber / XMPP" />
      <category term="ejabberd"
        scheme="http://www.process-one.net/en/blogs/article/category/ejabberd/"
        label="ejabberd" />
      <content type="html"><![CDATA[The first ejabberd 2.0.0 beta version has been officially released. <p>You can get more detail from the official <a href="/en/news/article/ejabberd_200_beta1_has_been_released/">ejabberd 2.0.0 beta announcement</a>.</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Erlang automake project</title>
      <link rel="alternate" type="text/html" href="http://www.process-one.net/en/blogs/article/erlang_automake_project/" />
      <id>tag:process-one.net,2007:en/blogs/3.216</id>
      <published>2007-12-08T10:13:00Z</published>
      <updated>2007-12-08T18:31:41Z</updated>
      <author>
            <name>Mickaël Rémond</name>
            <uri>http://www.process-one.net/</uri>      </author>

      <category term="Erlang"
        scheme="http://www.process-one.net/en/blogs/article/category/Erlang/"
        label="Erlang" />
      <content type="html"><![CDATA[I recently wrote a new Erlang project call automake to ease build of Erlang module. This module is especially useful during development phase. <p>Erlang is distributed with a make module that build standard Erlang files from information provided in Emakefile files (See <a href="http://www.erlang.org/doc/man/make.html">Erlang Make Documentation)</a>.</p>

<p>However, I get bored having to write and maintained Emakefile manually. I decided to write a tool to do the job for me and this is what Erlang automake does. It try to does it "smartly" by finding the location of your needed include files and taking this information into account in your Emakefile.</p>

<p>It does much more however. You can pass several project directories and Erlang automake will build an Erlang Emakefile compiling all you project to a single directory. This is useful during development as it ease path setting, and simplify dynamic code reload. This is particularly usefull if you are developing code base on several different repository (example: code coming from ejabberd main repository, from ejabberd-modules repository and/or some other private projects.</p>

<p>More features are already there or are planned but I will not take about them yet.</p>

<p>The code is developed in <a href="https://svn.process-one.net/contribs/automake/">Process-one contribs Subversion repository</a> and is tracked in <a href="https://forge.process-one.net/browse/P1Contribs">Process-one Erlang Forge</a>. You can also download the archive: <a href="http://www.process-one.net/downloads/contribs/automake-1.0.tgz">automake-1.0.tgz</a> 

<p>Your ideas, comments, patchs, feature requests are of course welcome.</p>

<h3>Getting started</h3>

<p>Install the Erlang Automake tool somewhere in your path. You should also install the eautomake script as it acts as a useful wrapper.</p>

<p>Once your done, you can experiment with the following commands:</p>
<ul>
<li><i>eautomake</i>: Will generate an Emakefile for the project in the current directory. It will also create an Eautomake file that describe your project.</li>
<li><i>eautomake create Dir1 Dir2 ...</i>: Create a build file for several directories. It also generate Eautomake file that kept the lists of your projects directories. To update your EMakefile, the eautomake command is enough as the project description is then read from Eautomake file.</li>
<li><i>eautomake</i>: Will update emakefile to take new Erlang source file into accounts.</li>
</ul>

<p>"erl -make" command is used to compile your project once the Eautomake file has been generated.</p>
      ]]></content>
    </entry>

</feed>