<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planet.jabber.org/">
	<title>Planet Jabber</title>
	<link>http://planet.jabber.org/</link>
	<description>Planet Jabber - http://planet.jabber.org/</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="tag:process-one.net,2009:en/blogs/3.1375" />
			<rdf:li rdf:resource="tag:process-one.net,2009:en/blogs/3.1373" />
			<rdf:li rdf:resource="http://delta.affinix.com/2009/06/30/psi-013-rc2-released/" />
			<rdf:li rdf:resource="http://www.tigase.org/1554 at http://www.tigase.org" />
			<rdf:li rdf:resource="tag:process-one.net,2009:en/blogs/3.1356" />
			<rdf:li rdf:resource="http://www.igniterealtime.org/community/blogs/ignite/2009/06/22/introducing-tinder-an-xmpp-object-implementation-library" />
			<rdf:li rdf:resource="http://ayena.de/node/74" />
			<rdf:li rdf:resource="http://blog.jwchat.org/?p=123" />
			<rdf:li rdf:resource="https://stpeter.im/?p=2748" />
			<rdf:li rdf:resource="http://tomasz.sterna.tv/?p=412" />
			<rdf:li rdf:resource="http://dev.esl.eu/blog/?p=243" />
			<rdf:li rdf:resource="http://tomasz.sterna.tv/?p=407" />
			<rdf:li rdf:resource="http://blog.xmpp.org/?p=495" />
			<rdf:li rdf:resource="http://tomasz.sterna.tv/?p=401" />
			<rdf:li rdf:resource="http://blog.bluendo.com/ff/xmpp-and-compression-a-little-experiment" />
			<rdf:li rdf:resource="tag:process-one.net,2009:en/blogs/3.1283" />
			<rdf:li rdf:resource="tag:process-one.net,2009:en/blogs/3.1285" />
			<rdf:li rdf:resource="tag:process-one.net,2009:en/blogs/3.1274" />
			<rdf:li rdf:resource="http://www.tigase.org/1538 at http://www.tigase.org" />
			<rdf:li rdf:resource="http://www.tigase.org/1536 at http://www.tigase.org" />
			<rdf:li rdf:resource="http://ralphm.net/blog/2009/05/31/pubsubhubbub" />
			<rdf:li rdf:resource="http://ralphm.net/blog/2009/05/31/swfoo09" />
			<rdf:li rdf:resource="http://el-tramo.be/?p=367" />
			<rdf:li rdf:resource="tag:process-one.net,2009:en/imtrends/26.1263" />
			<rdf:li rdf:resource="https://stpeter.im/?p=2719" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="tag:process-one.net,2009:en/blogs/3.1375">
	<title>Process One: OneTeam 3.0 for iPhone</title>
	<link>http://www.process-one.net/en/blogs/article/oneteam_3.0_for_iphone/</link>
	<content:encoded>&lt;p&gt;The new version 3.0 of OneTeam for iPhone has been released, with the &lt;a href=&quot;http://en.wikipedia.org/wiki/Push_technology&quot; title=&quot;push technology&quot;&gt;push notification feature&lt;/a&gt; from &lt;a href=&quot;http://en.wikipedia.org/wiki/Apple_Push_Notification_Service&quot; title=&quot;Apple Push Notification Service&quot;&gt;Apple Push Notification Service&lt;/a&gt; (APNS).&lt;/p&gt; &lt;p&gt;When moving with your iPhone, as a pedestrian, bike rider, car driver or in public transportation, you might have to shutdown the OneTeam for iPhone application while staying connected to your XMPP server. It is convenient for battery saving purposes, or because you want to use another application (iPhone OS 3.0 still does not authorize background applications).&lt;/p&gt;

&lt;p&gt;When an event occurs on your XMPP server, it is sent to the APNS (Apple Push Notification Service), which instantly relays it to your iPhone. A push notification is then poped up on your screen, with a sound played. The OneTeam badge (icon) is then changed, showing a new event has arrived, or the number of events waiting for you to read.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.process-one.net/images/uploads/Screenshot_2009.06_.29_22_.29_.44_.png&quot; alt=&quot;image&quot; height=&quot;480&quot; style=&quot;border: 0;&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You simply have to tap the OneTeam icon to read your new event. The reconnection will be fast and seamless.&lt;/p&gt;

&lt;p&gt;This feature is very handy, since you can use your iPhone the way you want (browse the web, use another application) while still being instantly notified as if you were using OneTeam on the background.&lt;/p&gt;

&lt;p&gt;This push notification feature is also deployed on OneTeam.im XMPP server, and ejabberd has a component, &lt;a href=&quot;http://www.process-one.net/en/imstore/#impush&quot; title=&quot;IMpush&quot;&gt;IMpush&lt;/a&gt;, that can send push notifications to the APNS. This makes ejabberd and OneTeam the first XMPP client and server solution that supports the Apple push system.&lt;/p&gt;

&lt;p&gt;OneTeam for iPhone has also received fixes and improvements: groupchat, file transfer, image sending... Here are a few screenshots:&lt;/p&gt;

&lt;p&gt;An example of Groupchat:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.process-one.net/images/uploads/Screenshot_2009.06_.29_22_.41_.22_.png&quot; alt=&quot;image&quot; height=&quot;480&quot; style=&quot;border: 0;&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;

&lt;p&gt;See the Push configuration screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.process-one.net/images/uploads/Screenshot_2009.06_.29_22_.28_.34_.png&quot; alt=&quot;image&quot; height=&quot;480&quot; style=&quot;border: 0;&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And the general OneTeam confguration:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.process-one.net/images/uploads/Screenshot_2009.06_.29_22_.29_.09_.png&quot; alt=&quot;image&quot; height=&quot;480&quot; style=&quot;border: 0;&quot; width=&quot;320&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A few comments on the experience after having used OneTeam for iPhone with push and groupchat:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&quot;Battery life is not impacted by being always connected to my XMPP server on mobile. I have used all mobile XMPP client and this is the first time I can truely stay connected all the time. I feel this is really really the premise of the mobile revolution for mobile instant messaging and mobile XMPP.&quot;
&lt;/li&gt;&lt;li&gt;&quot;OneTeam for iPhone client has the type of feature you would expect from a good desktop XMPP client and not a mobile one. You can use groupchat, file transfer. This is really what I need professionally.&quot;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;OneTeam for iPhone will be available on the Apple's App Store in a few days, after the usual moderation period at Apple.&lt;/p&gt;

&lt;p&gt;IMpush is sold as soon as today on the &lt;a href=&quot;http://www.process-one.net/en/imstore/&quot; title=&quot;IMstore&quot;&gt;IMstore&lt;/a&gt; to prepare ejabberd servers ahead of OneTeam 3.0 with push.&lt;/p&gt;</content:encoded>
	<dc:date>2009-07-02T11:59:02+00:00</dc:date>
	<dc:creator>Nicolas Vérité</dc:creator>
</item>
<item rdf:about="tag:process-one.net,2009:en/blogs/3.1373">
	<title>Process One: ProcessOne presentations at Erlang Factory</title>
	<link>http://www.process-one.net/en/blogs/article/processone_presentations_at_erlang_factory/</link>
	<content:encoded>There have been two presentations from ProcessOne at Erlang Factory. Here are the slides of the presentations. &lt;p&gt;The first presentation by me (Mickaël Rémond) was titled &quot;OneTeam Media Server: Adding Video to Instant Messaging with Erlang&quot;.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;&lt;/p&gt;&lt;div style=&quot;width: 425px; text-align: left;&quot; id=&quot;__ss_1661801&quot;&gt;&lt;a style=&quot;font: 14px Helvetica,Arial,Sans-serif; display: block; margin: 12px 0 3px 0; text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/mremond/oneteam-media-server-1661801?type=powerpoint&quot; title=&quot;OneTeam Media Server&quot;&gt;OneTeam Media Server&lt;/a&gt;&lt;div style=&quot;font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;&quot;&gt;View more &lt;a style=&quot;text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;documents&lt;/a&gt; from &lt;a style=&quot;text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/mremond&quot;&gt;Mickaël Rémond&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The second presentation by Geoff Cant was title &quot;Whitelabel Erlang&quot; and give feedback on how Erlang can be used to write scalable hosted application for business.&lt;/p&gt;

&lt;p align=&quot;center&quot;&gt;&lt;/p&gt;&lt;div style=&quot;width: 425px; text-align: left;&quot; id=&quot;__ss_1661842&quot;&gt;&lt;a style=&quot;font: 14px Helvetica,Arial,Sans-serif; display: block; margin: 12px 0 3px 0; text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/mremond/erlang-white-label?type=powerpoint&quot; title=&quot;Erlang White Label&quot;&gt;Erlang White Label&lt;/a&gt;&lt;div style=&quot;font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;&quot;&gt;View more &lt;a style=&quot;text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a style=&quot;text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/mremond&quot;&gt;Mickaël Rémond&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-30T14:12:23+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="http://delta.affinix.com/2009/06/30/psi-013-rc2-released/">
	<title>Justin Karneges: Psi 0.13-rc2 released</title>
	<link>http://delta.affinix.com/2009/06/30/psi-013-rc2-released/</link>
	<content:encoded>&lt;p&gt;Psi 0.13-rc2 is here!  Notably, voice calling is now a standard feature of the Windows version.  Please &lt;a href=&quot;https://sourceforge.net/project/showfiles.php?group_id=14635&amp;amp;package_id=143053&amp;amp;release_id=693421&quot;&gt;download and test&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Final on July 13th if no showstoppers are found.&lt;/p&gt;
&lt;p&gt;New in 0.13&lt;br /&gt;
- Voice calls (Jingle RTP).&lt;br /&gt;
- Basic XMPP URI handler.&lt;br /&gt;
- Ability to permanantly trust certificates at connect time.&lt;br /&gt;
- Mini command system (Ctrl+7 in chat window).&lt;br /&gt;
- Various bugfixes.&lt;/p&gt;
&lt;p&gt;If you are building from source (e.g. on Linux) and want voice calls, you will need to obtain the &lt;a href=&quot;http://delta.affinix.com/psimedia/&quot;&gt;PsiMedia plugin separately&lt;/a&gt;.  On Linux, the plugin file is called libgstprovider.so, and must be put in Psi’s $LIBDIR/psi/plugins directory.  You’ll know it worked if “About GStreamer” appears in the Help menu.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-30T07:12:34+00:00</dc:date>
	<dc:creator>justin</dc:creator>
</item>
<item rdf:about="http://www.tigase.org/1554 at http://www.tigase.org">
	<title>Artur Hefczyc: Load tests season</title>
	<link>http://www.tigase.org/en/content/load-tests-season</link>
	<content:encoded>&lt;p&gt;It looks like we have a season for load tests. High number of people contact me asking for some help and advice on the load tests running.&lt;/p&gt;
&lt;p&gt;Most of cases are about comparing different server implementations and I am not going to talk about comparing. Comparing different server implementation is very difficult. So many factors and elements must be taken into consideration for a fair comparison. Even generating exactly the same database for each server is quite difficult task.&lt;/p&gt;
&lt;p&gt;I would like to give a few hints about running load tests over the Tigase server. What needs to be considered, what settings are important, how to tweak the system to get best possible performance. How to find system bottlenecks and how to deal with them....&lt;/p&gt;
&lt;p&gt;All these suggestion are put in a random order and I am writing them from the top of my head. Please don't hesitate to send me your comments about it. I will try to update this guide in time.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tigase.org/en/content/load-tests-season&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-24T22:15:33+00:00</dc:date>
	<dc:creator>kobit</dc:creator>
</item>
<item rdf:about="tag:process-one.net,2009:en/blogs/3.1356">
	<title>Process One: Datamonitor coverage</title>
	<link>http://www.process-one.net/en/blogs/article/datamonitor_coverage/</link>
	<content:encoded>&lt;p&gt;Mickaël Rémond, CEO of ProcessOne, was covered by a Datamonitor study: &quot;&lt;a href=&quot;http://www.datamonitor.com/store/Product/ceo_viewpoint_social_networks_mobility_market_opportunity_analyst_opinion?productid=BFTC2407&quot; title=&quot;CEO Viewpoint: Social Networks Mobility = Market Opportunity&quot;&gt;CEO Viewpoint: Social Networks Mobility = Market Opportunity&lt;/a&gt;&quot;.&lt;/p&gt; &lt;p&gt;In this Analyst Opinion series by Daniel Okubo, it is observed that social networks and mobile network operators are currently deploying IM and presence features based on XMPP.&lt;/p&gt;

&lt;p&gt;In a competitive and recessive context, the leaders and newcomers look to differentiate in order to increase their market shares. Real time communication based on open standard like XMPP has proven a good way to value existing users base.&lt;/p&gt;

&lt;p&gt;This document is available at Datamonitor ResearchStore, at the price of $150, or $375 for a multi-user license. ProcessOne is not affiliated with DataMonitor and does not earn any commission on sales of this document, but we thought it could be usefull to know for customers interested in ProcessOne.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-23T15:44:52+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="http://www.igniterealtime.org/community/blogs/ignite/2009/06/22/introducing-tinder-an-xmpp-object-implementation-library">
	<title>Ignite Realtime Blog: Introducing Tinder, an XMPP object implementation library</title>
	<link>http://www.igniterealtime.org/community/blogs/ignite/2009/06/22/introducing-tinder-an-xmpp-object-implementation-library</link>
	<content:encoded>&lt;div class=&quot;jive-rendered-content&quot;&gt;&lt;p&gt;We've just released a new project, named Tinder. Tinder is a new Java based XMPP library, providing an implementation for XMPP stanzas and components.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;Tinders origins lie in code that's shared between Jive Software's Openfire and Whack implementations. The implementation that's provided in Tinder hasn't been written again from scratch. Instead, code has been moved from the original projects into Tinder, preserving al of the existing features and functionality. Most of the code that's now in Tinder is based on the &lt;span style=&quot;font-family: courier new,courier;&quot;&gt;org.xmpp&lt;/span&gt; package implementation that previously existed in Openfire and Whack. This is the code that defines classes such as Packet, JID, IQ, Component and their extensions. Additionally, some multi-purpose code (such as the DataForm and Result Set Management implementations have been moved to Tinder as well.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;Why a new project?&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;Parts of the code of Openfire are useful in other contexts than that of an XMPP server implementation. Developers might, for instance, want to use the XMPP stanza implementation within other projects. Having to include Openfire as a dependency of such a project is quite a bit of overkill. In such an example, it would be useful to have a small project that you can include, that offers you a lightweight XMPP object implementation, without the rest of the features that Openfire offers. Enter Tinder. Tinder will allow developers to re-use parts of Openfire, without having to include Openfire itself.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;There's other benefits to Tinder though:&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;Tinder will replace some most of the duplicate code that's currently shared in Openfire, Whack and ConnectionManager projects. Removing duplicate code will make it easier to maintain and develop these projects. By delegating the implementation and maintenance of the low-level XMPP implementation, Openfire, Whack and other developers will be able to focus on the development that adds value to their project.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;On the flip-side of that medal, you can argue that the 'core' code that will make up Tinder deserves a bit of dedicated development attention (unit tests, bug-tracking, stuff like that). This would benefit any attempt to really fine-tune the code, for example for high-performance tuning. Currently, the code is a bit put in the shadows of the other projects (of which they are part of).&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;So, will this replace Smack (the library that provides the base of Spark)?&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;No, definitely not. Smack offers a full-fledged XMPP client implementation, while Tinder only defines some XMPP building blocks. Tinder provides some basic objects on which a client library such as Smack could be build. However, Smack does not share the same code base as Openfire and Whack do. It's therefor unlikely that Tinder and Smack will be merged in the foreseeable future - there's simply to much difference.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;What's next?&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;We've wrapped up a &lt;a href=&quot;http://www.igniterealtime.org/community/docs/DOC-1844&quot; class=&quot;jive-link-wiki-small&quot;&gt;initial roadmap&lt;/a&gt;, in which we capture the first steps of the development of Tinder. As always, you're invited to contribute. We're looking forward to hear your suggestions, thoughts and ideas. If you're interested, you can find more information on the new &lt;a href=&quot;http://www.igniterealtime.org/community/community/developers/tinder&quot; class=&quot;jive-link-community-small&quot;&gt;Tinder-related community space&lt;/a&gt; and &lt;a href=&quot;http://www.igniterealtime.org/projects/tinder&quot; class=&quot;jive-link-external-small&quot;&gt;project page&lt;/a&gt; that have been opened on IgniteRealtime.org.&lt;/p&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-06-22T23:42:32+00:00</dc:date>
	<dc:creator>Ignite Realtime Blog (guus.der.kinderen@gmail.com)</dc:creator>
</item>
<item rdf:about="http://ayena.de/node/74">
	<title>Tobias Markmann: libidn vs. ICU benchmark in string prepping</title>
	<link>http://ayena.de/node/74</link>
	<content:encoded>&lt;p&gt;Due to Waqas's asking for months now I've finally got around and made some benchmarks on two &lt;a href=&quot;http://www.ietf.org/rfc/rfc3454.txt&quot;&gt;string prepping&lt;/a&gt; libraries. The one being &lt;a href=&quot;http://www.gnu.org/software/libidn/&quot;&gt;libidn&lt;/a&gt;, as far as I know most XMPP servers use this and the other being &lt;a href=&quot;http://icu-project.org/&quot;&gt;ICU&lt;/a&gt; by IBM.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;While libidn is LGPL licensed with ICU you have nearly all freedom with the choice of license for your project, due to MIT license.&lt;/p&gt;
&lt;p&gt;Current XMPP standard says that every JID must be string prepped so if you don't want to cache because of memory reasons your string prepping routines are called quite often. It turns out ICU is much faster than libidn. For this benchmark I tested a couple of strings and let them go through nameprep, resourceprep and nodeprep profiles via string prepping.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The result is that ICU is about 60 times faster in string prepping.&lt;/b&gt; Version of libidn being 1.15 and of ICU being 4.2.0.1.&lt;/p&gt;

&lt;p&gt;The source code package of the benchmark is attached to this node. It falls under GPLv3 license.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-22T08:42:54+00:00</dc:date>
	<dc:creator>tm</dc:creator>
</item>
<item rdf:about="http://blog.jwchat.org/?p=123">
	<title>Stefan Strigler: Nagios Plugin to monitor BOSH services</title>
	<link>http://blog.jwchat.org/2009/06/17/nagios-plugin-to-monitor-bosh-services/</link>
	<content:encoded>&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
#&lt;br /&gt;
# check_bosh plugin for nagios&lt;br /&gt;
#&lt;br /&gt;
# usage:&lt;br /&gt;
#    check_bosh -U url -H host&lt;br /&gt;
#&lt;br /&gt;
# Check if bosh service running at specified address&lt;br /&gt;
#&lt;br /&gt;
# initial version: 3 May 2000 by Truongchinh Nguyen and Karl DeBisschop&lt;br /&gt;
#&lt;br /&gt;
# current status: $Revision: 1196 $&lt;br /&gt;
#&lt;br /&gt;
# Copyright Notice: GPL&lt;br /&gt;
# $Id: check_bosh.pl 1196 2009-06-17 15:20:46Z s.strigler $&lt;br /&gt;
#&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;use strict;&lt;br /&gt;
use lib &quot;/usr/lib/nagios/plugins&quot;;&lt;br /&gt;
use utils qw($TIMEOUT %ERRORS &amp;amp;print_revision &amp;amp;support);&lt;br /&gt;
use vars qw($PROGNAME);&lt;br /&gt;
my ($verbose,$host,$response,$state);&lt;br /&gt;
my ($opt_V,$opt_H,$opt_h,$opt_U);&lt;br /&gt;
$opt_V = $opt_h, $opt_h = $opt_U = '';&lt;br /&gt;
$state = 'UNKNOWN';&lt;/p&gt;
&lt;p&gt;$PROGNAME = &quot;check_bosh&quot;;&lt;br /&gt;
sub print_help ();&lt;br /&gt;
sub print_usage ();&lt;/p&gt;
&lt;p&gt;$ENV{'BASH_ENV'}='';&lt;br /&gt;
$ENV{'ENV'}='';&lt;br /&gt;
$ENV{'PATH'}='';&lt;br /&gt;
$ENV{'LC_ALL'}='C';&lt;/p&gt;
&lt;p&gt;use Getopt::Long;&lt;br /&gt;
Getopt::Long::Configure('bundling');&lt;br /&gt;
GetOptions(&lt;br /&gt;
	&quot;V&quot;   =&amp;gt; \$opt_V,   &quot;version&quot;    =&amp;gt; \$opt_V,&lt;br /&gt;
	&quot;h&quot;   =&amp;gt; \$opt_h,   &quot;help&quot;       =&amp;gt; \$opt_h,&lt;br /&gt;
 	&quot;U=s&quot; =&amp;gt; \$opt_U,   &quot;url=s&quot;      =&amp;gt; \$opt_U,&lt;br /&gt;
    &quot;H=s&quot; =&amp;gt; \$opt_H,   &quot;host=s&quot;     =&amp;gt; \$opt_H,&lt;br /&gt;
 	&quot;v+&quot;  =&amp;gt; \$verbose, &quot;verbose+&quot;   =&amp;gt; \$verbose&lt;br /&gt;
);&lt;/p&gt;
&lt;p&gt;# -h means display verbose help screen&lt;br /&gt;
if ($opt_h) { print_help(); exit $ERRORS{'OK'}; }&lt;/p&gt;
&lt;p&gt;# -V means display version number&lt;br /&gt;
if ($opt_V) {&lt;br /&gt;
	print_revision($PROGNAME,'$Revision: 1196 $ ');&lt;br /&gt;
	exit $ERRORS{'OK'};&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;# -U means URL&lt;br /&gt;
unless ($opt_U) { print_usage(); exit $ERRORS{'UNKNOWN'}; }&lt;/p&gt;
&lt;p&gt;# -H means host name&lt;br /&gt;
unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; }&lt;/p&gt;
&lt;p&gt;if (! utils::is_hostname($opt_H)){&lt;br /&gt;
	print &quot;$opt_H is not a valid host name\n&quot;;&lt;br /&gt;
	print_usage();&lt;br /&gt;
	exit $ERRORS{&quot;UNKNOWN&quot;};&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;# Just in case of problems, let's not hang Nagios&lt;br /&gt;
$SIG{'ALRM'} = sub {&lt;br /&gt;
        print (&quot;ERROR: No response from RPC server (alarm)\n&quot;);&lt;br /&gt;
        exit $ERRORS{&quot;UNKNOWN&quot;};&lt;br /&gt;
};&lt;br /&gt;
alarm($TIMEOUT);&lt;/p&gt;
&lt;p&gt;$state = &amp;amp;check_bosh($opt_U, $opt_H);&lt;/p&gt;
&lt;p&gt;if ($state eq 'OK') {&lt;br /&gt;
	print &quot;$state: BOSH service at $opt_U up and running\n&quot;;&lt;br /&gt;
}elsif ($state eq 'WARNING') {&lt;br /&gt;
    print &quot;$state: BOSH service not working correctly. Bad hostname given?\n&quot;;&lt;br /&gt;
}else{&lt;br /&gt;
    print &quot;$state: BOSH service at $opt_U is not running\n&quot;;&lt;br /&gt;
}&lt;br /&gt;
exit $ERRORS{$state};&lt;/p&gt;
&lt;p&gt;sub check_bosh() {&lt;br /&gt;
    my $url = shift;&lt;br /&gt;
    my $host = shift;&lt;/p&gt;
&lt;p&gt;    use LWP::UserAgent;&lt;br /&gt;
    my $ua = LWP::UserAgent-&amp;gt;new;&lt;/p&gt;
&lt;p&gt;    my $req = HTTP::Request-&amp;gt;new(POST =&amp;gt; $url);&lt;br /&gt;
    $req-&amp;gt;content_type('text/xml; charset=utf-8');&lt;br /&gt;
    my $payload =  &quot;“;&lt;br /&gt;
    print “SEND: “, $payload, “\n” if($verbose);&lt;/p&gt;
&lt;p&gt;    $req-&amp;gt;content($payload);&lt;/p&gt;
&lt;p&gt;    my $res = $ua-&amp;gt;request($req);&lt;/p&gt;
&lt;p&gt;    if ($res-&amp;gt;is_success) {&lt;br /&gt;
        print “RECV: “, $res-&amp;gt;content, “\n” if ($verbose);&lt;/p&gt;
&lt;p&gt;        if ($res-&amp;gt;content =~ /type=’terminate’/) {&lt;br /&gt;
            return ‘WARNING’;&lt;br /&gt;
        } elsif ($res-&amp;gt;content =~ /sid=’([^']+)’/) {&lt;br /&gt;
            $req = HTTP::Request-&amp;gt;new(POST =&amp;gt; $url);&lt;br /&gt;
            $req-&amp;gt;content_type(’text/xml; charset=utf-8′);&lt;/p&gt;
&lt;p&gt;            $payload = ““;&lt;br /&gt;
            print “SEND: “, $payload, “\n” if($verbose);&lt;br /&gt;
            $req-&amp;gt;content($payload);&lt;/p&gt;
&lt;p&gt;            $res = $ua-&amp;gt;request($req);&lt;/p&gt;
&lt;p&gt;            if ($res-&amp;gt;is_success) {&lt;br /&gt;
                print “RECV: “, $res-&amp;gt;content, “\n” if ($verbose);&lt;br /&gt;
            }&lt;br /&gt;
            else {&lt;br /&gt;
                print $res-&amp;gt;status_line, “\n” if ($verbose);&lt;br /&gt;
                return ‘CRITICAL’;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        print $res-&amp;gt;status_line, “\n” if ($verbose);&lt;br /&gt;
        return ‘CRITICAL’;&lt;br /&gt;
    }&lt;/p&gt;
&lt;p&gt;    return ‘OK’;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;sub print_help() {&lt;br /&gt;
	print_revision($PROGNAME,’$Revision: 1196 $ ‘);&lt;br /&gt;
	print “Copyright (c) 2009 Stefan Strigler\n”;&lt;br /&gt;
    print “adopted from check_rpc by Karl DeBisschop/Truongchinh Nguyen/Subhendu Ghosh\n”;&lt;br /&gt;
	print “\n”;&lt;br /&gt;
	print “Check if bosh service is up and running\n”;&lt;br /&gt;
	print “\n”;&lt;br /&gt;
	print_usage();&lt;br /&gt;
	print “\n”;&lt;br /&gt;
	print ”             URL of bosh service\n”;&lt;br /&gt;
    print ”            XMPP host name\n”;&lt;br /&gt;
	print ”  [-v]            Verbose \n”;&lt;br /&gt;
	print ”  [-v -v]         Verbose - will print supported programs and numbers \n”;&lt;br /&gt;
	print “\n”;&lt;br /&gt;
	support();&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;sub print_usage () {&lt;br /&gt;
	print “Usage: \n”;&lt;br /&gt;
	print ” $PROGNAME -U url -H host [-v]\n”;&lt;br /&gt;
	print ” $PROGNAME [-h | --help]\n”;&lt;br /&gt;
	print ” $PROGNAME [-V | --version]\n”;&lt;br /&gt;
}&lt;br /&gt;
&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-17T15:29:18+00:00</dc:date>
	<dc:creator>Steve</dc:creator>
</item>
<item rdf:about="https://stpeter.im/?p=2748">
	<title>Peter Saint-Andre: Prosodic</title>
	<link>https://stpeter.im/index.php/2009/06/16/prosodic/</link>
	<content:encoded>&lt;p&gt;As part of some changes to the VPS that &lt;a href=&quot;http://dizzyd.com/blog/&quot;&gt;Dizzy&lt;/a&gt; and I have shared for a number of years, I’ve just migrated the XMPP server that I run at stpeter.im from ejabberd 1.x to &lt;a href=&quot;http://prosody.im/&quot;&gt;Prosody&lt;/a&gt;. So far I like Prosody quite a bit: it’s a lean little server that’s very easy to install and configure, especially on Debian. It’s even got an ejabberd2prosody migration script, but I was too lazy to run that so I’ve wiped my roster clean (this is a backup account that I use mainly when jabber.org goes down or when I can’t handle the conversational load of the ~2300 people in my jabber.org roster).&lt;/p&gt;
&lt;p&gt;Congrats to the Prosody team on a solid piece of software!&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-17T03:45:34+00:00</dc:date>
	<dc:creator>stpeter</dc:creator>
</item>
<item rdf:about="http://tomasz.sterna.tv/?p=412">
	<title>Tomasz Sterna: Transport clustering in jabberd2</title>
	<link>http://tomasz.sterna.tv/2009/06/transport-clustering-in-jabberd2/</link>
	<content:encoded>&lt;p&gt;The added value feature of &lt;a href=&quot;http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/&quot;&gt;clustering changes in jabberd2&lt;/a&gt; is a possibility to multiplicate not only Session Manager component, but also components connected with &lt;a href=&quot;http://xmpp.org/extensions/xep-0114.html&quot;&gt;XEP-0114 component protocol&lt;/a&gt;. Namely: Transports to other networks.&lt;/p&gt;
&lt;p&gt;Component protocol connections differ from jabberd2 components that the hash used for selecting component instance to route to is computed using a ‘from’ address, not ‘to’ address. This means that the server (and s2s) userbase is distributed amongst the components (evenly).&lt;/p&gt;
&lt;p&gt;I am currently running several clustered transports with no changes to the transport code. Pretty neat. :-)&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-16T23:16:59+00:00</dc:date>
	<dc:creator>Tomasz Sterna</dc:creator>
</item>
<item rdf:about="http://dev.esl.eu/blog/?p=243">
	<title>ESL Developer Blog: Running multiple MUC-Services on one Server in ejabberd</title>
	<link>http://dev.esl.eu/blog/2009/06/16/running-multiple-muc-services-on-one-server-in-ejabberd/</link>
	<content:encoded>&lt;p&gt;In the last few weeks I have been struggling to separate the MUC-Services we provide on our XMPP-Cluster into smaller sub-services. Let’s take the following scenario:&lt;/p&gt;
&lt;p&gt;You have a website that users can play games on, and simply chat. So you will have a lot of MUC-Rooms, since (hopefully) you will have a lot of games. But it does not make any sense for the (say) poker players to see all the rooms of the chess-players in a discovery request to the MUC-Service. You you could filter this on the client side but I guess it’s good practice to send as little uninteresting data as possible. Sou you want to separate the MUC-Rooms like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;conference.website.de&lt;/li&gt;
&lt;li&gt;chess.example.com&lt;/li&gt;
&lt;li&gt;poker.example.com&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;People will log in to the server using a domain-name of @website.de (let’s say this is for historical reasons). You will have to set up your ejabberd something like this:&lt;/p&gt;

&lt;div class=&quot;wp_codebox&quot;&gt;&lt;table width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr id=&quot;p2431&quot;&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
&lt;/pre&gt;&lt;/td&gt;&lt;td id=&quot;p243code1&quot; class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;text&quot;&gt;%% serve all the hosts you need chatservices for
{hosts, [&quot;website.de&quot;, &quot;poker.example.com&quot;, &quot;chess.example.com&quot;]}.
 
%% configure all COMMON modules, you can make changes to these
%% later, so define everything you need here.
{modules, [
        {mod_adhoc,    []},
        {mod_announce, [{access, announce}]}, 
        {mod_caps,     []},
        {mod_configure,[]},
        {mod_disco,    []},
        {mod_offline,  []},
        {mod_muc_log, [
                       {access_log, muc},
                       {outdir, &quot;/tmp/jabberspool/muc_logs&quot;},
                       {dirtype, subdirs},
                       {timezone, universal}
        ]},
        {mod_stats,    []},
        {mod_time,     []},
        {mod_version,  []}
]}.
 
%% define your MAIN host, this will be the host users log into.
%% you will maybe have some more modules here than in your
%% chat-only hosts
{host_config, &quot;website.de&quot;, [{
        %% this loads the common modules, DO NOT FORGET THIS!
        {add, modules},
        [
                %% this will let users see the extra-services in service discovery
                {mod_disco,    [
                                {extra_domains, [&quot;poker.example.com&quot;,
                                                        &quot;chess.example.com&quot;]}
                ]},
                {mod_ctlextra, []},
                {mod_http_bind,[]},
                {mod_pubsub,   [
                                {host, &quot;pubsub.@HOST@&quot;},
                                {access_createnode, pubsub_createnode},
                                {plugins, [&quot;flat&quot;, &quot;pep&quot;]}
                ]},
                {mod_muc,      [
                                %% THIS HAS TO BE A SUBDOMAIN, THINGS WON'T WORK
                                %% IF YOU JUST USE @HOST@ HERE.
                                {host, &quot;conference.@HOST@&quot;},
                                {access, muc},
                                {access_create, muc},
                                {access_persistent, muc},
                                {access_admin, muc_admin}
                ]},
                {mod_roster,   []},
                {mod_shared_roster,[]},
                {mod_vcard,  []}
        ]
}]}.
 
%% now configure the chat-only hosts
{host_config, &quot;poker.example.com&quot;, [{
        {add, modules},
        [
                {mod_muc,      [
                                %% THIS HAS TO BE A SUBDOMAIN, THINGS WON'T WORK
                                %% IF YOU JUST USE @HOST@ HERE.
                                {host, &quot;muc.@HOST@&quot;},
                                {access, muc},
                                {access_create, muc},
                                {access_persistent, muc},
                                {access_admin, muc_admin}
                ]}
        ]
}]}.
 
{host_config, &quot;chess.example.com&quot;, [{
        {add, modules},
        [
                {mod_muc,      [
                                %% THIS HAS TO BE A SUBDOMAIN, THINGS WON'T WORK
                                %% IF YOU JUST USE @HOST@ HERE.
                                {host, &quot;muc.@HOST@&quot;},
                                {access, muc},
                                {access_create, muc},
                                {access_persistent, muc},
                                {access_admin, muc_admin}
                ]}
        ]
}]}.&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This way everything should work as expected and you should have three MUC-Services running on the same machine. Here is what took me so long to realise how it works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The name of the MUC-Service HAS TO BE different from the name of the host serving it. Otherwise you will run into &lt;a href=&quot;http://www.ejabberd.im/node/3113&quot;&gt;this&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;You will need to have the {add, modules} line in every host-config, otherwise the “global” options won’t count&lt;/li&gt;
&lt;li&gt;Having mod_disco in the common modules is a very good idea. Reconfigure it in your main host to show the other muc-services. Define the HOSTNAME here, not the SERVICENAME.&lt;/li&gt;
&lt;li&gt;Same goes for the {hosts} directive, HOSTNAME not SERVICENAME&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only drawback I see is that you will have a “subdomain” for each host, and then another subdomain of that for the muc service. But if you name those cleverly it may be not so bad.&lt;/p&gt;
&lt;p&gt;Good luck!&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-16T12:29:23+00:00</dc:date>
	<dc:creator>steam</dc:creator>
</item>
<item rdf:about="http://tomasz.sterna.tv/?p=407">
	<title>Tomasz Sterna: Clustering for jabberd2</title>
	<link>http://tomasz.sterna.tv/2009/06/clustering-for-jabberd2/</link>
	<content:encoded>&lt;p&gt;The largest problem for large jabberd2 deployments is a single-process, single-threaded Session Manager.&lt;br /&gt;
Being single-threaded means that it can process only one XMPP packet at a time. More importantly, when it waits for some data (from the storage mostly) it does not process any other packets.&lt;/p&gt;
&lt;p&gt;One possible solution would be to rewrite the SM to be multi-threaded. And I do mean rewrite – the way it is designed now, would mean rewrite (or reassembly) from scratch.&lt;/p&gt;
&lt;p&gt;Other possible solution is to make the SM multi-processed. This means a possibility to launch many Session Manager instances to service one XMPP domain. This would balance processing load between many processes (possibly machines) and spread storage load on many separate DB connections.&lt;/p&gt;
&lt;p&gt;Most server implementation approach this with a separate ‘clustering’ component, which tracks which session component is handling which user.&lt;br /&gt;
In case of jabberd2 I think it is not necessary. We already have the all decision making overseer – the router component.&lt;/p&gt;
&lt;p&gt;I just committed to &lt;a href=&quot;http://codex.xiaoka.com/svn/jabberd2/trunk/&quot;&gt;SVN trunk&lt;/a&gt; a router version, that handles many SM and/or external components (i.e. transports) instances for one XMPP domain. Router select the destination instance using a hash of user JID (receiver in case of SM instances, sender in case of external components). This is an approach that most clustering HTTP deployments use, which select the web server using session-id hash.&lt;/p&gt;
&lt;p&gt;I’m running clustered jabberd2 on &lt;a href=&quot;http://www.chrome.pl/&quot;&gt;Chrome.pl&lt;/a&gt; with no problems.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-13T15:05:12+00:00</dc:date>
	<dc:creator>Tomasz Sterna</dc:creator>
</item>
<item rdf:about="http://blog.xmpp.org/?p=495">
	<title>Extended Conversation: XMPP Roundup 10</title>
	<link>http://blog.xmpp.org/index.php/2009/06/xmpp-roundup-10/</link>
	<content:encoded>&lt;p&gt;[Reporters: Nicolas Vérité and Peter Saint-Andre]&lt;/p&gt;
&lt;p&gt;For those who love round numbers, welcome to the tenth edition of the XMPP Roundup, our semi-regular review of news and events in the XMPP community. Since our &lt;a href=&quot;http://blog.xmpp.org/index.php/2009/05/xmpp-roundup-9/&quot;&gt;last roundup&lt;/a&gt; on May 11, here’s what’s been happening…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Google Wave&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Google has announced the existence of &lt;a href=&quot;http://www.waveprotocol.org/&quot;&gt;Google Wave&lt;/a&gt;, an early-stage technology for real-time interaction that will incorporate aspects of IM, email, wikis, and other collaboration techniques. The technology for federating different Wave instances is pure XMPP, so the developer community is watching this project quite closely.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Minbif&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://symlink.me/wiki/minbif&quot;&gt;Minbif&lt;/a&gt; is an IRC gateway to IM networks which lets the user connect to Jabber (and many proprietary legacy IM systems), through IRC command lines. It is release under the GPLv2 license, in version 1.0alpha as the time of this writing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Utterance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nolan Darilek has announced the development of &lt;a href=&quot;http://gitorious.org/utterance&quot;&gt;Utterance&lt;/a&gt;, an XMPP microblog transport, written in Ruby under a BSD license.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;modular_muc&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cestari.info/&quot;&gt;Eric Cestari&lt;/a&gt; wrote a &lt;a href=&quot;http://github.com/cstar/modular_muc/tree/master&quot;&gt;Multi-User Chat (MUC) module&lt;/a&gt; in ejabberd that is as modular as the PubSub module.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;exmpp&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;ProcessOne has launched its &lt;a href=&quot;https://support.process-one.net/doc/display/EXMPP/exmpp+home&quot;&gt;exmpp&lt;/a&gt; Erlang XMPP library under the Erlang Public License (EPL), in its newly opened &lt;a href=&quot;http://www.process-one.net/en/labs/&quot;&gt;Labs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hemlock&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://hemlock-kills.com/&quot;&gt;Hemlock&lt;/a&gt; is an opensource soon-to-be-released Flash XMPP framework.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Services&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ask me&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://askme.im/&quot;&gt;http://askme.im/&lt;/a&gt; has a set of XMPP bots that cover quotes, jokes, movie reviews, stock prices and daliy horoscopes, and much more…&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Jabbim’s URL shorting service&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jabbim community has released a &lt;a href=&quot;http://dev.jabbim.cz/?p=65&quot;&gt;new URL shortening service&lt;/a&gt; at &lt;a href=&quot;xmpp:shorty@jabbim.com&quot;&gt;xmpp:shorty@jabbim.com&lt;/a&gt;: just add it to your roster and start chatting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Members of the XMPP community have started work on two new initiatives: an open framework for XMPP protocol testing and a website for information about the XMPP network. To participate, join the &lt;a href=&quot;http://mail.jabber.org/mailman/listinfo/interop&quot;&gt;interop@xmpp.org&lt;/a&gt; discussion list or the &lt;a href=&quot;http://mail.jabber.org/mailman/listinfo/operators&quot;&gt;operators@xmpp.org&lt;/a&gt; discussion list, respectively. Expect to see more work on these projects in the coming months!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protocols&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The big news here is that the core Jingle specifications have finally advanced from Experimental to Draft status (version 1.0)! We’ll post more about this in the near future. The specs that have moved forward are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0166.html&quot;&gt;XEP-0166: Jingle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0167.html&quot;&gt;XEP-0167: Jingle RTP Sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0176.html&quot;&gt;XEP-0176: Jingle ICE-UDP Transport Method&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0177.html&quot;&gt;XEP-0177: Jingle Raw UDP Transport Method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another important specification to advance from Experimental to Draft is &lt;a href=&quot;http://xmpp.org/extensions/xep-0237.html&quot;&gt;Roster Versioning&lt;/a&gt;. This technology will make it much more efficient for IM clients to log into XMPP servers, since the server can inform the client if the user’s contact list has not changed since the client last logged in (or send a small diff if it has changed). This is especially important in mobile applications such as cell phones and PDAs. The roster versioning technology is one of the mobile optimizations we are working on, and will be incorporated into the revisions to RFC 3921 within the IETF’s newly re-formed &lt;a href=&quot;http://tools.ietf.org/wg/xmpp/&quot;&gt;XMPP Working Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In addition, the &lt;a href=&quot;http://xmpp.org/council/&quot;&gt;XMPP Council&lt;/a&gt; has been working to advance more XEPs from Draft to Final. The latest specification to be so honored are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0138.html&quot;&gt;XEP-0138: Stream Compression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0199.html&quot;&gt;XEP-0199: XMPP Ping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, the Council has also been performing some “spring cleaning” by officially obsoleting XEP-0003: Proxy Accept Socket Service, XEP-0011: Jabber Browsing, XEP-0022: Message Events, XEP-0023: Message Expiration, XEP-0025: Jabber HTTP Polling, XEP-0090: Legacy Entity Time, and XEP-0091: Legacy Delayed Delivery.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Again, 2009 seems to be a very active year for XMPP technologies.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-11T21:13:40+00:00</dc:date>
	<dc:creator>nyco</dc:creator>
</item>
<item rdf:about="http://tomasz.sterna.tv/?p=401">
	<title>Tomasz Sterna: Virtual domains for jabberd2</title>
	<link>http://tomasz.sterna.tv/2009/06/virtual-domains-for-jabberd2/</link>
	<content:encoded>&lt;p&gt;One of jabberd2 annoyances was its requirement to run one SM instance for every serviced domain. I already did some work for dynamic jabberd2 configuration introducing default host option in c2s.xml to remove requirement of restarting C2S every time one adds new serviced domain. But it still required launching separate SM process instance.&lt;/p&gt;
&lt;p&gt;Today I committed virtual domains support changes to SVN branch &lt;a href=&quot;http://codex.xiaoka.com/svn/jabberd2/trunk/&quot;&gt;http://codex.xiaoka.com/svn/jabberd2/branches/vhosts&lt;/a&gt; which allows you to configure more than one serviced domain in only one SM instance.&lt;br /&gt;
I successfully configured 3 domains in one SM instance and was able to talk between these 3 and one another in second SM process. All 4 connected to one Router process instance.&lt;/p&gt;
&lt;p&gt;Unexpectedly it was pretty simple – it took me only ~6h. to get it working. :-)&lt;/p&gt;
&lt;p&gt;Of course all domains serviced in one SM process have identical configuration. If you need domains with different configuration, you need to create another sm.xml and launch separate SM process for them.&lt;/p&gt;
&lt;p&gt;The SVN &lt;em&gt;vhosts&lt;/em&gt; branch changes need some polishing and testing. I would appreciate if you tried these and tell me what you think.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-10T13:54:46+00:00</dc:date>
	<dc:creator>Tomasz Sterna</dc:creator>
</item>
<item rdf:about="http://blog.bluendo.com/ff/xmpp-and-compression-a-little-experiment">
	<title>Fabio Forno: XMPP and Compression: a little experiment</title>
	<link>http://blog.bluendo.com/ff/xmpp-and-compression-a-little-experiment</link>
	<content:encoded>&lt;p&gt;Zlib compression can reach very high compression rates with XMPP (up to 90%), however starting a session with a mobile client can be still expensive. The best solution would be less greediness of carriers, but I'm not dealing with science fiction, so I prefer to reduce data ;) These are the rough figures about a login with my roster (~250 contacts, with ~60-70 online) and with compression enabled using Lampiro:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;~ 1.5KB for the authentication and  stream setup&lt;/li&gt;&lt;li&gt;~ 12-13KB for the presence broadcast and other related stanzas &lt;/li&gt;&lt;li&gt;~ 4KB for roster retrieval&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Can we do better? There is a new proposal, &lt;a href=&quot;http://xmpp.org/extensions/inbox/sift.html&quot;&gt;Stanza Interception and Filtering Technology (SIFT&lt;/a&gt; ), which may help a little by filtering incoming stanzas and allowing session &quot;hush&quot;. Which is the importance of hush, besides not receiving unecessary presence updates? As Dave Cridland pointed out in a private chat it can improve Zlib compression by stuffing more data during hush and delaying flushes. The question was: how relevant is this action? So I did few experiments with a log of a login of mines and these are the results:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A complete login session: &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Initial data size: 136175&lt;/li&gt;&lt;li&gt;Compression of the whole block 16036&lt;/li&gt;&lt;li&gt;Compression flushing each packet 22739&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Only presence:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Initial data size:55729&lt;/li&gt;&lt;li&gt;Compression of the whole block 4881&lt;/li&gt;&lt;li&gt;Compression flushing each packet 7323&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt; Almost 1/3 of bandwidth gained, SIFT is definitely good! &lt;/p&gt;&lt;p&gt; &lt;/p&gt;</content:encoded>
	<dc:date>2009-06-05T23:54:04+00:00</dc:date>
	<dc:creator>Fabio Forno</dc:creator>
</item>
<item rdf:about="tag:process-one.net,2009:en/blogs/3.1283">
	<title>Process One: ProcessOne Labs</title>
	<link>http://www.process-one.net/en/blogs/article/processone_labs/</link>
	<content:encoded>ProcessOne opens access to its labs. &lt;p&gt;Our labs are producing wonderfull pieces of code and we want to make sure that code is more largely accessible. We develop &lt;a href=&quot;http://www.process-one.net/en/ejabberd/&quot;&gt;ejabberd&lt;/a&gt;, &lt;a href=&quot;http://www.process-one.net/en/tsung/&quot;&gt;Tsung&lt;/a&gt; and various Erlang projects in general and those projects stay at the core of our business.&lt;/p&gt;

&lt;p&gt;However, we want to make sure that the benefit of some of our pieces of code are open to anyone. We of course commercially support the project that goes out from our labs, so you can &lt;a href=&quot;http://www.process-one.net/en/company/contact/&quot;&gt;contact us&lt;/a&gt; if you are interested by commercial support.&lt;/p&gt;

&lt;p&gt;ProcessOne Labs can be reach on &lt;a href=&quot;http://www.process-one.net/en/labs/&quot;&gt;http://www.process-one.net/en/labs/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The first project released is a robust, fast and scalable Erlang XMPP library called &lt;a href=&quot;https://support.process-one.net/doc/display/EXMPP/&quot;&gt;exmpp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Enjoy !&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-03T14:54:15+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="tag:process-one.net,2009:en/blogs/3.1285">
	<title>Process One: Erlang XMPP library released</title>
	<link>http://www.process-one.net/en/blogs/article/erlang_xmpp_library_released/</link>
	<content:encoded>exmpp, our Erlang XMPP library as been released. &lt;p&gt;You can find more details on &lt;a href=&quot;http://www.process-one.net/en/labs/&quot;&gt;ProcessOne Labs&lt;/a&gt; or on our &lt;a href=&quot;https://support.process-one.net/doc/display/EXMPP/&quot;&gt;exmpp Wiki page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is beta release and your feedback is welcome before we reach version 1.0.&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-03T14:33:27+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="tag:process-one.net,2009:en/blogs/3.1274">
	<title>Process One: Oneteam for iPhone 2.1.0 submitted to Appstore</title>
	<link>http://www.process-one.net/en/blogs/article/oneteam_for_iphone_2.1.0_submitted_to_appstore/</link>
	<content:encoded>A major release of corporate XMPP instant messaging client for iPhone has been submitted. &lt;p&gt; OneTeam for iPhone 2.1.0 will add the following features after Apple approval:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File transfer support. Client can receive and display PDF, MS Word documents and Excel spreadsheets, Images. User can take pictures and send them to contact with file transfer.&lt;/li&gt;
&lt;li&gt;Support for HTTP links and ability to open them in OneTeam web view.&lt;/li&gt;
&lt;li&gt;Roster caching: A OneTeam entry as been added in the preference panel to decide contact list update policy. When not updated during the session, the user pane can be use to manually force download.&lt;/li&gt;
&lt;li&gt;Access possible to password protected chat rooms.&lt;/li&gt;
&lt;li&gt;Ability to send crash report to the development team and report anonymous usage statistics (OS version, network connection type), to help us prepare to iPhone firmware 3.0.&lt;/li&gt;
&lt;li&gt;Improved user interface.&lt;/li&gt;
&lt;li&gt;Bug fixes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personnaly, I love the new file transfer feature and think the development team has done a great job. It is pleasure receiving a PDF file or an image and being able to review it in a usefull way. Sending images is usefull in many context as well: Sending paperboard copy, flat visit picture, etc.&lt;/p&gt;

&lt;p&gt;Next version will likely be OneTeam 2.2.0 that will add the long awaited push features.&lt;/p&gt;

&lt;p&gt;Here is a few screenshots:&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.process-one.net/resources/blog/ot_groupchat.png&quot; /&gt;&lt;br /&gt;Groupchat session in Jabber development chat room.&lt;br /&gt;Note the ability to access links&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.process-one.net/resources/blog/ot_file_received.png&quot; /&gt;&lt;br /&gt;File received can be opened from the chat tab and history&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.process-one.net/resources/blog/ot_send_picture.png&quot; /&gt;&lt;br /&gt;Dialog to send an image to your contact&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-02T15:41:47+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="http://www.tigase.org/1538 at http://www.tigase.org">
	<title>Artur Hefczyc: Tigase XMPP/Jabber Server 4.2.0-b1720</title>
	<link>http://www.tigase.org/en/content/tigase-xmppjabber-server-420-b1720-0</link>
	<content:encoded>&lt;p&gt;This is pre-final release of the new version for the Tigase XMPP Server. It has been extensively tested under a different load and in different environments. Also it went through all our&lt;a href=&quot;http://www.tigase.org/content/new-tests-page&quot;&gt; automated tests system&lt;/a&gt;. It seems to be stable. Please feel free to check it out and report all the problems you may find.&lt;/p&gt;
&lt;p&gt;For installation instructions please refer to &lt;a href=&quot;http://www.tigase.org/content/quick-start&quot;&gt;quick start&lt;/a&gt; documentation. The pre-final release is published only as JAR file - the installer. The final version will be also released on all other formats: exe, tar.gz and zip.&lt;/p&gt;
&lt;p&gt;This is a major release with huge number of changes. Here is a brief list of what's new and what has been changed in quite random order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Virtual hosts support&lt;/strong&gt; - now virtual hosts are stored in database. Tigase can now effectively run for thousands of virtual domain. Virtual domains can be added/removed at runtime without any disruption to the working system. You can also limit number of users per domain, temporarily block registration or user login for the domain and this is all available through ad-hoc commands.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scripting support&lt;/strong&gt; - you can load scripts to the Tigase server at runtime also via ad-hoc commands. At the moment scripts are supported for administration tasks only. All JSR-223 languages compatible are supported which includes but is not limited to: Groovy, JRuby, Jython, Scala and possible a few others. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hugely improved performance&lt;/strong&gt; on multi-cpu/multi-core systems. You can now control number of threads for almost every component of the system. Again big thank you to &lt;strong&gt;&lt;a href=&quot;http://www.sun.com&quot;&gt;Sun Microsystems&lt;/a&gt;&lt;/strong&gt; for offering they hardware for tests.&lt;/li&gt;
&lt;li&gt;User repository &lt;strong&gt;connection pool&lt;/strong&gt; added.&lt;/li&gt;
&lt;li&gt;New, much more effective clustering code added.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring and self-monitoring&lt;/strong&gt; functionality added. You can watch the system running and track the server statistics via SNMP, JMX, HTTP and XMPP. But you don't have to watch them. The server monitors itself and can send you notifications when something is going wrong. The monitoring framework is highly extensible and you can easily plug your own monitors too. At the moment the Tigase looks at Memory, CPU, Disk usage as well as it watches logs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New installer&lt;/strong&gt; has been improved too. It does create administrator accounts for you during installation and often requested feature - the &lt;strong&gt;command line mode&lt;/strong&gt; for the installer is now supported too.&lt;/li&gt;
&lt;li&gt;Alternatively - &lt;strong&gt;Debian/Ubuntu packages&lt;/strong&gt; are available too. Directly from SVN so you can install and play with the most hot version of the server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PubSub&lt;/strong&gt; further improved. Now, you can optionally use PubSub with dedicated database schema instead of Tigase built-in UserRepository. The new schema greatly improved performance and was successfully tested with up to 1mln nodes and 1 thousand subscription each.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The full and detailed description of what's new will be compiled for the final release. I am awaiting your comments and please report all the problems you may find.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tigase.org/en/content/tigase-xmppjabber-server-420-b1720-0&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-02T07:52:10+00:00</dc:date>
	<dc:creator>kobit</dc:creator>
</item>
<item rdf:about="http://www.tigase.org/1536 at http://www.tigase.org">
	<title>Artur Hefczyc: Tigase XMPP/Jabber Server 4.2.0-b1720</title>
	<link>http://www.tigase.org/en/content/tigase-xmppjabber-server-420-b1720</link>
	<content:encoded>&lt;p&gt;This is pre-final release of the new version for the Tigase XMPP Server. It has been extensively tested under a different load and in different environments. Also it went through all our&lt;a href=&quot;http://www.tigase.org/content/new-tests-page&quot;&gt; automated tests system&lt;/a&gt;. It seems to be stable. Please feel free to check it out and report all the problems you may find.&lt;/p&gt;
&lt;p&gt;For installation instructions please refer to &lt;a href=&quot;http://www.tigase.org/content/quick-start&quot;&gt;quick start&lt;/a&gt; documentation. The pre-final release is published only as JAR file - the installer. The final version will be also released on all other formats: exe, tar.gz and zip.&lt;/p&gt;
&lt;p&gt;This is a major release with huge number of changes. Here is a brief list of what's new and what has been changed in quite random order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Virtual hosts support&lt;/strong&gt; - now virtual hosts are stored in database. Tigase can now effectively run for thousands of virtual domain. Virtual domains can be added/removed at runtime without any disruption to the working system. You can also limit number of users per domain, temporarily block registration or user login for the domain and this is all available through ad-hoc commands.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scripting support&lt;/strong&gt; - you can load scripts to the Tigase server at runtime also via ad-hoc commands. At the moment scripts are supported for administration tasks only. All JSR-223 languages compatible are supported which includes but is not limited to: Groovy, JRuby, Jython, Scala and possible a few others. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hugely improved performance&lt;/strong&gt; on multi-cpu/multi-core systems. You can now control number of threads for almost every component of the system. Again big thank you to &lt;strong&gt;&lt;a href=&quot;http://www.sun.com&quot;&gt;Sun Microsystems&lt;/a&gt;&lt;/strong&gt; for offering they hardware for tests.&lt;/li&gt;
&lt;li&gt;User repository &lt;strong&gt;connection pool&lt;/strong&gt; added.&lt;/li&gt;
&lt;li&gt;New, much more effective clustering code added.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring and self-monitoring&lt;/strong&gt; functionality added. You can watch the system running and track the server statistics via SNMP, JMX, HTTP and XMPP. But you don't have to watch them. The server monitors itself and can send you notifications when something is going wrong. The monitoring framework is highly extensible and you can easily plug your own monitors too. At the moment the Tigase looks at Memory, CPU, Disk usage as well as it watches logs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New installer&lt;/strong&gt; has been improved too. It does create administrator accounts for you during installation and often requested feature - the &lt;strong&gt;command line mode&lt;/strong&gt; for the installer is now supported too.&lt;/li&gt;
&lt;li&gt;Alternatively - &lt;strong&gt;Debian/Ubuntu packages&lt;/strong&gt; are available too. Directly from SVN so you can install and play with the most hot version of the server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PubSub&lt;/strong&gt; further improved. Now, you can optionally use PubSub with dedicated database schema instead of Tigase built-in UserRepository. The new schema greatly improved performance and was successfully tested with up to 1mln nodes and 1 thousand subscription each.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The full and detailed description of what's new will be compiled for the final release. I am awaiting your comments and please report all the problems you may find.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.tigase.org/en/content/tigase-xmppjabber-server-420-b1720&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-06-01T22:06:12+00:00</dc:date>
	<dc:creator>kobit</dc:creator>
</item>
<item rdf:about="http://ralphm.net/blog/2009/05/31/pubsubhubbub">
	<title>Ralph Meijer: PubSubHubbub</title>
	<link>http://ralphm.net/blog/2009/05/31/pubsubhubbub</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://code.google.com/p/pubsubhubbub/&quot;&gt;PubSubHubbub&lt;/a&gt; is
        a protocol and reference implementation for doing publish-subscribe
        using web hooks, polling in feeds triggered by a ping from the
        publisher, and POSTing Atom entries to notify subscribers. The
        notification part is similar to what I've been working on for the
        publish-subscribe stuff at Mediamatic Lab, where we spiced up &lt;a href=&quot;http://idavoll.ik.nu/&quot;&gt;Idavoll&lt;/a&gt; with an &lt;a href=&quot;http://idavoll.ik.nu/wiki/HTTP_Interface&quot;&gt;HTTP interface&lt;/a&gt;
        to bridge the gap between XMPP Publish-Subscribe and HTTP speaking
        entities.&lt;/p&gt;

      &lt;p&gt;Although I spend a lot of time working on XMPP based
        publish-subscribe, I understand the reasons for going for a full
        HTTP-based approach. XMPP can be intimidating for developers of web
        applications. While the differences between XMPP and HTTP are
        important (stateful connections, asynchronous processing, etc), the
        fact that it is different is reason often enough. Hosting
        facilities don't always offer ways to do XMPP, and there is not
        nearly enough running code out there to make it easier for people
        to play with these technologies to spice up their web application
        with non-IM XMPP functionality. Having platforms like Google App
        Engine provide sending and handling raw XMPP stanzas as part of the
        API would surely help.&lt;/p&gt;

      &lt;p&gt;That said, PubSubHubbub has two separate sides to it, the
        publishing part and the notification part. There's nothing that
        prevents a &lt;em&gt;hub&lt;/em&gt; to do the publishing part
        using regular XMPP publish-subscribe. Instead of fetching the Atom
        Feed over HTTP every time, it could use autodiscovery to find out
        the publish-subscribe node and upgrade by subscribing to it
        instead.  Similarly, the notification part could send out XMPP
        notifications.  Combined with existing HTTP aggregator, that
        combination is very similar to how the aggregator for &lt;a href=&quot;http://mimir.ik.nu/trac/&quot;&gt;Mimír&lt;/a&gt; works.&lt;/p&gt;

      &lt;p&gt;I'm still not convinced that PubSubHubbub is the answer to the
        efficient exchange of updates on social objects, but I do think it is a
        good way to make smaller entities be part of a federation of social
        networking sites. Likely, we'll see a hybrid approach, to begin
        with.&lt;/p&gt;</content:encoded>
	<dc:date>2009-05-31T13:09:49+00:00</dc:date>
	<dc:creator>ralphm</dc:creator>
</item>
<item rdf:about="http://ralphm.net/blog/2009/05/31/swfoo09">
	<title>Ralph Meijer: Social Web FooCamp 2009</title>
	<link>http://ralphm.net/blog/2009/05/31/swfoo09</link>
	<content:encoded>&lt;p&gt;Last month I was fortunate enough to attend &lt;a href=&quot;http://swfoo09.pbworks.com/&quot;&gt;Social Web FooCamp&lt;/a&gt; at
        O'Reilly HQ in Sebastopol, CA, a follow up to Social Graph FooCamp in
        2008. I can't express how inspiring such events are, being able to have
        a continuous, in-depth conversation with so many bright minds about so
        many topics that keep you busy on &lt;em&gt;regular&lt;/em&gt; days,
        and more. I'll give a quick overview of the whole trip, and then go
        into depth in a series of posts.&lt;/p&gt;

      &lt;p&gt;My trip started with a visit to friend and former &lt;a href=&quot;http://www.jaiku.com/&quot;&gt;Jaiku&lt;/a&gt; colleague Andy
          Smith, who was kind enough to take me in at &lt;a href=&quot;http://www.facebook.com/pages/San-Francisco-CA/HouseKu/22204023656&quot;&gt;Houseku&lt;/a&gt;.
        As soon as I landed on SFO, I got an SMS from him to make a detour to
        his office. Besides meeting a bunch of Andy's fellow googlers, I got to
        spend some time with Brett Slatkin talking about
        &lt;a href=&quot;http://code.google.com/p/pubsubhubbub/&quot;&gt;PubSubHubbub&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;The next day I got a ride to Sebastopol from Edwin
          Aoki. After a trip full of interesting conversation, we
        arrived at the O'Reilly offices. Sebastopol was a lot warmer than San
        Francisco, perfect for camping. Lots of familiar faces, but also a lot
        of new ones. During the Friday evening, apart from the general
        introduction, I didn't get to any sessions, but instead spent talking
        to a bunch of people on &lt;a href=&quot;http://xmpp.org/&quot;&gt;XMPP&lt;/a&gt;,
        &lt;a href=&quot;http://xmpp.org/tech/pubsub.shtml&quot;&gt;Publish-Subscribe&lt;/a&gt;
        and the work I am doing on federating social networks under that name
        &lt;a href=&quot;http://www.mediamatic.nl/page/3392/en&quot;&gt;Open-CI&lt;/a&gt; at
        &lt;a href=&quot;http://www.mediamatic.nl/&quot;&gt;Mediamatic Lab&lt;/a&gt;.&lt;/p&gt;

      &lt;p&gt;The next two days were filled with sessions and hallway talk on
        OpenID, OAuth, different approaches to Publish-Subscribe and inter-site
        communication, resource and service discovery and service scalability.
        While most of the topics were similar to last year, I was glad to share
        what we've done at Mediamatic Lab over the past year, while learning
        how others have fared. We used these technologies to
        make a true federation of social networking sites where you can make
        cross-site relations between people and their social objects. Some of
        our discoveries there we're shared among the participants, while others
        had interesting other approaches.&lt;/p&gt;

      &lt;p&gt;Especially interesting to me was a session on OAuth and OpenID
        where I could explain how we tried to improve upon the user experience.
        Both technologies have a bad reputation in this area. With some smart
        defaults and trust between sites, we could eliminate some of the
        screens. There was talk about using pop-ups in some situations, either
        as lightboxes or as new (small) windows. In our experience the former
        can't be used if you want to do SSL (since you can't validate the
        address and certificate). The latter was deemed confusing in our user
        tests. Research is still ongoing, I suppose. The other issue had to do
        with presenting OpenID providers. We currently use a drop down, but
        that doesn't scale up very nicely. Logos might work, but in the end has
        the same issue.&lt;/p&gt;

      &lt;p&gt;I also got to show Blaine Cook the code I wrote
        recently to make it easier to write XMPP publish-subscribe enabled
        services (code-as-a-node), that has been included in the recent &lt;a href=&quot;http://ralphm.net/&quot;&gt;Wokkel&lt;/a&gt; release. In turn, Blaine shared his thoughts on
        &lt;a href=&quot;http://romeda.org/blog/2009/05/simple-addressing-for-web-part-1.html&quot;&gt;simple
          addressing on the web&lt;/a&gt; and we got to hash it out with a bunch
        of people like Brad Fitzpatrick, who also organized
        the pubsub shootout session. Finally, Eran
          Hammer-Lahav showed his work on XRD.&lt;/p&gt;

      &lt;p&gt;I'm pretty sure I forgot to mention a lot of things, but when it
        comes back to me, I'll write about it some other time.&lt;/p&gt;</content:encoded>
	<dc:date>2009-05-31T13:03:08+00:00</dc:date>
	<dc:creator>ralphm</dc:creator>
</item>
<item rdf:about="http://el-tramo.be/?p=367">
	<title>Remko Tronçon: “Beautiful Testing” XMPP Chapter</title>
	<link>http://el-tramo.be/blog/beautiful-xmpp-testing-intro</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://adam.goucher.ca/&quot;&gt;Adam Goucher&lt;/a&gt; and Tim Riley (Director of QA at Mozilla) &lt;a href=&quot;http://adam.goucher.ca/?p=684&quot;&gt;announced&lt;/a&gt; a few months ago that they are putting together a &lt;a href=&quot;http://oreilly.com/catalog/9780596159818&quot;&gt;&lt;em&gt;Beautiful Testing&lt;/em&gt;&lt;/a&gt; book for O’Reilly. I took the opportunity to write a chapter about testing in the context of XMPP (more specifically, about testing protocol implementations in &lt;a href=&quot;http://swift.im&quot;&gt;Swift&lt;/a&gt;),  and just submitted the final draft for technical review. The book is expected to be released this August.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-367&quot;&gt;&lt;/span&gt;Although there are many types of testing being done in the XMPP world, the chapter focuses on the beauty of testing the functionality of XMPP protocol implementations. After a brief introduction on XMPP, it starts out with a description of unit testing simple IQ request/response protocols, and  then gradually moves on to higher-level testing of more complex, multi-stage protocols such as session initialization. As you might expect from a developer like me, the chapter is quite heavy on the (C++) code, but I’m told it compensates for the rest of the book &lt;img src=&quot;http://el-tramo.be/wordpress/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;As with all other books in the O’Reilly “Beautiful” series (which started with &lt;em&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780596510046/&quot;&gt;Beautiful Code&lt;/a&gt;&lt;/em&gt;, but has since been followed up by &lt;em&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780596517984/&quot;&gt;Beautiful Architecture&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780596518028/&quot;&gt;Beautiful Teams&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780596527488/&quot;&gt;Beautiful Security&lt;/a&gt;&lt;/em&gt;, and &lt;em&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780596157111/&quot;&gt;Beautiful Data&lt;/a&gt;&lt;/em&gt;), all proceeds of the book go to charity, in this case &lt;a href=&quot;http://www.nothingbutnets.net/&quot;&gt;“Nothing But Nets”&lt;/a&gt; (which provides mosquito netting to malaria infested areas of Africa). This means that I can plug this book as much as I want, and still have the feeling I’m actually doing a noble, unselfish thing. (contrary to when I casually mention that you can buy our book &lt;em&gt;&lt;a href=&quot;http://oreilly.com/catalog/9780596521264/&quot;&gt;XMPP: The Definitive Guide&lt;/a&gt;&lt;/em&gt; at very sharp prices these days). Some time after the book’s release this summer, I will even make a free version of the chapter available here, so check back soon!&lt;/p&gt;</content:encoded>
	<dc:date>2009-05-29T22:00:38+00:00</dc:date>
	<dc:creator>Remko Tronçon</dc:creator>
</item>
<item rdf:about="tag:process-one.net,2009:en/imtrends/26.1263">
	<title>Process One: Google Wave: Another step toward XMPP powering the real time web</title>
	<link>http://www.process-one.net/en/imtrends/article/google_wave_another_steps_toward_xmpp_powering_the_real_time_web/</link>
	<content:encoded>Google presented its new &lt;a href=&quot;http://wave.google.com/&quot;&gt;Wave&lt;/a&gt; federated collaboration platform at Google I/O conference. &lt;p&gt;As many observers (Like &lt;a href=&quot;http://twitter.com/jowyang/status/1959993835&quot;&gt;Jeremiah Owyang&lt;/a&gt; from Forrester) have pointed out, the realtime collaborative platform itself is not impressive: This is feature you can find in many competitors offer.&lt;/p&gt;

&lt;p&gt;What is interesting however is that Google tries to leverage a development community platform by building the Wave platform on a distributed federated model, based on the open messaging standard XMPP (eXtensible Messaging and Presence Protocol). It means that you can use other XMPP / Wave enabled server to provide content for Wave platform consumers. With this move, the actual platform is really not that important. What matter is the API. The real question is whether Google will manage to attract enough developers to support this new protocol. I feel this is another step in the war with Facebook (and its Facebook API), more than an attack toward traditional collaborative platform providers like IBM and Microsoft. However, to appeal to a broader audience, Google market its initiative as &quot;email as it should be&quot;. The way of demonstrating the platform hide the essential point: Google's aim is to build a development platform and applications are just their way to promote this initiative. Google Wave is really an initiative that complement Google App Engine and Open Social.&lt;/p&gt;

&lt;p&gt;XMPP is already at the heart of several cloud computing platform and is becoming increasingly popular as a glueing tool for various types of services around the world. It is gaining mindshare ans supporters as a near real time protocol to power the next generation of web services and applications.&lt;/p&gt;

&lt;p&gt;As Peter Saint Andre &lt;a href=&quot;https://stpeter.im/index.php/2009/05/28/xmpp-catch-the-wave/&quot;&gt;explained on his blog&lt;/a&gt;, this move demonstrates once more that
&lt;/p&gt;&lt;blockquote&gt;
XMPP is fast. XMPP is secure. XMPP is extensible.
&lt;/blockquote&gt;

&lt;p&gt;Will Google succeed ?  The fight will be hard to gather a big enough development community. Only time will tell if they can provide the missing piece that everyone was waiting for. XMPP and the extension produced by the &lt;a href=&quot;http://www.xmpp.org&quot;&gt;XMPP Standard Foundation&lt;/a&gt; already cover a large piece of what Google is currently promoting. However, what is sure is that this move strengthen XMPP. XMPP is set to play a major role in the Web infrastructure of tomorrow. Be sure that ProcessOne is preparing as well to be a major player in this upcoming shift of paradigm.&lt;/p&gt;</content:encoded>
	<dc:date>2009-05-29T16:55:06+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="https://stpeter.im/?p=2719">
	<title>Peter Saint-Andre: XMPP: Catch the Wave</title>
	<link>https://stpeter.im/index.php/2009/05/28/xmpp-catch-the-wave/</link>
	<content:encoded>&lt;p&gt;At the Google I/O developer conference earlier today, Google made a big splash by &lt;a href=&quot;http://googlewavedev.blogspot.com/&quot;&gt;announcing Wave&lt;/a&gt;, a radical rethinking of communication over the Internet. As &lt;a href=&quot;http://radar.oreilly.com/2009/05/google-wave-what-might-email-l.html&quot;&gt;Tim O’Reilly noted&lt;/a&gt;, the Wave vision is to combine the best of different conversational media and collaboration tools, including email, IM, phone, microblogging, and file sharing.&lt;/p&gt;
&lt;p&gt;Little noted among hoopla is the fact that “The &lt;a href=&quot;http://www.waveprotocol.org/draft-protocol-spec&quot;&gt;Google Wave Federation Protocol&lt;/a&gt; is an open extension to XMPP core [&lt;a href=&quot;http://xmpp.org/rfcs/rfc3920.html&quot;&gt;RFC3920&lt;/a&gt;] protocol to allow near real-time communication between two wave servers.”&lt;/p&gt;
&lt;p&gt;Yes, underneath all these hot new collaborative technologies we find none other than &lt;a href=&quot;http://xmpp.org/&quot;&gt;XMPP&lt;/a&gt;, the same XML streaming protocol that has been powering the Jabber instant messaging network since 1999. Those in the know have long realized that XMPP can be used for much more than basic IM. The power of XMPP comes from the fact that in essence it is really just a way to quickly and securely deliver small pieces of structured information from one entity to another over the Internet.&lt;/p&gt;
&lt;p&gt;Let’s parse that out. XMPP is fast. XMPP is secure. XMPP is extensible.&lt;/p&gt;
&lt;p&gt;That kind of extensibility enables folks like Google to define their own XMPP extensions, but it also means that the XMPP developer community has had 10 years to define most of the core services you might need. As Kevin Smith, Remko Tronçon, and I explore in &lt;a href=&quot;http://oreilly.com/catalog/9780596521264/index.html&quot;&gt;XMPP: The Definitive Guide&lt;/a&gt; (just out from O’Reilly), XMPP includes encryption, strong authentication, interdomain federation, fully internationalized messaging, ubiquitous presence, contact lists, service discovery, multi-user chat, publish-subscribe, lightweight forms and workflows, multimedia negotiation, serverless messaging for ad-hoc networks, and much more. If all that isn’t enough, you can define your own custom features or work with the &lt;a href=&quot;http://xmpp.org/xsf/&quot;&gt;XMPP Standards Foundation&lt;/a&gt; on new protocol extensions.&lt;/p&gt;
&lt;p&gt;Despite 10 years of hard work, in many ways we’re still just starting to understand what we can build with XMPP. Google itself paved the way for some of the recent innovations by launching its XMPP-based Google Talk service in the summer of 2005, including voice and video features (XMPP is used here as a control channel, not for exchanging the media traffic). Several years ago we started to see XMPP-based gaming services like &lt;a href=&quot;http://www.chesspark.com/&quot;&gt;Chesspark&lt;/a&gt;, the brains behind &lt;a href=&quot;http://www.wuchess.com/&quot;&gt;WuChess&lt;/a&gt;. Even more recently the folks at &lt;a href=&quot;http://drop.io/&quot;&gt;drop.io&lt;/a&gt; have built a real-time collaboration platform entirely on XMPP. All the while, lots of companies and open-source projects have been using XMPP to make their most cutting-edge products and services. And now Google Wave has upped the ante even further. (I’ll have some further comments about Wave in future posts.)&lt;/p&gt;
&lt;p&gt;This is a great time to get involved with XMPP. There are dozens of open-source projects that will help you get started, including a wide variety of &lt;a href=&quot;http://xmpp.org/software/servers.shtml&quot;&gt;servers&lt;/a&gt;, &lt;a href=&quot;http://xmpp.org/software/clients.shtml&quot;&gt;clients&lt;/a&gt; for every operating system and device, and &lt;a href=&quot;http://xmpp.org/software/libraries.shtml&quot;&gt;libraries&lt;/a&gt; for just about every programming language on the planet. Our &lt;a href=&quot;http://oreilly.com/catalog/9780596521264/index.html&quot;&gt;new book&lt;/a&gt; provides a friendly introduction that shows you how to “think in XMPP”. The XMPP developer community is active on multiple fronts, from application development to interoperability testing to frequent meetups around the world (and don’t miss the &lt;a href=&quot;http://xmpp.org/summit/summit7.shtml&quot;&gt;XMPP Summit&lt;/a&gt; at &lt;a href=&quot;http://en.oreilly.com/oscon2009&quot;&gt;OSCON&lt;/a&gt; this summer). So catch the wave and join the conversation!&lt;/p&gt;</content:encoded>
	<dc:date>2009-05-29T04:50:21+00:00</dc:date>
	<dc:creator>stpeter</dc:creator>
</item>

</rdf:RDF>
