
Credits: PUSH by Steve Snodgrass
Realtime low latency notification methods get ubiquitous. This article is interesting as it show a way to leverage web communication channels even for native apps, showing that hybrid approach is gaining ground.
Websocket is a bidirectional persistent framed communication protocol that is supported in recent browsers. It has been standardized last year by the Internet Engineerind Task Force (IETF). It is still very new, but it is the most promising approach to implement realtime app in the browser.
In our daily work, we see the demand for websocket enabled application, either for XMPP on ejabberd Websocket stack or on other type of pure HTTP / JSON based protocol. In the gaming world, the use of websocket is growing both on iOS and on web-based games.

Note: If you only need unidirectional streaming communication from server to browser, you can also look at the HTML5 Server Send Event alternative. This is the standard we use in our web Push Mail (Demo).
Credits: Very cool, finally #LinkedIN for iPad. #themoreyouknow by rick1j13
During a setup of a test environment on the Tigase XMPP Server runing on JDK7 a client could not connect to the server using TLS/SSL encryption.
After investigation I discovered that the JDK7 supports TLS 1.1 and TLS 1.2, a client was using a recent version of the OpenSSL library (version 1.0.1 from Ubuntu 12.04). Knowing that I tried to connect using a command line utility from OpenSSL to connect to a secured port on the Tigase XMPP Server:
openssl s_client -debug -showcerts -connect xmpp.server.com:5223
- another connection failure. After testing connection using a command line ultility from GnuTLS (which was successful), I knew that there was an issue with the recent version of OpenSSL library.
Apparently even that OpenSSL can be convinced to work with proper parameters:
openssl s_client -debug -showcerts -ssl3 -connect xmpp.server.com:5223
In this article, we would like to explain and share details on the mid-term and long term roadmap to ejabberd.

ejabberd 3 has been in preparation for a long time now. The reason we are taking our time to reach that milestone is that we are actually trying several approaches in production systems to validate our assumptions and our improvements. ejabberd is deployed in thousands of companies and run critical services. Upgrading to this new version should bring benefit in all cases to make the upgrade effort worth it. We were not totally happy with the initial result of ejabberd 3, so we kept it in the work, exploring new visions. It means that ejabberd will not look like the current master branch in our code repository, and this is for good. We have one of the longest and largest experience in the world on building scalable XMPP system and we wanted to take the time to reflect that experience in future ejabberd versions.
The second reason why we took our time is that we are changing our internal ejabberd architecture to allow us to manage more easily our dual versions, open source and commercial ones. This business model is commonly known among open source companies. Since many years now, we have been offering an open source version to the community along with a commercial version. However, in the current state of ejabberd, it was difficult to manage both in parallel. The new architecture will be more modular and it will be easier to handle different code to handle different behaviors or feature in ejabberd.
Here is a few things you will find in the next release of ejabberd:
The commercial version will add much more to this, for deployment where scalability and flexibility matters:
We want to make sure the new architecture allows smooth transition to ejabberd 3. For that reason we’ll focus all our efforts and won’t apply other changes to ejabberd 2.1.x except critical fixes. We expect the transition work to be ready in October 2012.
However, the good news is that commercial ejabberd 3 is available on the 15th of June 2012 for customers that want to benefit from today’s improvements.

Almost a year ago, in June 2011, I published a post titled “Group messaging the next big thing to invest in and deploy“, I was talking about “2011 is the year of group texting” : $35M invested in startups (GroupMe, TextPlus, Kik and Yobongo) at least, two internet giants, Facebook and Skype, bought respectively Beluga and GroupMe, and above all Apple and Samsung, the two major leaders in the smartphone industry launched their own messaging over IP service : iMessage and ChatOn.
By that time, I was already talking about messaging over IP (MoIP) is not a service by itself but a core feature of an “over-the-top” (OTT) mobile communication service.
In a nutshell, TU Me service is a response to let end users make calls, send voice messages, instant messages, photos and your location from one single easy-to-use app. For the first time, Telefonica is deploying globally this service thanks to Apple AppStore, and tomorrow Google Play and probably its own app shops. TU Me is an internet-centric app positioned as a low-end “techno-savvy” service bundled with low-cost offers, providing attractiveness to unlimited offers with no contract and no subsidy.
Credits: Telefonica by ZaCky ॐ
We have two technical Meetups scheduled at ProcessOne in the coming month.
Both Meetup take place at ProcessOne Office in Paris.
We hope to see you there !
Mail is still one of the most commonly used tool, either in enterprise or individually. However, access to mail is usually relying on protocol that are not web friendly. ProcessOne is planning to change this access by offering a new way to get notified.
We’ve been thinking for a long time that mail is undervalued due to a couple of missing features:
What we’ve built is a platform that is able to:
Here are examples of applications you can build with our platform:
Technically, we abstract usual mail protocols (IMAP, IDLE, POP), authentication modes and we make sure we always use the best approach to deliver the mail notification in the most efficient way, depending on what is available on the mail provider infrastructure.
You can try a demo of our platform with your GMail account, using OAuth to grant us credentials without having to share your password.
The demo is using HTML5 Server-Sent events to stream “From” and “Subject” for each received mail, in realtime. It is supported on most browsers with the rare exception of Internet Explorer and Android browser (iOS works fine).
The demo demonstrate that Realtime Mail in your browser can be implemented in 10 lines of Javascript thanks to our platform.
You can try the demo by yourself on https://push-mail.process-one.net/ or watch this short screencast:
Have a cool use case ? Share it in the comments :)

Interesting the new Facebook move in favour of displaying whether or not you’ve seen the incoming message wihtin Facebook Messenger… Facebook Messenger is following Blackberry Messenger, BBM, in the disclosure of personal information with its well-known indicator “Message has been read”. I remind you that BBM is displaying 3 status : “Sent” (from app) , “Delivered” (to app) and “Read” (by the app… thus the user).
Remember the “old time” of Instant Messaging – I wouldn’t say this because I’m still using and selling it – we were talking about “Available”, “Not available”, “Away”, “Do not disturb”. After using these online status presence, we asked all IM users to type by themselves their own custom status message and ended up by proposing to hide this status presence and status message. Why ? Simple because, by selecting theses statuses, I was revealing some privacy info and moreover I was spending too much time to parameter an info that ended not to be really crucial to my receivers. That was the end of the use of online status presence and status message in favour of hidding everything… Too long, too complex!
Today the sole important information that needs to be disclosed to the receiver(s) is “Sent and Delievred”. The rest belongs to the category of personal info I do not really want to disclose. At ProcessOne, we’ve developed another way of showing indicators within our messaging over IP service, TextOne : only when a message is not delivered or a message delivery has not been confirmed, the mobile app shows a red or blue icon respectively.
Amazing no that the VentureBeat is writing “Sure, you may sacrifice a little privacy in favor of better conversations, but the exchanges are with people you presumably like, so maybe more information is better”. Guess what I’m messaging with other people than my close friends, my family… I’m messaging with my clients even sometimes my prospects (that would like to test our TextOne messaging service). So I really don’t want to share that I read or even seen his/her message… but it’s not the case with my peers and friends but not Facebook friends (some of them I do not even know who they are!).
Like other privacy settings, location for instance, you would be able to customize this “Seen by X” in Facebook Messenger. Otherwise, you would chat with a bunch of people known or not, and without knowing it, you would be disclosing some kind of interest by revealing that you’re reading and seeing messages.
What do you think ? What is your standpoint on this privacy-disclosing feature ?
Credits: Facebook Messenger by Dekuwa
Last sunday, we finished our week-long Swift Hackathon, and it was a great success, leading to Swift 2.0-beta1! Here’s a list of the things we achieved during that week.
First of all, the goal of the week was to find and fix as many bugs as possible. This is what our ‘hackathon bug count dials’ were displaying at the end of the week:

In only one week, we found 19 bugs, and fixed 64! Not a bad result for our first hackathon, don’t you think? As you can see from the trend, we put a big dent in the list of open bugs:

And if fixing all these bugs wasn’t enough, we found the time to do some other things on the side as well during the week:
Thanks again to all the people who have helped us during this excellent week!
Identity and Privacy are a growing concern on the Internet nowadays, and there have been different attempts to solve this.
One of the most recent ones is BrowserID. The XSF believes however, that building upon the strengths of XMPP would be a great way forward for the BrowserID concept, due to its inherent federation, proven Internet-wide scalability, and decentralised architecture.
This is why the XSF has decided to support projects that demonstrate the use of XMPP for BrowserID purposes. In order to do this, the first step is to get a Request for Proposals designed, so that the XSF can establish criteria to decide which projects to support financially.
We’ll have an initial open discussion tomorrow:
Time / Date: 15:00 UTC (16:00 UK; 17:00 CET, 11:00 EDT, 08:00 PDT) / 05.05.2012
Location: xsf@muc.xmpp.org
So if you’re interested in joining us to shape the future of Identity on the Internet, please drop by!
Realtime on the web is now a core component of many websites and applications. As a provider of technologies that empower the realtime web, we would like to provide our readership with a showcase of the best use case for realtime web applications.
We started small, but we hope that you will share your favorite examples with you to increase the showcase. You can see the showcase and contribute to it on Push – Web Realtime Showcase page.
Let us show together why the web is better in realtime !

We are pleased to announce the bugfix release ejabberd 2.1.11.
It includes a few bugfixes and improvements, and also ODBC support for several modules.
The major changes are:
- Fix ejabberd_http:get_line
- Don’t use binary:match to extract lines from binaries
- Parse and encode https header names like native http parser does
- Parse correctly https request split into multiple packets
- Properly handle HEAD request in mod_http_bind (EJAB-1538)
- New option default_host for handling requests with ambiguous Host (EJAB-1261)
- New ODBC support for mod_announce
- New ODBC support for mod_blocking
- New ODBC support for mod_irc
- New ODBC support for mod_muc
- New ODBC support for mod_shared_roster
- New ODBC support for mod_vcard_xupdate
- Add ODBC exporting function for privacy table
- Work also with some unicode strings in PgSQL (EJAB-1490)
- Replace a single quote with double quotes in an ODBC escape
- Make sure that res is initialized in all cases
- Parse correctly https request split into multiple packets (EJAB-1537)
- Added missed tls:recv_data/2
- Don’t ignore Length parameter in tls:recv
- Avoid quadratic behavior in reading SSL data
- Dix http_bind webserver TLS fail on Chrome (EJAB-1530)
- Assume we have only one CPU when an auto-detection fails (EJAB-1516)
- Auth: Relax digest-uri handling (EJAB-1529)
- Caps: Cache caps timestamp before the IQ-request is done
- IRC: Use of MUC password
- Private: misc errors cases fixes
- Pubsub: return user affiliation for a specified node (EJAB-1294)
- Shared Roster: Foreign items were not pushed (EJAB-1509)
- Shared Roster LDAP: user substitution in ldap_rfilter (EJAB-1555)
- Windows: Fix makefile rules for building DLLs
Check the Release Notes for a more complete list of changes:
http://www.process-one.net/en/ejabberd/release_notes/release_note_ejabberd_2.1.11
If you upgrade from ejabberd 2.0.5 or older, read carefully the release notes of ejabberd 2.1.0 too, because there were several changes in the installation path and the configuration options.
The list of solved tickets since previous version is available on ProcessOne bug tracker:
http://redir.process-one.net/ejabberd-2.1.11
ejabberd 2.1.11 is available as source code package and binary installers for Linux 32 bits, 64 bits, Mac OS X Intel, and Windows:
http://www.process-one.net/en/ejabberd/downloads
After another year of development, we’re happy to announce that we released our first Swift 2.0 beta! We encourage everyone who is interested in helping us with testing to try out this new release, as it has many bugfixes and enhancements (see the release notes for more details).
Thanks to the hackathon week (of which details will be posted shortly), we believe this first beta to be pretty stable. Nevertheless, should you find some bugs, please come and tell us about it!
Syntax highlighting for Tigase code examples in our documentation has been lost after last, minor Drupal update. We are aware of it and we are working on bringing it back.
For some reason the old markup for the highlighting engine is no longer recognized. Therefore all code examples using this markup are displayed as a plain text.
There is another markup which seems to work fine, however, converting all the code examples is a manual and slow work which takes some time. Also we might be missing some of the pages in the process. Therefore, if you find a page which is not fixed yet, please let us know.
As far west as possible. See you at the next buddycloud hackathon.

spotted on a beach in Half Moon Bay.
In his famous 2005 Stanford Commencement Speech, Steve Jobs explained how his interest in typography played a fundamental role in creating the first Macintosh computer, and how the beautiful typography set the Mac apart from other personal computers out there. He was obviously passionate about these things, going as far as pixel-perfectionism about fonts and icons. That’s why I was a bit shocked when I started noticing bad kerning (aka keming) in the iOS 5 status bar. Could it be that these are the first artifacts of the post-Steve Jobs World? (Update: No)
Spoiler alert: As XKCD points out, recognizing bad kerning is something you may not want to learn about. If you like your iOS status bar, consider not reading on.
Have a look at the battery level indicator of the iOS screenshot below:

Now compare that 44 with the one from the clock. Doesn’t look right, does it? How about something a bit more obvious: charge your iDevice to 100%, and you see the following:

That 1 in the battery level almost looks like it’s coming from a different font?! Still not convinced? How about anything in the 10-19% range?

You have to admit that this is much worse than pixel-imperfectionisms. Even if this was post-Steve, or Steve always had his battery level indicator turned off, you would have come to expect someone at Apple must be annoyed by this, surely?
I know I’m nitpicking, but the problem is that, if you noticed it once, you will notice it every time you look at your status bar. The only solution: disable the battery level indicator.
With another test version of 5.1.0 line - beta 6 we introduce one minor change in database schema which should be handled fine by installer. There is also an update instruction available: MySQL database schema upgrade for Tigase 5.1
Packages as usual can be downloaded from the files section of the Tigase XMPP Server project page.
As always all kind of feedback is very welcome. Please feel free to report found bugs in our bugtrack and post questions in the forums.
It’s with great pleasure that we would like to share with you the list of students that have been selected to participate in the Google Summer of Code 2012 for the XMPP Standards Foundation.
Congratulations to all of you, and thanks to everyone who submitted an idea for this year. We are looking forward to an interesting summer ahead. You can find more information about the Google Summer of Code on the Wiki.
A while back we realised that some of the changes we needed to make for the Prosody 0.9 release were not trivial, and involved breaking some established core APIs. We have traditionally kept our trunk repository "stable" for everyday testers who aren't worried about the occasional bug, so we decided to open up a new branch for in-progress, and potentially broken, work. This branch gained the name 'timber' (broken trunk) - timber also happens to be the Old English term for a building, and more appropriately the act of building.
And that's exactly what we've been doing. We have revamped a bunch of APIs in Prosody, from port management to our built-in HTTP server (used for BOSH, among other things). We've also moved the bulk of our c2s and s2s code into modules, which makes them fully reloadable without a server restart.
Some of our important new features destined for 0.9.0 landed or improved in timber. These include our much-requested IPv6 support, as well as certificate authentication for server-to-server streams.
Of course one of the primary goals of Prosody is to remain small and simple. All the while we have continued actively looking for unused code, especially in small features which were added that never took off,or could be replaced by less code, and removing it. This means that despite all the new features we have added, our code has only grown from the previous release by around 40KB. This means we still fit comfortably on a floppy disk alongside a copy of Lua, panic over!
Well, as announced on the Prosody mailing list, we merged timber into trunk today. This means for the first time the new code is available in our nightly builds, in trunk build #271.
Since all this code has had limited testing (a brave (read: 'crazy') group of us have been running our servers on timber for some time). Now that it's out in the open we expect more bugs to be uncovered, if you run into any then please let us know so we can squash them in preparation for the release.
I finally leave you with the obligatory picture of a piece of timber. Oh, and of course a cat. On a sawmill.

We’re just halfway through our Swift Hackathon, so we thought we'ld update you about the progress we’ve made so far. In fact, a screenshot of our live hackathon week bug counter sums this up quite well:

That’s right: in merely a couple of days, we managed to fix 50 (more than half!) of the open bugs, and found 17 new bugs. And what’s more: we still have the whole weekend ahead of us, so you still have a chance to join us in fixing, testing, and improving Swift!
A big thank you to all the people who have been helping us out so far!
We are pleased to announce the release of the Bytestream Proxy for our hosted.IM XMPP service. This is a server implementation of the XEP-0065 standard, used mainly for file transfers, when users are connected with their instant messaging clients behind a NAT or within a private network that prevents point to point communication between users.
File transfer is now made easier on hosted.IM.
When you send a file to another person using your IM client, like OneTeam, what it actually happens is that both chat applications (yours and the one used by your contact) try to establish a point to point direct connection: this means that one of such clients will open a port and listen for a connection coming from the other one to transfer the file.
What if this is not possible, typically because both use private IP addresses and work behind a router? In this case both clients need to find a mediator available on the public internet for file transfers: so both can connect to it and proceed with the interchange. This is an very common scenario already addressed by the XEP-0065 standard (Mediated connections), and now available on our hosted.IM service.
First of all, you need to enable the feature “File transfer proxy” available on the Team 10 and higher plans. Go to “Manage your domains”, click on your domain and then on the “Plans & Features” tab. The figure below shows the optional feature to check.
After updating your domain you will see a new item is displayed on the folding menu under “Plans & Features” tab:
If you click on it you will see more information on the status of the proxy service, the ID and port where it operates. If your IM application supports Discovery of Services, like OneTeam does, you will see it with the ID “proxy.hosted.im“:
Depending on your IM application you won’t need to do anything extra, as it is the case with OneTeam which automatically discovers the proxy service, or you will need to set the service Id (“proxy.hosted.im”) manually. The image below shows the advanced settings to configure the proxy service on Psi:
File Transfer Proxy feature is available for your domain for free on the paid plans: Team 10, Office 25, Office 50, Organisation 75, Organisation 100, Company 200, Company 250, Enterprise 350 and Enterprise 500.
We are pleased to announce the bugfix releases of ejabberd 2.1.10 and exmpp 0.9.9.
This release includes a few bugfixes and improvements. This is just a short list of them:
* Erlang/OTP compatibility
- Support Erlang/OTP R15B regexp and drivers (EJAB-1521)
- Fix modules update in R14B04 and higher
- Fix modules update of stripped beams (EJAB-1520)
* XMPP Core
- Fix presence problem in C2S after first unavailable (EJAB-1466)
- Fix bug on S2S shaper when TLS is used
- Prevent overload of incoming S2S connections
* XEPs
- BOSH: Get rid of useless mnesia transaction (EJAB-1502)
- MUC: Don’t reveal invitee resource when room informs invitor
- Privacy: Activate “Blocked Contacts” to current c2s connection (EJAB-1519)
- Privacy: Always allow packets from user’s server and bare jid (EJAB-1441)
- Pubsub: Add hooks for node creation/deletion (EJAB-1470)
- Shared Rosters: support groupname@vhost in Displayed Groups (EJAB-506)
- Vcard: Fix error when lowercasing some search results (EJAB-1490)
Check the Release Notes for a more complete list of changes: Release Notes for ejabberd 2.1.10
If you upgrade from ejabberd 2.0.5 or older, read carefully the release notes of ejabberd 2.1.0 too, because there were several changes in the installation path and the configuration options.
The list of solved tickets since the previous version is available on ProcessOne bug tracker:
http://redir.process-one.net/ejabberd-2.1.10
ejabberd 2.1.10 is available as source code package and binary installers for Linux 32 bits, 64 bits, Mac OS X Intel, and Windows:
http://www.process-one.net/en/ejabberd/downloads
exmpp home page:
http://support.process-one.net/doc/display/EXMPP/
or easier to remember: http://exmpp.org/
Download exmpp 0.9.9 source code package from:
http://download.process-one.net/exmpp/
You can also check the ProcessOne Labs page:
http://www.process-one.net/en/labs/
More than a year ago, Fred Wilson, a renowned VC, was explaining in a blog post titled “mobile notifications, March 1, 2011” that game changer for an app would be mobile notifications.
Here we are, that’s exactly the point that needs to be fulfilled by all application providers today. These developers are only concerned about thinking and developing some awesome user experience, explaining how good their apps are, blogging, tweeting and more than anything else achieving the highest ranking among the leaderboard in application shops.
Why real-time notification pushed to the app is key ?
Today the primary way to get an info is, without doing anything, to receive push within mobile lock screen. The primary interaction with an app is to awake the interest of the end user. Unlocking push would let you enter right in the app at the info level. Most of the users won’t open frequently an app like Email, Facebook or Twitter but will just wait for info coming right away. The paradigm is changing from pull to push : I won’t go to the info, the info would come to me.
Today, the new Sparrow 1.2 release is encountering this phenomena.
Most of the users are desperately asking for this capability, even when they don’t need it, because they are addicted to get email without having to check frequently. It’s the same for other apps but it depends on value added by the notification. Probably a Twitter DM, an eBay bid or a prospect email would not have the same value regarding how much we’re willing to pay !