Planet Jabber

Distribuir contenido
Planet Jabber -
Actualizado: hace 1 hora 42 mins

Tigase Blog: DBSchemaLoader Utility

26 March, 2016 - 02:24

Tigase is programmed to work with a plethora of databases, however not all users will want to learn (or purchase) an SQL editor to maintain those databases. We at Tigase have decided to provide a utility, built into our XMPP server, that can perform many functions of database utilities. This utility has been included with Tigase for some time now, but it's possible many of our users never noticed it's existence. DBSchemaLoader runs as a java program, so it is independent of operating system, and can run on any machine that can also run Tigase XMPP Server.

Daniel Pocock: With Facebook, everybody can betray Jesus

25 March, 2016 - 17:43

It's Easter time again and many of those who are Christian will be familiar with the story of the Last Supper and the subsequent betrayal of Jesus by his friend Judas.

If Jesus was around today and didn't immediately die from a heart attack after hearing about the Bishop of Bling (who spent $500,000 just renovating his closet and flew first class to visit the poor in India), how many more of his disciples would betray him and each other by tagging him in selfies on Facebook? Why do people put the short term indulgence of social media ahead of protecting privacy in the long term? Is this how you treat your friends?

Daniel Pocock: GSoC 2016 opportunities for Voice, Video and Chat Communication

23 March, 2016 - 03:55

I've advertised a GSoC project under Debian for improving voice, video and chat communication with free software.

Replacing Skype, Viber and WhatsApp is a big task, however, it is quite achievable by breaking it down into small chunks of work. I've been cataloguing many of the key improvements needed to make Free RTC products work together. Many of these chunks are within the scope of a GSoC project.

If you can refer any students, if you would like to help as a mentor or if you are a student, please come and introduce yourself on the FreeRTC mailing list. If additional mentors volunteer, there is a good chance we can have more than one student funded to work on this topic.

The deadline is Friday, 25 March 2016

The student application deadline is 25 March 2016 19:00 UTC. This is a hard deadline for students. Mentors can still join after the deadline, during the phase where student applications are evaluated.

The Google site can be very busy in the hours before the deadline so it is recommended to try and complete the application at least 8 hours before the final deadline.

Action items for students:

  • Register yourself on the Google Site and submit an application. You can submit applications to multiple organizations. For example, if you wish to focus on the DruCall module for Drupal, you can apply to both Debian and Drupal.
  • Join the FreeRTC mailing list and send a message introducing yourself. Tell us which topics you are interested in, which programming languages your are most confident with and which organizations you applied to through the Google site.
  • Create an application wiki page on the Debian wiki. You are permitted to edit the page after the 25 March deadline, so if you are applying at the last minute, just create a basic list of things you will work on and expand it over the following 2-3 days
Introducing yourself and making a strong application

When completing the application form for Google, the wiki page and writing the email to introduce yourself, consider including the following details:

  • Link to any public profile you have on sites like Github or bug trackers
  • Tell us about your programming language skills, list the top three programming languages you are comfortable with and tell us how many years you have used each
  • other skills you have or courses you have completed
  • any talks you have given at conferences
  • any papers you have had published
  • any conferences you have attended or would like to attend
  • where you are located and where you study, including timezone
  • any work experience you already have
  • any courses, exams or employment commitments you have between 22 May and 24 August
  • anybody from your local free software community or university who may be willing to help as an additional mentor
Further reading

Please also see my other project idea, for ham radio / SDR projects and my blog Want to be selected for Google Summer of Code 2016?.

If you are not selected in 2016

We try to make contact with all students who apply and give some feedback, in particular, we will try to let you know what to do to increase your chances of selection in the next year, 2017. Applying for GSoC and being interviewed by mentors is a great way to practice for applying for other internships and jobs.

Monal IM: Monal OSX 1.4 is out

22 March, 2016 - 14:01

Quick update to fix some of the issues people saw with 1.3 . Also, some UI updates that didn’t make it to the last release.

Erlang Solutions: MongooseIM 1.6.2 is out. Time to upgrade!

22 March, 2016 - 10:10
MongooseIM 1.6.2 is out. Time to upgrade!

by Michał Piotrowski and Rafał Studnicki

We are pleased to announce the release of MongooseIM 1.6.2. This is last release in the 1.6.x family. Please read below to find out more about our demo, load tests and all the significant changes. We encourage everyone to upgrade.

MongooseIM 1.6.2 is about "stability": finished Riak for all major modules, docker-based demo, load test, improved tests, new enhancements.


We finished our work on implementing missing Riak backends. Now all major functionalities like:

  • authentication
  • last_activity
  • message archive for one-to-one and MUC conversation (MUC archive was added in this release)
  • private
  • privacy (added in this release)
  • offline messages (added in this release)
  • rosters
  • vcard

Can be configured to store data in Riak database.

Docker-based demo The use case

In this demo we wanted to show, that cluster of MongooseIM nodes can handle node failures gracefully and users will be able to reconnect to remaining nodes in the cluster.

Set up

During Lambda Days we showed a MongooseIM demo built with docker containers. The set up was very simple:

  • DNS server
  • 5 nodes cluster of MongooseIM 1.6.2
  • HAProxy in front of all the nodes
  • MySQL as the database backend
  • Graphite/Grafana to collect all metrics

From the MongooseIM/XMPP standpoint, this setup can be depicted by the following diagram:

The code is on GitHub studzien/mongooseim-docker. Please follow the very quick start guide if you want to setup a similar infrastructure.


We prepared Amoc's scenario where every single session is trying to reconnect after node failure. The scenario can be found here.


The dashboard for interactive starting or stopping nodes and adding or removing XMPP users during an example run looked as follows:

You can check out the snapshot of this run to see how MongooseIM nodes reacted for nodes going up or down here.

Load test

To proof that we didn't break anything in the 1.6.x road, we ran load tests comparing 1.6.2 with 1.6.0. These load tests proved that we in fact improved memory footprint since 1.6.0. All other parameters stayed the same.

Exported Grafana dashboards can be found here:


As usual we are increasing test coverage and improving tests quality. The most important changes are:

  • extended privacy tests
  • improved ejabberd_c2s tests
  • added tests for MAM preference
Enhancements and fixes

We finally added support for new MAM XEP-0313 versions. Now MongooseIM understands MAM version from 0.2 to 0.5! Also we implemented Dialback Key Generation and Validation (XEP-0185) which is important to have trusted S2S connections.

Since 1.6.2, MongooseIM no longer supports Erlang/OTP versions older than R16B03-1. Thanks to that we simplified our codebase by removing some workarounds for older Erlang versions.

Join us!

As we finished our work on 1.6.x release we are now starting work on 1.7.x, please suggest features on our tracker.

Special thanks to our contributors @gbour, @bartekgorny and @jfjalburquerque. We encourage everybody to code and do a Pull Request!

Read the MongooseIM Product page on Erlang Solutions website. Or read on GitHub the detailed changelog, and check out the MongooseIM repository.

Get the news! Subscribe to the announcements mailing-list.

Ignite Realtime Blog: Openfire 4.0.2 Released

21 March, 2016 - 18:41

The Ignite Realtime Community is pleased to announce the 4.0.2 release of Openfire.  This release signifies our ongoing effort to produce a stable 4.0 series release while continuing to work toward a 4.1 release.  A changelog of issues fixed indicates 9 issues resolved with hopefully the issue of stale/ghost client sessions being resolved.


As always, please report issues in the Community Forums and you can download this release from our website.  Here are the sha1sum's for the downloads available.


Platformsha1sumFilenameLinux RPMcc675aad91ae28ed8e4dd5f86ff1bd0bed8a6000openfire-4.0.2-1.i386.rpmDebianbcbd2f48f39b59b7d445ee46a42b1a576507af41openfire_4.0.2_all.debMac369cbdc069bfabcc9a1fc906026fb21c7ab85905openfire_4_0_2.dmgWindows7c910a8136347f2b35576886dc883b4173ea598copenfire_4_0_2.exeBinary (tar.gz)b21b0087a19c5ae043c66d1b60a6e1070336d15dopenfire_4_0_2.tar.gzBinary (zip)1820004f927900ec8a8de4f0ce869a60529aa91dopenfire_4_0_2.zipSource (tar.gz)7ce3f9e727582ce6fb05fc82984f87eec160ed6bopenfire_src_4_0_2.tar.gzSource (zip)


As a reminder, Openfire's source code and development can be found on Github and an active developer discussion occurs within our groupchat.  Please consider helping out with Openfire's development!

Tigase Blog: Spam Account Protection

18 March, 2016 - 17:37

Tigase XMPP server is built from the ground up to be secure, however, some installation use cases may render themselves vulnerable. For example, if you are running a public chat server, and allow users to register for usernames. Public registration could allow for somebody to register many bogus accounts and force a DDOS attack on the server, slowing down traffic, database, and software performance. Although servers can have their own levels of protection, Tigase has some settings that may help on its own.

Tigase Blog: Editing Server Settings via XMPP

16 March, 2016 - 02:47
Almost every application written has some way you can change how it behaves. Some are more difficult to change than others, being locked behind options and run commands. Others, like Tigase, offer a number of ways you can configure the software allowing the user to choose the most convenient way to change settings

ProcessOne: IoT Studio #1 Video and Slides

14 March, 2016 - 11:07

This is the video recording of ProcessOne IoT Studio session #1.

At the core of the discussion is an introduction to Internet of Things protocols.

Here are the topics / questions that we covered during that session:

  • What are the main classes of protocols for the Internet of Things ?
  • What are the strengths of XMPP for the Internet of things ?
  • What are the main XMPP Extensions for building the Internet of Things ?
  • How can I leverage XMPP to build a real device / appliance ?

As such, the session ends with a hands-on demonstration of a Soundcloud connected Jukebox built with:
– Raspberry Pi 2
– Connected to ejabberd
– Client is developed in Go using Go XMPP library Gox.

Example code for the XMPP jukebox is available on Github: xmpp_jukebox.go

The full video recording of that session is now online and available for everyone to enjoy.

Please, send us your IoT questions for the next event !

For those who just need access to the slides, they are on Slideshare:

Tigase Blog: Windows Integration Improved

11 March, 2016 - 21:17

Recently, we've added a number of fixes to the version 7.0.3 of Tigase XMPP server which includes a number of fixes that improves operation of the software. These fixes include an easier time when setting up and operating Tigase in a Windows operating environment. When it comes to operating an XMPP server, a Windows environment might not be the first place you think of, however, Tigase can run in many Windows environments just fine! With the new maintenance version, we've improved the ease and operation of Tigase XMPP Server in this popular operating system.

ProcessOne: Experimental MIX Support for Group Conversations added to ejabberd

11 March, 2016 - 17:43

MIX stands for Mediated Information eXchange and is defined in draft of XEP-0369.

It is a work in progress extension for the XMPP protocol to build a group messaging protocol that does not rely on the presence mechanism. It is designed to overcome the limitation of XEP-0045 Multi-User Chat, in a context where most clients are mobile clients.

To do so, MIX is built on top of PubSub (XEP-0060) and use different nodes per channel to separate event types. There is five nodes to support five different types of event for each MIX conversation:

  • Messages
  • Presence
  • Participant list changes
  • Subject update
  • Conversion configuration changes

This is a work in progress, but this is a very important task and we are happy to provide the very first server implementation of the Mix protocol to get up to speed on that specification.

Here is a short walk through what can already be done.

Please, note that this is a work in progress and that the specification can (and will) change significantly before it becomes stable. This blog post is based on XEP-0369 v0.1.


Configuration is simple:

  • You need to build ejabberd from source, latest master version.
  • You need to add mod_mix in ejabberd configuration, modules section:

    modules: mod_mix: {}
  • Make sure you have pubsub enabled. Default configuration is fine:

    modules: mod_pubsub: access_createnode: pubsub_createnode ignore_pep_from_offline: true last_item_cache: false plugins: - "flat" - "hometree" - "pep"

There is no client supporting MIX yet so here is how it works directly at XMPP stream level.

Here are real-life examples from playing with our MIX implementation:

Joining a MIX conversation

You can join a MIX conversation if you know its jid (id@mixservice):

You can send a join IQ:

<iq type='set' to='hellomix@mix.localhost' id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'> <join xmlns='urn:xmpp:mix:0'> <subscribe node='urn:xmpp:mix:nodes:messages'></subscribe> <subscribe node='urn:xmpp:mix:nodes:presence'></subscribe> <subscribe node='urn:xmpp:mix:nodes:participants'></subscribe> <subscribe node='urn:xmpp:mix:nodes:subject'></subscribe> <subscribe node='urn:xmpp:mix:nodes:config'></subscribe> </join> </iq>

You receive IQ that confirms success:

<iq from="HelloMix@mix.localhost" type="result" to="admin@localhost/MacBook-Pro-de-Mickael" id="E6E10350-76CF-40C6-B91B-1EA08C332FC7"> <join xmlns="urn:xmpp:mix:0" jid="admin@localhost"> <subscribe node="urn:xmpp:mix:nodes:messages"></subscribe> <subscribe node="urn:xmpp:mix:nodes:presence"></subscribe> <subscribe node="urn:xmpp:mix:nodes:participants"></subscribe> <subscribe node="urn:xmpp:mix:nodes:subject"></subscribe> <subscribe node="urn:xmpp:mix:nodes:config"></subscribe> </join> </iq>

Subscribers on the participants node for that channel will also receive the new list of participants (so, including ourselves in that case):

<message from="hellomix@mix.localhost" type="headline" to="admin@localhost/MacBook-Pro-de-Mickael"> <event xmlns=""> <items node="urn:xmpp:mix:nodes:participants"> <item id="3d1766e2bd1b02167104f350f84b0668f850ef92"> <participant xmlns="urn:xmpp:mix:0" jid="admin@localhost"></participant> </item> </items> </event> </message>

Note: Nickname registration support is not yet implemented in our code.

Sending and receiving messages

You can now start chatting with your peers, by publishing on the message node:

<iq type='set' to='HelloMix@mix.localhost' id='mix2'> <pubsub xmlns=''> <publish node='urn:xmpp:mix:nodes:messages'> <item> <body xmlns='jabber:client'>Hi, there !</body> </item> </publish> </pubsub> </iq>

Server confirms publishing:

<iq from="HelloMix@mix.localhost" type="result" to="admin@localhost/MacBook-Pro-de-Mickael" id="mix2"> <pubsub xmlns=""> <publish node="urn:xmpp:mix:nodes:messages"> <item id="5B1AB7F432DA5"></item> </publish> </pubsub> </iq>

Message is received by all subscribers on the message node on that MIX conversation:

<message from="hellomix@mix.localhost" type="headline" to="admin@localhost/MacBook-Pro-de-Mickael"> <event xmlns=""> <items node="urn:xmpp:mix:nodes:messages"> <item id="5B1AB7F432DA5"> <body xmlns="jabber:client">Hi, there !</body> </item> </items> </event> </message> Sending and receiving presence

The presence in MIX conversation is conceptually independent from presence stanzas in standard XMPP protocol. In MIX, the presence is simply a state you want to broadcast to the subscribers of the presence node in the conversation.

The presence is broadcast through the Mix conversion, in a similar way to message:

<iq type='set' to='HelloMix@mix.localhost' id='mix3'> <pubsub xmlns=''> <publish node='urn:xmpp:mix:nodes:presence'> <item> <presence xmlns='jabber:client'> <c xmlns='' hash='sha-1' node='' ver='QgayPKawpkPSDYmwT/WM94uAlu0='></c> </presence> </item> </publish> </pubsub> </iq>

As you can see, presence is model on XMPP presence specification. In that case, we included caps info for example in our broadcast.

Server confirms presence broadcast to sender:

<iq from="HelloMix@mix.localhost" type="result" to="admin@localhost/MacBook-Pro-de-Mickael" id="mix3"> <pubsub xmlns=""> <publish node="urn:xmpp:mix:nodes:presence"> <item id="5B1ACB064CE"></item> </publish> </pubsub> </iq>

And finally, participants to conversation subscribe to presence will receive presence update:

<message from="hellomix@mix.localhost" type="headline" to="admin@localhost/MacBook-Pro-de-Mickael"> <event xmlns=""> <items node="urn:xmpp:mix:nodes:presence"> <item id="5B1ACB064CE"> <presence xmlns="jabber:client"> <c xmlns="" node="" ver="QgayPKawpkPSDYmwT/WM94uAlu0=" hash="sha-1"></c> </presence> </item> </items> </event> </message>

The presence at the moment is somewhat in between in current state of the XEP. To retract the presence you send a standard XMPP presence of type unavailable:

<presence type='unavailable' to='HelloMix@mix.localhost'></presence>

Server confirms retracting the presence item:

<message from="hellomix@mix.localhost" type="headline" to="test@localhost/MacBook-Pro-de-Mickael"> <event xmlns=""> <items node="urn:xmpp:mix:nodes:presence"> <retract id="5B1ACB064CE"></retract> </items> </event> </message>

This part is still unfortunate as it still makes it difficult to manage presence on mobiles were the status, that is the ability to receive messages, is somewhat disconnected from the session state. This is likely an area that will change significantly in the future.

Another thing to note is that for the moment, all your presence publications are kept as items, but going offline retract them all.

Querying participants list

A participant can always get list of participants with a Pubsub query on node items for the conversation:

<iq type='get' to='HelloMix@mix.localhost' id='mix4'> <pubsub xmlns=''> <items node='urn:xmpp:mix:nodes:participants'></items> </pubsub> </iq>

The conversation will reply with list of participants:

<iq from="HelloMix@mix.localhost" type="result" to="admin@localhost/MacBook-Pro-de-Mickael" id="mix4"> <pubsub xmlns=""> <items node="urn:xmpp:mix:nodes:participants"> <item id="1a3b7690ea2608d13988aca8339acf759daa8483"> <participant xmlns="urn:xmpp:mix:0" jid="test@localhost"></participant> </item> <item id="3d1766e2bd1b02167104f350f84b0668f850ef92"> <participant xmlns="urn:xmpp:mix:0" jid="admin@localhost"></participant> </item> </items> </pubsub> </iq> Querying the presence

You can query the presence as well:

<iq type='get' to='HelloMix@mix.localhost' id='mix5'> <pubsub xmlns=''> <items node='urn:xmpp:mix:nodes:presence'></items> </pubsub> </iq>

and you get a list of “available” users:

<iq from="HelloMix@mix.localhost" type="result" to="admin@localhost/MacBook-Pro-de-Mickael" id="mix5"> <pubsub xmlns=""> <items node="urn:xmpp:mix:nodes:presence"> <item id="5B1ADB972CEC"> <presence xmlns="jabber:client"> <c xmlns="" node="" ver="QgayPKawpkPSDYmwT/WM94uAlu0=" hash="sha-1"></c> </presence> </item> </items> </pubsub> </iq> Getting the list of messages

With a similar pubsub query, you can retrieve the list of messages:

<iq type='get' to='HelloMix@mix.localhost' id='mix5'> <pubsub xmlns=''> <items node='urn:xmpp:mix:nodes:messages'></items> </pubsub> </iq>

Server replies with list of messages:

<iq from="HelloMix@mix.localhost" type="result" to="admin@localhost/MacBook-Pro-de-Mickael" id="mix5"> <pubsub xmlns=""> <items node="urn:xmpp:mix:nodes:messages"> <item id="5B1ABD0BD973D"> <body xmlns="jabber:client">Hi, there is is test !</body> </item> <item id="5B1AB7F432DA5"> <body xmlns="jabber:client">Hi, there !</body> </item> </items> </pubsub> </iq>

As you can see there, there is need for improvement to rely on this list for history of messages. First, you do not have message attribution (see Caveats section), but this can be worked out.
Also, you do not have timestamp on the messages.

This part will likely change a lot in the future. I expect that a link with Message Archive Management support will be a more efficient and more consistent way to deal with message history.


At the moment it is unclear from XEP-0369 example how you match a message you receive to a participant. We are going to improve our implementation in the following way:

  1. Add a participant id on the item tag when broadcasting new participant.
  2. Add the participant id on the published items.
  3. Add the participant id in participants list on the publisher

Another issue is that the current specification and implementation will have trouble scaling and offer plenty of opportunities for “Denial of Service” attacks. This is something that will change in the future as the specification matures. However, currently, do not deploy or rely on this implementation for large-scale production services. The work is still an experiment to progress on the specifications by offering client developers to give real life feedback on a reference implementation of the current specification.


We are only at the beginning of MIX. However, we are excited to have reached a point where it is already usable in some cases.

It is still missing on administrative tasks, right management, user invitations, relationship with MAM archiving and probably a lot more. And we need consolidations on participants message attribution. However, we want to iterate fast with client developers to prototype implementation changes and have meaningful and real life feedback to improve XEP-0359.

Send us your feedback !

Monal IM: Monal 2.9 for iOS Published in the App Store

11 March, 2016 - 14:42

Monal 2.9 for iOS is now available.

Latest Version in iOS App Store

Tigase Blog: Tigase v7.0.3 Release

10 March, 2016 - 18:49
Tigase v7.0.3 ReleaseAnnouncing Release of Tigase XMPP Server v7.0.3! A new Maintenance Release has been published for Tigase with a number of fixes included below. New Features and Changes

ProcessOne: XMPP Academy #4: March 29th

10 March, 2016 - 15:06

Our now popular XMPP online video Q&A session is back for a third session on March 29th. The goal of the XMPP Academy is to help developers get the big picture and get XMPP architecture and design tips from 15-years-experience XMPP experts.

We are addressing all XMPP developers interested in asking questions on specific XMPP topics. They can send us their XMPP related questions and selected questions will be answered during a live private session for our ejabberd SaaS customers. The recording will be available to anyone to see later on-demand on ProcessOne Youtube channel.

Our third session will takes place on March 29th at 6pm CET. If you are an ejabberd SaaS customer, you can save the date, as you will soon receive a free registration link to attend live and ask post event questions. If you want your questions to be covered live in the main talk part, please, still them send them beforehand as well.

For other XMPP developers, you are very welcome to send us your questions before March 29th through our contact form. We will select the most interesting topics / questions to reply to.

We are waiting for your input !

In the meantime, you can catch up on the previous XMPP Academy sessions:

Monal IM: Monal OSX 1.3 Published in Mac App Store

8 March, 2016 - 15:36

Showing once again how much faster the Mac App Store review process is, Monal  1.3 for OS X has been released.  If you find the app useful, please review it in the app store to help others discover it.  Reviews are reset on every release and I don’t pester people for reviews, so often there are no reviews on the app despite the fact that thousands of people use it.

ProcessOne: XMPP Radar Newsletter #8

7 March, 2016 - 09:55

Welcome to the 8th issue of our newsletter. Last month was probably one of the milestones for XMPP and communication systems in general. With IM and IoT on the rise, exciting times are ahead. You can subscribe to the XMPP Radar newsletter and receive it in your inbox at the end of each month. Here are the links we found interesting in February:

The fall… and rise and rise and rise of chat networks

At the end of October 2014, something very important came to an end. After 15 years of changing the way people communicated forever, Microsoft closed down its MSN Windows Live service. Originally named MSN Messenger, its demise was not an overnight failure.

WhatsApp has a billion users, and it got there way quicker than Gmail did

WhatsApp, the messaging platform owned by Facebook, reported it had reached a billion monthly active users, bolstering its position as the world’s most popular messaging app.

Chat service architecture: League of Legends is running ejabberd

Over time, as the number of League of Legends players grew, Riot Games started encountering some trouble: the chat servers began overloading the MySQL master instance. Players were seeing issues when loading their rosters, inviting new friends, or editing player notes. This article explains how they overcame this problem using ejabberd and Riak.

Reflections on the XMPP Summit 2016

Steffen Larsen reports on the latest XMPP Summit: “I’ve been writing most of this in the airplane. I have to because my head is full of ideas and new thoughts are buzzing! Now I finally had the time to write the last bit and parts which was stuck in my brain.”

Saros, a real-time distributed software development via XMPP

What is Saros? Saros is an Eclipse plugin for distributed collaborative software development that can support arbitrarily many participants at once. All members of a session have an identical copy of Eclipse projects and Saros keeps these copies in sync as editing progresses.

ejabberd 16.02 released: Happy Leap Day

To celebrate leap day, we are happy to release ejabberd 16.02, which mark huge leap for ejabberd both in terms of features and improvements. In terms of features, we see in this release the culmination of our work in several areas.

ejabberd and the Google Summer of Code 2016

ejabberd project and developers are involved this year again as mentors in Google Summer of Code 2016 initiative, as members of the BEAM Community. This blog post explains what it could mean for you as a student wanting to contribute to our project.