<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
<title>Notes</title>
<link>http://www.simplicidade.org/notes/</link>
<atom:link href="http://www.simplicidade.org/notes/42.xml" rel="self" type="application/rss+xml" />
<description>Building simplicidade.org: notes, projects, and ocasional rants</description>
<dc:language>en-us</dc:language>
<dc:creator>melo@simplicidade.org</dc:creator>
<dc:date>2011-11-25T00:30:20+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.2" />
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

<item>
<title>Hosted.IM XMPP service</title>
<link>http://www.simplicidade.org/notes/archives/2011/11/hostedim_xmpp_s.html</link>

<description>This morning I migrated from my old personal ejabberd XMPP server to the Hosted.IM service by Process One. tl.dr; The migration went smoothly and I&apos;m very happy with the service. I still have two things I need to do (SSL certificate and migrate my XEP-0114 external components), but for personal reasons I won&apos;t have the time to finish the migration until next month. So expect a small update when I finish those two. For now, I&apos;ll just describe the service and my migration process, the good parts, the could-be-improved parts and other tidbits. The Hosted.IM service provides a hosted XMPP...</description>

<content:encoded><![CDATA[
<p>This morning I migrated from my old personal <a href="http://www.ejabberd.im/">ejabberd</a> XMPP server to the <a href="http://hosted.im/">Hosted.IM</a> service by <a href="https://www.process-one.net/">Process One</a>.</p>

<p>tl.dr; The migration went smoothly and I'm very happy with the service. I still have two things I need to do (SSL certificate and migrate my XEP-0114 external components), but for personal reasons I won't have the time to finish the migration until next month. So expect a small update when I finish those two.</p>

<p>For now, I'll just describe the service and my migration process, the good parts, the could-be-improved parts and other tidbits.</p>

<p>The Hosted.IM service provides a hosted XMPP service powered by a carrier-grade ejabberd XMPP server. The service was created and is maintained by Process One, the main driving force behind ejabberd development over the past years. I had the pleasure of working with Process One and Mickael in particular when we migrated the <a href="http://www.sapo.pt/">SAPO</a> XMPP server.</p>

<p><a href="http://hosted.im/#pricing">The basic service is free</a> (5 user accounts, a single domain).</p>

<p>The main roadblock preventing my migration was the couple of custom-made external components I wrote to interact with some web and TCP-based services that I currently host, so I needed proper XEP-0114 support. <a href="https://twitter.com/#!/pedromelo/status/132773035693453313">I asked Mickael for it</a> and <a href="https://twitter.com/#!/mickael/status/137486110799568897">less than two weeks later</a>, they delivered. The <a href="http://www.process-one.net/en/blogs/article/use_your_own_jabber_xmpp_component_on_hosted.im/">XEP-0114 support was officially announced yesterday</a> on all non-free plans.</p>

<p>With this final roadblock lifted, I was ready to migrate my domain.</p>

<p>I've registered a new account, and added my domain, <code>simplicidade.org</code>. The first thing they ask you to do is to add a DNS TXT record to validate that you own the domain. I don't understand why they need this TXT records. The XMPP service requires you to add or update a couple of SRV records to point to the Hosted.IM XMPP servers. If you aren't the owner of the domain, you won't be able to update those records, so why ask for an extra DNS record? I hope they clear this process and remove this particular requirement. Or, if this is really something that they really need, add a FAQ explaining why its needed.</p>

<p>I also immediately updated my SRV records to point to them, using the provided examples. This turned out to be a mistake that you should avoid.</p>

<p>If you are migrating an existing domain, I strongly recommend that you <em>don't</em> update the DNS SRV records at first. You should first create the accounts on the new service, migrate the current users rosters and vcards, and only then switch the DNS records. This should be pretty obvious stuff, but I was eager to move and failed here.</p>

<p>The Process One support personal will accept a SQL dump of your rosters and vcards and load them up on the service at Hosted.IM. I was lucky because I was already using ejabberd with the SQL backend, so I only had to cleanup old accounts, dump the SQL database and send them the file.</p>

<p>This data migration process is unfortunately not documented yet. New users don't even know the possibility exists. I had to ask for it on Twitter to discover the possibility. I also don't know what other formats or other servers export files they support. So check with support before you decide to switch to figure out how you'll migrate the roster information.</p>

<p>As I said, I didn't prepare that part, so I had to scramble to dump the rosters and send them the SQL, so that my users didn't end up with a empty roster. Fortunately the support staff was awesome and I quickly had my SQL dump loaded onto the service.</p>

<p>After this was done, I closed the firewall for my old server C2S ports, and started up my XMPP client. I connected without any problems to the new service.</p>

<p>From start to finish, and even with all the discovery and learning the layout of the administration interface, it took me less than 2 hours to have my service migrated. Pretty good.</p>

<p>I then selected the cheapest plan, at €8/month. The payment system is not clearly explained at the site. It works as a prepaid system: you load your account with €nnn and they remove the amount you owe every month. You also get some bonuses if you load your account with large amounts. After spending 10 minutes wondering where the payment interface was (after you change plans, the interface appears in the account section; while on the free plan, it's not visible - this is suboptimal, a link in the Plans &amp; Pricing tab, or near the costs values in the domain administration tab would be more helpful), I loaded my account with €100 and I got a €8 bonus.</p>

<p>Some services cost extra. For example, using your own SSL certificate is a €2/month, and connectivity to other IM networks costs €4/month. Unfortunately, these extra costs are not described in the service homepage. You have to register for the trial account, and then check the Plans and pricing tab inside your domain management admin page.</p>

<p>Aside: on the service homepage, if you select Plans &amp; Pricing in the navigation toolbar at the top, the javascript scrolls down to the #pricing section but fails to update the page location, which makes sharing the direct link harder.</p>

<p>And this is were we stand right now: accounts, rosters and vcards were migrated successfully, and I was able to load my account with enough money to last me for a bit less than a year (I was not counting on the extra €2/month for the certificate).</p>

<p>The next step is creating my own certificate. This part of the process could be improved a lot. For technical reasons, you have to upload the certificate private key. But if that is a requirement (and it is, I understand that part pretty well), then they could save a lot of work to their clients if they just took care of all that: add the option to generate the key on their servers, and send me the Certificate Request file so that I can request a certificate from a CA that supports XMPP certificates (which are slightly different from HTTPS certificates, they require an extra extension). It would be helpful if they recommended a couple of CAs providing the service, but they do not.</p>

<p>In the past, the <a href="http://xmpp.org/resources/certificates/">XMPP Software Foundation provided a free service of XMPP Certificates</a>, but it was shutdown sometime ago. According to their page above, you can buy a XMPP certificate from <a href="https://startssl.com/">StartSSL CA</a>, but I'm still figuring out how to do this. It should be straightforward, the same process as a HTTPS server, and I'll update this article after I've successfully done it, but the StartSSL site lacks XMPP-specific information.</p>

<p>After I have that part done, I'll move my external components. Some of them are sub-domains of my main <code>simplicidade.org</code> domain and those should be straightforward.</p>

<p>Others use a completely different domain name. This is an unusual setup. I basically used my own ejabberd server as a XMPP router for some domains. I connected those domains as external components, and pointed the S2S DNS records to the ejabberd server.</p>

<p>The Hosted.IM does not yet support this mode of operation, but <a href="https://twitter.com/#!/pedromelo/status/139637681566130176">I again asked Mickael about it</a>, and this unorthodox configuration <a href="https://twitter.com/#!/mickael/status/139638749528199168">should be supported</a> <a href="https://twitter.com/#!/mickael/status/139640066640314368">very soon</a>.
Awesome.</p>

<p>All in all, a pretty smooth ride.</p>

]]></content:encoded>

<guid isPermaLink="false">1034@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2011-11-25T00:30:20+00:00</dc:date>


</item>
<item>
<title>On Twitter, decentralization and cost of privacy </title>
<link>http://www.simplicidade.org/notes/archives/2011/03/twitter_dejavu.html</link>

<description>The message announcing the kibosh on all third-party collaboration with the Twitter platform triggered several bop-ed&apos;s. You can find a nice summary over at Michael Tsai&apos;s place. Twitter will live on as a mainstream platform, used by countless millions of regular every-day non-technical users for which these new rules are meaningless. They will suffer and question why their previous favorite client no longer works, while downloaded the latest official Twitter abortion of an interface. They will complain about it (their $Deity given Internet right), but will move on, and keep on using it. But those of us more technically-able will...</description>

<content:encoded><![CDATA[
<p>The <a href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/c82cd59c7a87216a?hl=en">message</a> announcing the kibosh on all third-party collaboration with
the Twitter platform triggered several bop-ed's. You can find a nice
summary over <a href="http://mjtsai.com/blog/2011/03/12/twitter/" title="Michael Tsai - Blog - Twitter">at Michael Tsai's place</a>.</p>

<p>Twitter will live on as a mainstream platform, used by countless
millions of regular every-day non-technical users for which these new
rules are meaningless. They will suffer and question why their previous
favorite client no longer works, while downloaded the latest official
Twitter abortion of an interface. They will complain about it (their $Deity
given Internet right), but will move on, and keep on using it.</p>

<p>But those of us more technically-able will probably look for a new
partner, while we lick the stab wounds inflicted but our former mistress.</p>

<p>As always, when something wrong happens to a centralized system, the
geek-gene arouses and looks for the greener pastures of decentralization.
"Would it be good to have a Twitter without the central service?"</p>

<p>Apart of the love/hate relationship with centralized systems, of which
the current cloud-fad is one mighty engine, I have to say that the only
word who comes to mind about all this is <em>dejavú</em></p>

<p>Almost-optimal solutions for this problem exist for decades. The first
one I remember is good old multicast. Assuming unlimited address space,
assign each person his own multicast group and let the routers take
care of it. Its unpractical of course, but the architecture of any
solution that emerges will have a lot of common points with this
old codger.</p>

<p>But more recently some systems tried to tackle the problem. My pet
favorite, XMPP, is one of them. We have per-user publish/subscribe that
can be used to implement such a system. And we have a large network of
XMPP servers already.</p>

<p>But XMPP has two drawbacks. The first is that the explosion of a message
to all his subscribers is done at the source server. This means that
when the Bieber opens his mouth and bleats, his own server would have to
send his pantomime individually to all members of his flock. So even
if a thousand of them were on the Google Talk network, instead of a
single message, the Google servers would receive a thousand messages. I
would be remiss if I didn't mention that there is
<a href="http://xmpp.org/extensions/xep-0253.html" title="XEP-0253: PubSub Chaining">a deferred extension to tackle this problem</a>, but
few in the community showed interest on it.</p>

<p>The second drawback is more perception than technical: over the years I felt that
people don't see XMPP as Webby enough. Its a strange, dark technology,
that few understand, and the passion for it by those who do,
makes those who don't stagger.</p>

<p>But the pretty solution of a multicast network to deliver
information, even in the XMPP approximation of a network of centralized
servers, where each one acts as a aggregator for a part of the
community, providing distinct local services for local people, has one
glaring drawback: there is no privacy.</p>

<p>If I delegate one instance of my message to a Google aggregator that
serves their clients, I can only hope that they will do the right thing
and deliver said message to the right people.</p>

<p>If this requirement is soft for public messages, it becomes very strong
for protected streams. If you want some assurances that your protected
tweets don't end up in the wrong place (and I set aside the discussion
about what kind of guarantees we have about that from Twitter itself in
its quest to monetize your content) then you can't use this
remote-server-side explosion but have to go back to exploding your
messages individually to each of your approved subscribers.</p>

<p>There is an extra cost on resources for this kind of privacy.</p>

<p>So if you want to try and tackle the distributed Twitter problem, please
remember that it is one of the most discussed architectures in our
Internet history. It has been done before (or at least tried) several
times, some with success, others less so. It doesn't matter if the next
real-time micro-blogging tool will be based on Usenet, SMTP, RSS, XMPP,
or the latest fad-du-jour. The basic problems are the same ones our fore-
fathers tried to solve with multi-cast.</p>

<p>As I said, dejavú.</p>

<hr />

<p>post scriptum rant, or why I need to support &lt;aside&gt; on my CSS:
But is a decentralized system with some central aggregation nodes based
on trusts workable? History has something to reminds us again: the
usenet was <em>the</em> elite messaging tool amongst geeks in the early 90's
(oh how I miss thee, trn). Then the AOL horde invaded and it became
mainstream. The geek clan left, and later the usenet collapsed with
spam, and now is a strange BitTorrent look-a-like.</p>

<p>The clan moved over to blogs and RSS. And those too were colonized,
although not as thoroughly because that RSS thing is still a bit on the
complicated side.</p>

<p>So the social networks were born, to hide all those pesky RSS feeds, add
a dash of real-time, and place a pretty face on top of all of it.</p>

<p>So: do all decentralized systems evolve into spammer havens or
centralized silos by sheer force of capitalism? A topic for another day.</p>

]]></content:encoded>

<guid isPermaLink="false">1025@http://www.simplicidade.org/notes/</guid>
<dc:subject>Rants</dc:subject>
<dc:date>2011-03-13T09:47:19+00:00</dc:date>


</item>
<item>
<title>XMPP Waves</title>
<link>http://www.simplicidade.org/notes/archives/2009/05/xmpp_waves.html</link>

<description>Google kettle let go a cloud of vapor and named it Wave. Of course we cannot know how it works and how similar it is to Drop.io. Until we do know more about it, we can look through the Wave protocol draft spec, and notice that its built on top of XMPP. At the same event, the new XMPP-powered mini applications where also announced. Each one is a XML file with all the HTML, CSS, and JS files packed together. Time to see how long it will take a XMPP desktop client with access to a WebKit view to implement...</description>

<content:encoded><![CDATA[
<p>Google kettle let go a cloud of vapor and named it <a href="http://wave.google.com/">Wave</a>. Of course we cannot know how it works and how similar it is to <a href="http://drop.io/">Drop.io</a>.</p>

<p>Until we do know more about it, we can look through <a href="http://www.waveprotocol.org/draft-protocol-spec">the Wave protocol draft spec</a>, and notice that its built on top of <a href="http://xmpp.org/">XMPP</a>.</p>

<p>At the same event, the new <a href="http://googletalk.blogspot.com/2009/05/attention-nerds-new-gadgets-api-for.html">XMPP-powered mini applications</a> where also announced. Each one is a XML file with all the HTML, CSS, and JS files packed together. Time to see how long it will take a XMPP desktop client with access to a WebKit view to implement this extension. It reminds me all the discussions about embedded applications we had in the API mailing list last year.</p>

]]></content:encoded>

<guid isPermaLink="false">970@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-05-28T22:32:08+00:00</dc:date>


</item>
<item>
<title>Psi with voice calls</title>
<link>http://www.simplicidade.org/notes/archives/2009/05/psi_with_voice.html</link>

<description>The first release candidate of the 0.13 version of Psi was released just now, and it includes voice calls using Jingle RTP. I&apos;ll keep it running in case you need a guinea pig for tests. Very good news....</description>

<content:encoded><![CDATA[
<p>The <a href="http://delta.affinix.com/2009/05/23/psi-013-rc1-released/">first release candidate of the 0.13 version of Psi was released just now</a>, and it includes voice calls using <a href="http://xmpp.org/extensions/xep-0167.html">Jingle RTP</a>.</p>

<p>I'll keep it running in case you need a guinea pig for tests.</p>

<p>Very good news.</p>

]]></content:encoded>

<guid isPermaLink="false">967@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-05-24T06:33:48+00:00</dc:date>


</item>
<item>
<title>Fast DNS queries with Perl</title>
<link>http://www.simplicidade.org/notes/archives/2009/05/fast_dns_querie.html</link>

<description>For some jobs, you need to quickly resolve large amounts of DNS queries. The AnyEvent::DNS module allows you to resolve DNS queries fast and in parallel. To test this, I wrote a simple command line tool to check XMPP SRV records of a list of domains. Both server-to-server and client-to-server records will be checked and results printed out. All queries will be made in parallel. The code is at my Ironman repository. Click the &quot;Raw&quot; link to download (sorry, no direct link, GitHub lacks permalinks to the latest raw version of a file)....</description>

<content:encoded><![CDATA[
<p>For some jobs, you need to quickly resolve large amounts of DNS queries.</p>

<p>The <a href="http://search.cpan.org/dist/AnyEvent/lib/AnyEvent/DNS.pm"><code>AnyEvent::DNS</code></a> module allows you to resolve DNS queries fast and in parallel.</p>

<p>To test this, I wrote a simple command line tool to check XMPP SRV records of a list of domains. Both server-to-server and client-to-server records will be checked and results printed out. All queries will be made in parallel.</p>

<p>The code is at <a href="http://github.com/melo/Ironman/">my Ironman repository</a>. Click the "Raw" link to download (sorry, no direct link, <a href="http://github.com/">GitHub</a> <a href="http://support.github.com/discussions/repos/735-add-permalink-for-files">lacks permalinks to the latest raw version of a file</a>).</p>

]]></content:encoded>

<guid isPermaLink="false">956@http://www.simplicidade.org/notes/</guid>
<dc:subject>Iron Man</dc:subject>
<dc:date>2009-05-06T16:35:03+00:00</dc:date>


</item>
<item>
<title>Swift dreams</title>
<link>http://www.simplicidade.org/notes/archives/2009/03/swift_dreams.html</link>

<description>One of my favorite XMPP clients is under a new^H^H^Hold management. Kevin is stepping down, and Justin is back to the driver seat. I&apos;ve been lurking in the Delta mailing list, so I&apos;m very excited with the developments there and the possibilities that they open up for Psi. But Kevin is not out of the XMPP client world. He and Remko announced a new cross-platform client called Swift. Not much is known for now about Swift but I expect a bit more news over the weekend. While we wait, I&apos;ll leave here my wish list for my next client. I...</description>

<content:encoded><![CDATA[
<p>One of my <a href="http://psi-im.org/">favorite XMPP clients</a> is <a href="http://www.kismith.co.uk/wordpress/index.php/2009/03/05/psi-under-old-management/">under a new^H^H^Hold management</a>. <a href="http://www.kismith.co.uk/">Kevin</a> is stepping down, and <a href="http://delta.affinix.com/">Justin</a> is back to the driver seat. I've been lurking in the <a href="http://lists.affinix.com/listinfo.cgi/delta-affinix.com">Delta mailing list</a>, so I'm very excited with the developments there and the possibilities that they open up for <a href="http://psi-im.org/">Psi</a>.</p>

<p>But Kevin is not out of the XMPP client world. He and <a href="http://el-tramo.be/">Remko</a> <a href="http://blog.swift.im/">announced a new cross-platform client called Swift</a>.</p>

<p>Not much is known for now about <a href="http://swift.im/">Swift</a> but I expect a <a href="http://identi.ca/notice/2622495">bit more news over the weekend</a>.</p>

<p>While we wait, I'll leave here my wish list for my next client. I don't know if Swift is going in this direction or not, this is just me thinking out loud:</p>

<ul>
<li>C/C++ minimal core: the core is responsible for XMPP connections and stanza parsing;</li>
<li>HTML-based UI: all windows are HTML-based. If they choose to use Qt, they would be WebKit views. The DOM of those views would be extended with XMPP-oriented objects;</li>
<li>JavaScript-based application: the IM logic is written with JavaScript, manipulating the XMPP DOM objects and the HTML-based UI;</li>
<li>Plugins: all features should be written as plugins. I should be able to drop a directory with HTML, CSS, images and JavaScript files and hook that into the XMPP dispatcher. It should be possible to hook using XPath expressions, so that I can build new protocols with ease.</li>
</ul>

<p>We can dream, right?</p>

]]></content:encoded>

<guid isPermaLink="false">939@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-03-07T11:35:43+00:00</dc:date>


</item>
<item>
<title>XMPP for begginers</title>
<link>http://www.simplicidade.org/notes/archives/2009/03/xmpp_for_beggin.html</link>

<description>While we wait for the new O&apos;Reilly book, XMPP: The Definitive Guide, Peter and Remko published their latest slides from FOSDEM. Good intro, solid presentation. Go, read....</description>

<content:encoded><![CDATA[
<p>While we wait for the new O'Reilly book, <a href="http://oreilly.com/catalog/9780596157197/index.html">XMPP: The Definitive Guide</a>, <a href="http://stpeter.im/">Peter</a> and <a href="http://el-tramo.be/">Remko</a> <a href="http://www.slideshare.net/remko.troncon/xmpp-101">published their latest slides</a> from <a href="http://fosdem.org/2009/">FOSDEM</a>.</p>

<p>Good intro, solid presentation. <a href="http://www.slideshare.net/remko.troncon/xmpp-101">Go, read</a>.</p>

]]></content:encoded>

<guid isPermaLink="false">937@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2009-03-05T10:59:43+00:00</dc:date>


</item>
<item>
<title>Codebits 2008 XMPP presentation</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/codebits_2008_x.html</link>

<description>My &quot;XMPP - Hands on&quot; presentation at Codebits 2008 is online. You can find it at GitHub and download the tarball (the big Download button). Its in Portuguese so most of you can ignore the PDF and dig straight through to the code. I didn&apos;t have Keynote.app on the laptop where I wrote it so I decided to try S5 to write my slides. The HTML version is great, and with a bit of syntax highlighter even the XML examples look good. But the PDF version is very basic. I searched around for a better CSS to print S5 slides,...</description>

<content:encoded><![CDATA[
<p>My <a href="http://github.com/melo/codebits/">"XMPP - Hands on" presentation at Codebits 2008 is online</a>. You can find it at GitHub and download the tarball (the big Download button). Its in Portuguese so most of you can ignore the <a href="http://www.simplicidade.org/share/xmpp-mao_na_coisa.pdf">PDF</a> and <a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Fbots">dig straight through to the code</a>.</p>

<p>I didn't have Keynote.app on the laptop where I wrote it so I decided to try <a href="http://meyerweb.com/eric/tools/s5/">S5</a> to write my slides.</p>

<p>The HTML version is great, and with a bit of <a href="http://code.google.com/p/syntaxhighlighter/">syntax highlighter</a> even the XML examples look good.</p>

<p>But the PDF version is very basic. I searched around for a better CSS to print S5 slides, but could not find anything. Maybe CSS is just too limited for decent printing control.</p>

<p>I don't know if I'm going to use it again. The lack of a decent PDF output is a big minus. On the plus side, I really like having the full power of HTML/CSS/JS inside my presentations.</p>

<p>As for the code examples, I wrote two:</p>

<ul>
<li>a <a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Fbots%2Fhttp2xmpp">basic HTTP-to-XMPP gateway</a>: post stuff and send it via XMPP to someone;</li>
<li><a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Fbots%2Fprocess_sync">synchronize several processes to execute in a sequence</a> (for example, restart a web farm, one web server at a time) using a chat room. Includes an auction (very simple, assumes everybody plays fair) to determine the final sequence.</li>
</ul>

<p>All examples are written in Perl using the <a href="http://search.cpan.org/dist/Net-XMPP2/"><code>Net::XMPP2</code></a> framework. I made a few fixes to some of the <code>Net::XMPP2</code> modules, you can <a href="http://github.com/melo/codebits/tree/master/2008%2Fxmpp-hands-on%2Flib">find them inside the repository</a> to make running the bots easier. I'm going to send <a href="http://www.ta-sa.org/">Robin Redeker</a> (<code>Net::XMPP2</code> author) those fixes, so they should appear in a future version.</p>

]]></content:encoded>

<guid isPermaLink="false">917@http://www.simplicidade.org/notes/</guid>
<dc:subject>Meta</dc:subject>
<dc:date>2008-11-19T12:33:00+00:00</dc:date>


</item>
<item>
<title>GTalk Videochat</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/gtalk_videochat.html</link>

<description>By now, you have probably read that GMail has added video-chat to its web interface. The blog post mentions the usual suspects: XMPP for signaling, RTP for transport and a H264/SVC codec. The implementation uses a browser plugin. Time will tell if this plugin will be bundled with Chrome (most likely) or bundled with Gears (would make sense for Google). The Mac installer includes a meta-package with two packages: Keystone.pkg and the GoogleVoiceandVideo.pkg. The Keystone.pkg includes the GoogleSoftwareUpdate.bundle that is installed at /Library/Google. Inside it has a GoogleSoftwareUpdateDaemon but so far I don&apos;t have it running on my system. The...</description>

<content:encoded><![CDATA[
<p>By now, you have probably read that <a href="http://gmailblog.blogspot.com/2008/11/say-hello-to-gmail-voice-and-video-chat.html">GMail has added video-chat to its web interface</a>.</p>

<p>The blog post mentions the usual suspects: <a href="http://xmpp.org/">XMPP</a> for signaling, RTP for transport and a H264/SVC codec. The implementation uses a browser plugin. Time will tell if this plugin will be bundled with <a href="http://www.google.com/chrome">Chrome</a> (most likely) or bundled with <a href="http://gears.google.com/">Gears</a> (would make sense for Google).</p>

<p>The Mac installer includes a meta-package with two packages: <code>Keystone.pkg</code> and the <code>GoogleVoiceandVideo.pkg</code>.</p>

<p>The <code>Keystone.pkg</code> includes the <code>GoogleSoftwareUpdate.bundle</code> that is installed at <code>/Library/Google</code>. Inside it has a <code>GoogleSoftwareUpdateDaemon</code> but so far I don't have it running on my system.</p>

<p>The <code>GoogleVoiceandVideo.pkg</code> is the real deal. It installs several things:</p>

<ul>
<li>two QuickTime components, <code>Google Camera Adapter 0</code> and <code>Google Camera Adapter 1</code>;</li>
<li>an Internet plug-in, <code>googletalkbrowserplugin.plugin</code>;</li>
<li>an <code>GoogleTalkPlugin.app</code> support application.</li>
</ul>

<p>After installation, it opened my GMail account and detected my iSight camera. I wasn't able to find someone to use it with so far, so I'll report back on the quality of the image. I expect a decent quality given the chosen codec.</p>

<p>I'm focusing on Codebits right now, so not much time to check out the XMPP part of this, but it seems to me that then reused the same signaling already used by the Google Talk client, nothing new there.</p>

<p>The big question for me is this: will other sites be able to use this plugin for their own video-chat features? I need to read the license more carefully.</p>

<p>As for Skype, it still has one advantage: I can use it without opening a browser on my Mac. But if I where them, I would start thinking about XMPP support and interoperability with Jingle, but thats just me.</p>

<p>Skype window of opportunity to be the leading XMPP client is shortening every day.</p>

]]></content:encoded>

<guid isPermaLink="false">915@http://www.simplicidade.org/notes/</guid>
<dc:subject>Rants</dc:subject>
<dc:date>2008-11-12T13:03:15+00:00</dc:date>


</item>
<item>
<title>Codebits 2008 counting down</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/codebits_2008_c.html</link>

<description>Codebits 2008 is this week, and although I have received a couple of ideas already for my presentation, I still need more. So get of your collective chair-interface-parts and send your ideas. Thanks!...</description>

<content:encoded><![CDATA[
<p><a href="http://codebits.sapo.pt/">Codebits 2008</a> is this week, and although <a href="http://www.simplicidade.org/notes/archives/2008/11/codebits_2008.html">I have received a couple of ideas already for my presentation</a>, I still need more.</p>

<p>So get of your collective chair-interface-parts and send your ideas.</p>

<p>Thanks!</p>

]]></content:encoded>

<guid isPermaLink="false">914@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-11-10T16:29:07+00:00</dc:date>


</item>
<item>
<title>Codebits 2008</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/codebits_2008.html</link>

<description>Next week I&apos;ll be attending the 2008 edition of Codebits. I also have a slot to talk about XMPP and this is where you can help. I don&apos;t want to do another abstract talk about XMPP, but instead I want to write code that you would like to see. So if there is some XMPP-based functionality that you want to see how you can get it done, ping me or email me with the high-level details. I&apos;ll take all the projects I can cover in an hour and present my skeleton or even complete solution at the conference and discuss...</description>

<content:encoded><![CDATA[
<p>Next week I'll be attending the <a href="http://codebits.sapo.pt/">2008 edition of Codebits</a>.</p>

<p>I also have a <a href="http://codebits.sapo.pt/intra/s/speaker/31">slot to talk about XMPP</a> and this is where you can help.</p>

<p>I don't want to do another abstract talk about XMPP, but instead I want to write code that you would like to see.</p>

<p>So if there is some XMPP-based functionality that you want to see how you can get it done, <a href="xmpp:melo@simplicidade.org?roster">ping me</a> or  <a href="mailto:melo@simpicidade.org?subject=XMPP%20idea">email me</a> with the high-level details.</p>

<p>I'll take all the projects I can cover in an hour and present my skeleton or even complete solution at the conference and discuss why it was done that way.</p>

<p>All the code will be available before the presentation so you can also follow along.</p>

]]></content:encoded>

<guid isPermaLink="false">903@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-11-03T16:25:45+00:00</dc:date>


</item>
<item>
<title>Rasputine</title>
<link>http://www.simplicidade.org/notes/archives/2008/11/rasputine.html</link>

<description>Apparently some things never die. In January 1994, a friend of mine, Paulo Ferreira, created an online community around a Lambda Moo server. Its called Moosaico and it still kicking. I spent an enormous amount of time there and I still have fond memories of that time, of the people, the stories, everything. But access to Moosaico (and other MUD&apos;s or Talkers) is usually done with Telnet or using a client like TinyFugue or Atlantis. Keeping one of those open to be connected somehow never entered my normal workflow, so I drifted away. Its amazing that something that I was...</description>

<content:encoded><![CDATA[
<p>Apparently some things never die. In January 1994, a friend of mine, Paulo Ferreira, created an online community around a Lambda Moo server. Its called <a href="http://moosaico.com/">Moosaico</a> and it still kicking.</p>

<p>I spent an enormous amount of time there and I still have fond memories of that time, of the people, the stories, everything.</p>

<p>But access to Moosaico (and other MUD's or Talkers) is usually done with Telnet or using a client like <a href="http://tinyfugue.sourceforge.net/">TinyFugue</a> or <a href="http://www.riverdark.net/atlantis/">Atlantis</a>. Keeping one of those open to be connected somehow never entered my normal workflow, so I drifted away.</p>

<p>Its amazing that something that I was hooked on 14 years ago is still alive in me.</p>

<p>The friday something happened that will pull me back in.</p>

<p>Another friend, <a href="http://mindboosternoori.blogspot.com/">Marcos Marado</a>, commented that he was looking for a XMPP interface to his talker, Selva. I had an headache and didn't feel like working on what I was supposed to, so I took the challenge.</p>

<p>Later that afternoon, <a href="http://github.com/melo/rasputine/">Rasputine</a> was born.</p>

<p>Rasputine (or Ras, as Corto Maltese called him) is a generic Moo/MUD/Talker-to-XMPP gateway. You add a buddy to your roster and then you can use it to connect to that world.</p>

<p>For example, to log in to Moosaico, add <a href="xmpp:moosaico@rasputine.simplicidade.org?roster"><code>moosaico@rasputine.simplicidade.org</code></a> and then type <code>//connect</code>. Presto, the login window of Moosaico should be readily available. The Selva talker is available at <a href="xmpp:selva@rasputine.simplicidade.org?roster"><code>selva@rasputine.simplicidade.org</code></a>.</p>

<p>The code is still very young and feature-less. The copy that I run on my staging server already has per-user status messages and avatars, and next I plan to implement auto-connect (probably even <a href="http://xmpp.org/extensions/xep-0100.html">XEP-0100</a> support).</p>

<p>For now, I'm just enjoying getting back to Moosaico.</p>

<p><em>Update:</em> by the way, if you want to connect your own talker/MUD/Moo, ping me via XMPP or email and I can set you up. At least to try it out.</p>

]]></content:encoded>

<guid isPermaLink="false">899@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-11-02T18:13:17+00:00</dc:date>


</item>
<item>
<title>Cisco to acquire Jabber Inc.</title>
<link>http://www.simplicidade.org/notes/archives/2008/09/cisco_to_acquir.html</link>

<description>Wow... Cisco will own the Jabber trademark. (via IMtrends)...</description>

<content:encoded><![CDATA[
<p>Wow... <a href="http://newsroom.cisco.com/dlls/2008/corp_091908.html">Cisco will own the Jabber trademark</a>.</p>

<p>(via <a href="http://www.process-one.net/en/imtrends/article/xmpp_getting_high_profile_cisco_announces_definitive_agreement_to_acquire_j/">IMtrends</a>)</p>

]]></content:encoded>

<guid isPermaLink="false">875@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-09-19T14:49:22+00:00</dc:date>


</item>
<item>
<title>XMPP presentation at Barcamp</title>
<link>http://www.simplicidade.org/notes/archives/2008/09/xmpp_presentati.html</link>

<description>The first weekend of September, I went to Barcamp in Coimbra. I was only there for the first day, but I got to know and talk to a lot of people that I usually only read online, which was pretty cool. I gave a presentation entitled WTF is XMPP? mostly centered around non-instant messaging applications of XMPP. I think it went well, the room was pretty full and I talked a lot with people after the event which plan to use XMPP in the short term. The organizers did a wonderful job, and I want to thanks Alcides to push...</description>

<content:encoded><![CDATA[
<p>The first weekend of September, I went to <a href="http://barcamp.webreakstuff.com/">Barcamp</a> in Coimbra. I was only there for the first day, but I got to know and talk to a lot of people that I usually only read online, which was pretty cool.</p>

<p>I gave a <a href="http://www.slideshare.net/melopt/wtf-is-xmpp-presentation">presentation entitled <em>WTF is XMPP?</em></a> mostly centered around non-instant messaging applications of XMPP. I think it went well, the room was pretty full and I talked a lot with people after the event which plan to use XMPP in the short term.</p>

<p>The organizers did a wonderful job, and I want to thanks <a href="http://alcidesfonseca.com/">Alcides</a> to push me to write the presentation.</p>

<p><em>Update:</em> cool, the <a href="http://www.slideshare.net/featured">presentation was featured</a> on <a href="http://www.slideshare.net">SlideShare</a> homepage.</p>

]]></content:encoded>

<guid isPermaLink="false">866@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-09-16T15:52:49+00:00</dc:date>


</item>
<item>
<title>XMPP for carbon lovers</title>
<link>http://www.simplicidade.org/notes/archives/2008/08/xmpp_for_carbon.html</link>

<description>If you happen to be a dead-tree-addict, and interested in XMPP like me, then I&apos;m happy to tell you that you will have a present next year. Kevin, Peter and Remko are hard at work for O&apos;Reilly to brings us the XMPP missing book. Entitled &quot;XMPP: The Definitive Guide&quot;, it should hit the shelfs in 2009. Shameless offer: if you need technical reviewers, you know my JID :)....</description>

<content:encoded><![CDATA[
<p>If you happen to be a dead-tree-addict, and interested in XMPP like me, then I'm happy to tell you that you will have a present next year.</p>

<p><a href="http://www.kismith.co.uk/wordpress/index.php/2008/08/21/xmpp-the-almost-definitive-guide-to-be/">Kevin</a>, <a href="https://stpeter.im/?p=2249">Peter</a> and <a href="http://el-tramo.be/blog/xmppbook-intro">Remko</a> are hard at work for <a href="http://oreilly.com/">O'Reilly</a> to brings us the <a href="http://www.xmpp.org/">XMPP</a> missing book.</p>

<p>Entitled "XMPP: The Definitive Guide", it should hit the shelfs in 2009.</p>

<p>Shameless offer: if you need technical reviewers, you know my JID :).</p>

]]></content:encoded>

<guid isPermaLink="false">852@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-08-22T11:17:07+00:00</dc:date>


</item>
<item>
<title>RabbitMQ added support for XMPP</title>
<link>http://www.simplicidade.org/notes/archives/2008/07/rabbitmq_added.html</link>

<description>This is interesting news. RabbitMQ, an open source implementation of APMQ in Erlang, now has support for XMPP using Ejabberd and mod_rabbitmq. It seems to be MUC-based, not PubSub. I hope to see a future version with PubSub in the future....</description>

<content:encoded><![CDATA[
<p>This is interesting news. <a href="http://www.rabbitmq.com/">RabbitMQ</a>, an open source implementation of <a href="http://www.rabbitmq.com/faq.html#what-is-amqp">APMQ</a> in <a href="http://www.erlang.org/">Erlang</a>, now has support for <a href="http://www.xmpp.org/">XMPP</a> using <a href="http://www.process-one.net/en/ejabberd/">Ejabberd</a> and <a href="http://hg.rabbitmq.com/rabbitmq-xmpp/raw-file/tip/doc/index.html">mod_rabbitmq</a>.</p>

<p>It seems to be <a href="http://www.xmpp.org/extensions/xep-0045.html">MUC</a>-based, not <a href="http://www.xmpp.org/extensions/xep-0060.html">PubSub</a>. I hope to see a future version with PubSub in the future.</p>

]]></content:encoded>

<guid isPermaLink="false">821@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-07-02T08:48:20+00:00</dc:date>


</item>
<item>
<title>Behind the scenes of Tarpipe XMPP</title>
<link>http://www.simplicidade.org/notes/archives/2008/06/behind_the_scen.html</link>

<description>Alex and Adam asked me to elaborate on the tools I used to implement the Tarpipe XMPP gateway. I used the Net::XMPP2 Perl module, in particular the Net::XMPP2::Component class. It uses the AnyEvent async framework, which in turn support the EV library , giving you all the love of kernel polling. Until the Net::XMPP2 author releases a new version, you should use my own copy if you plan on doing external component work (check the component-reply-with-from branch). Net::XMPP2 is widely used for bots, but not that many components, and some methods need some love to work properly in a component...</description>

<content:encoded><![CDATA[
<p><a href="http://webcracy.org/">Alex</a> and <a href="http://jabbermania.blogspot.com/">Adam</a> <a href="http://www.haloscan.com/comments/melopt/817/">asked me to elaborate on the tools I used</a> to implement the <a href="http://www.simplicidade.org/notes/archives/2008/06/using_tarpipe_v.html">Tarpipe XMPP gateway</a>.</p>

<p>I used the <a href="http://search.cpan.org/dist/Net-XMPP2/"><code>Net::XMPP2</code></a> Perl module, in particular the <a href="http://search.cpan.org/dist/Net-XMPP2/lib/Net/XMPP2/Component.pm"><code>Net::XMPP2::Component</code></a> class. It uses the <a href="http://search.cpan.org/dist/AnyEvent/"><code>AnyEvent</code></a> async framework, which in turn <a href="http://search.cpan.org/dist/AnyEvent/lib/AnyEvent/Impl/EV.pm">support the <code>EV</code> library</a> , <a href="http://software.schmorp.de/pkg/libev.html">giving you all the love of kernel polling</a>.</p>

<p>Until the <a href="http://search.cpan.org/~elmex/"><code>Net::XMPP2</code> author</a> releases a new version, you should <a href="http://github.com/melo/net--xmpp2/">use my own copy if you plan on doing external component work</a> (<a href="http://github.com/melo/net--xmpp2/commits/component-reply-with-from">check the component-reply-with-from branch</a>). <code>Net::XMPP2</code> is widely used for bots, but not that many components, and some methods need some love to work properly in a component environment.</p>

<p>The HTTP part was done using the excellent <a href="http://search.cpan.org/dist/AnyEvent-HTTP/"><code>AnyEvent::HTTP</code></a> class. I'm using <a href="http://github.com/melo/anyevent--http/">my own version</a>, which <a href="http://github.com/melo/anyevent--http/commit/988fb03b2eb1b03ec8b5720daaccb584a0ffa12d">includes a bug fix to the <code>http_post</code> function</a> (on its way to release 1.03 of <code>AnyEvent::HTTP</code>) and <a href="http://search.cpan.org/dist/libwww-perl/lib/HTTP/Request.pm">adds support for <code>HTTP::Request</code></a> to <code>http_request</code>. I hope to see this included in the main <code>AnyEvent::HTTP</code> distribution but I still need to update the documentation.</p>

<p>The rest is just glue code.</p>

]]></content:encoded>

<guid isPermaLink="false">818@http://www.simplicidade.org/notes/</guid>
<dc:subject>Perl</dc:subject>
<dc:date>2008-06-30T14:44:32+00:00</dc:date>


</item>
<item>
<title>Making better use of the XMPP presence in Bots</title>
<link>http://www.simplicidade.org/notes/archives/2008/05/making_better_u.html</link>

<description>The current crop of the XMPP-based bots is pretty basic. They provide an online presence in the XMPP network, and you interact with them by a command-line-style interface. These are some suggestions that bot authors can use to increase your XMPP presence easily. I&apos;m going to stick to easy stuff only, most of it widely deployed. The first thing that you need to understand is that you can have different per-contact presence information. You can switch the status message and the avatar for each of your contacts. Its called directed presence (basically include the contact JID in the to attribute,...</description>

<content:encoded><![CDATA[
<p>The current crop of the <a href="http://www.xmpp.org/">XMPP</a>-based bots is pretty basic. They provide an online presence in the XMPP network, and you interact with them by a command-line-style interface.</p>

<p>These are some suggestions that bot authors can use to increase your XMPP presence easily. I'm going to stick to easy stuff only, most of it widely deployed.</p>

<p>The first thing that you need to understand is that you can have different per-contact presence information. You can switch the status message and the avatar for each of your contacts. Its called directed presence (basically include the contact JID in the <code>to</code> attribute, but you can always check the <a href="http://www.xmpp.org/rfcs/rfc3921.html#rfc.section.5.1.4">spec for directed presence</a>).</p>

<p>You can use this to provide a personalized status message for each person on your roster. If your service has a notion of context, you can use the status bar to show the current context. For example, imagine that you have a ticketing system bot. You type "working on TICKET<em>ID", and your bot can change the status message to "Working on: TICKET</em>ID - TICKET_TITLE (URL of ticket)".</p>

<p>Optionally you could update the status each five minute with the elapsed time since you started working on it.</p>

<p>You can also switch the avatar. Maybe switch to a red background, meaning that you are busy doing something, or putting it in another way, the bot is telling you that he thinks you are working on something.</p>

<p>Other stuff you should do is to provide an alternative representation of the information you send textually. <a href="http://twitter.com/">Twitter</a> (when it used to work...) was a great example of this: every tweet you received by IM, included an Atom entry with the most important information of the tweet. This allows client to improve their interaction with such services, by using a more appealing interface.</p>

<p>But Atom entries are not yet standardized by the XMPP Foundation (there is some effort on <a href="http://www.xmpp.org/internet-drafts/draft-saintandre-atompub-notify-07.html">Atom over pubsub</a> that could be used as an example though). On the other hand, <a href="http://www.xmpp.org/extensions/xep-0004.html">Data Forms</a> are a standard, and more, they provide interaction possibilities.</p>

<p>You could send a "New ticket" notification, including a data form with the structured information, and a select-box with the possible next steps. The user would see the form, and submit back their decision.</p>

<p>Still in the subject of messages, you should know that there are <a href="http://www.xmpp.org/rfcs/rfc3921.html#stanzas-message-type">several types of messages</a>. You have <code>chat</code>, <code>headline</code> and <code>normal</code> (strangely enough the default). There are two more but not important in this context. You should use the correct one depending on the type of message you are sending.</p>

<p>If your system is just sending notification, please use the <code>headline</code> type. It makes it clear to clients that they are not chatting with you, just notifying of something that happened. For example, a smart client can react to those messages differently based on your status: in <code>away</code>, <code>xa</code> (extended away) or <code>dnd</code>, a client can keep a log of new headlines and show it like a email client when you return, without interrupting your workflow, probably using a badge with "You have X pending headlines".</p>

<p>The final recommendation: respect the user status. If the user is <code>dnd</code>, are you sure you should send him anything? Why not change the status message to "You have 5 messages pending. Send 'pending' or go to URL to see them"? Maybe even change the avatar color. You <em>should not</em> disturb someone in <code>dnd</code>. I would also say that <code>away</code> and <code>xa</code> are off limits but that's just me.</p>

<p>On the other hand, you should send "Hey there, welcome back! You have 5 pending messages. Send 'pending' to see them or hop on to 'URL'." when the presence changes to <code>chat</code> or available (not a real <code>&lt;show&gt;</code> value, just lack of <code>&lt;show&gt;</code> value. See the <a href="http://www.xmpp.org/rfcs/rfc3921.html#rfc.section.2.2.2.1">valid values of <code>&lt;show&gt;</code> and their meanings in the spec</a>).</p>

<p>Have fun implementing your bots.</p>

]]></content:encoded>

<guid isPermaLink="false">791@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-05-30T15:16:43+00:00</dc:date>


</item>
<item>
<title>Facebook gone XMPP?</title>
<link>http://www.simplicidade.org/notes/archives/2008/05/facebook_gone_x.html</link>

<description>Came across this just now: Using Facebook Chat via Jabber Thats a lot of new victim^H^H^H^H^H^Husers to the XMPP network. This, and the fact that my Google Alerts on XMPP is now showing about 10 hits per day (from less than 10 per week just 18 months ago), and I would say that XMPP is turning out to be one hot technology at the moment. Update: given that the news came up via the official Facebook developers site, some people have IM&apos;ed me asking why the question mark in the subject. Well, I&apos;m waiting to see if they will open...</description>

<content:encoded><![CDATA[
<p>Came across this just now: <a href="http://developers.facebook.com/news.php?blog=1&amp;story=110">Using Facebook Chat via Jabber</a></p>

<p>Thats a lot of new victim^H^H^H^H^H^Husers to the XMPP network.</p>

<p>This, and the fact that my Google Alerts on XMPP is now showing about 10 hits per day (from less than 10 per week just 18 months ago), and I would say that XMPP is turning out to be one hot technology at the moment.</p>

<p><em>Update:</em> given that the news came up via the <a href="http://developers.facebook.com">official Facebook developers site</a>, some people have IM'ed me asking why the question mark in the subject. Well, I'm waiting to see if they will <a href="http://www.xmpp.net/">open federation</a> or not. Using XMPP is more than allowing Facebook users to use their favorite XMPP client to chat with the other Facebook users. Without open federation, this is just another private IM network and I think we have enough of those.</p>

<p>So the question mark is there until a answer is found for "Will Facebook enable open-federation over XMPP?"</p>

]]></content:encoded>

<guid isPermaLink="false">782@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-05-14T10:35:59+00:00</dc:date>


</item>
<item>
<title>Increasing supply of PIP/PEP nodes</title>
<link>http://www.simplicidade.org/notes/archives/2008/04/increasing_supp.html</link>

<description>My favorite XEPs of last year where PIP (XEP-0223) and PEP (XEP-0163). These two made Publish-Subscribe (XEP-0060) trivial to implement on XMPP clients, and pave the way for rich-presence clients. One problem was that open-source servers did not implement PIP/PEP. Recently this has changed, with both Openfire and ejabberd having decent implementations. Other servers, though, are still MIA. Also of note, GTalk does not supported it yet. This is a bit of a problem due to his visibility in the XMPP community. So if you do implement it in your client (and I think you should, really), it seems that...</description>

<content:encoded><![CDATA[
<p>My favorite <a href="http://www.xmpp.org/extensions/">XEPs</a> of last year where <a href="http://www.xmpp.org/extensions/xep-0223.html">PIP (XEP-0223)</a> and <a href="http://www.xmpp.org/extensions/xep-0163.html">PEP (XEP-0163)</a>. These two made <a href="http://www.xmpp.org/extensions/xep-0060.html">Publish-Subscribe (XEP-0060)</a> trivial to implement on XMPP clients, and pave the way for rich-presence clients.</p>

<p>One problem was that open-source servers did not implement PIP/PEP. Recently this has changed, with both <a href="http://www.igniterealtime.org/projects/openfire/index.jsp">Openfire</a> and <a href="http://www.process-one.net/en/ejabberd/">ejabberd</a> having decent implementations. Other servers, though, are still MIA.</p>

<p>Also of note, GTalk does not supported it yet. This is a bit of a problem due to his visibility in the XMPP community.</p>

<p>So if you do implement it in your client (and I think you should, really), it seems that you have to keep using the current protocols for avatar (for better or worse <a href="http://www.xmpp.org/extensions/xep-0054.html">XEP-0054</a> plus <a href="http://www.xmpp.org/extensions/xep-0153.html">XEP-0153</a>) and server-side storage (<a href="http://www.xmpp.org/extensions/xep-0049.html">XEP-0049</a>).</p>

<p>There is something that servers could do to improve this situation though. There is a small change that would give client authors even more good reasons to implement PIP/PEP today.</p>

<p>If private storage and vCards are implemented on top of PIP and PEP, we could have the best of both worlds.</p>

<p>From the point-of-view of current clients, nothing will change: they will still use XEP-0049 to set and get their private storage nodes, and they will still use XEP-0054 to publish and retrieve their vCard. But at the same time, each private storage item would also be available in a PIP node, and the user vCard would be available in a PEP node.</p>

<p>This would allow PIP/PEP-capable clients to announce support for <code>vcard-temp+nofity</code> namespace in their disco response, and get instant notifications of vCard changes. Also, announce <code>storage:bookmarks+notify</code> and clients that only support version 1.0 of <a href="http://www.xmpp.org/extensions/xep-0048.html">XEP-0048</a> will immediately support version 1.1.</p>

<p>This could be a easy way to increase supply of nodes, to see if we can reach critical mass sooner, in the move to a pubsub-world.</p>

]]></content:encoded>

<guid isPermaLink="false">773@http://www.simplicidade.org/notes/</guid>
<dc:subject>XMPP</dc:subject>
<dc:date>2008-04-23T11:41:18+00:00</dc:date>


</item>


</channel>
</rss>
