Planet Jabber

September 01, 2015

ProcessOne

XMPP Radar Newsletter #2

As you may remember, last month we launched a newsletter about all things XMPP, called XMPP Radar. The goal of this newsletter is to inform readers about what has happened in the XMPP world each month.

We are happy to present you the second issue of XMPP Radar, with interesting links from August. You can subscribe to the newsletter, and do not hesitate to tweet XMPP Radar to suggest interesting links for the next issue, at end of September 2015.

Here are the links we found interesting in August:

Push Development

BBC News Launched a New Major Android and iOS App Release, Powered by Boxcar Push

BBC News app is one of the most popular in the world, with over 40m downloads since it launched. The international version has seen tremendous growth over the past 18 months, with page views up 44% to nearly half a billion per month. At ProcessOne, we are proud to be the project’s Push Notifications delivery partner.

XMPP Development

Converse.js 0.9.5 Released

A new version of Converse.js was released. This free and open-source XMPP chat client written in JavaScript reached version 0.9.5, which adds support for server-archived messages (XEP-0313).

The Myths of XMPP

Dave Cridland prepared an evolving blog post, describing and debunking the most common myths about XMPP. We concur!

Monal OSX Beta 6

Monal is a popular XMPP client for iOS. Now, the developer is working on an OS X version. Among interesting thing, the desktop client will support OS X Continuity.

Elixir in Production: Mickaël Rémond Interviewed by Plataformatec

A few months ago Plataformatec had the opportunity to interview Mickaël Rémond about his experience using Elixir in production. Mickaël is the CEO of ProcessOne.

Internet of Things

Know Your Real-time Protocols for IoT Apps

The XMPP, CoAP, and MQTT protocols have distinct pros and cons. Here’s a quick rundown of the trade-offs.

Prototyping Tools for IoT

This project is a part of the Google Summer of Code 2015. Its goal is to implement IoT prtocols for XMPP chat client Converse.js, cross-platform sensoring and controlling data communication software, and a history logger for sensors.

Long-form Analysis

Why Messaging has the Momentum in Business Collaboration

An interesting piece by David F. Carr analysing the shift from email to instant messaging and stream communication in the enterprise environment. Prime example: Slack.

It’s Operating Systems Vs. Messaging Apps In The Battle For Tech’s Next Frontier

As mobile devices continue to explore and colonize the technology landscape, their conquests are leading us to a new era, beyond search and apps.

by Marek Foss at September 01, 2015 14:01

August 26, 2015

Jérôme Poisson

Let's talk XMPP - episode 4 - group conversations

This article was initially published in French, and it got some interest, so we started to translate the whole series in English. If you can read French, you can follow the whole series there: http://www.goffi.org/tag/parlons_xmpp

The translation to English was done thanks to: Poulet , Éfrit , Paco , mbarbarosa , Weyfonk and Chteufleur . The whole series is under CC By-SA , and any help would be appreciated to help with the translation of next articles.
(Follow the corresponding link to read the previous episodes).

In the software development field, and much in the libre software, group’s discussions are really common, mostly with IRC (Internet Relay chat).
This venerable protocol do what we ask it and XMPP is strongly inspired by it. Let’s see that closely.

Group’s discussions used nowadays are called MUC (Multi-User Chat) and are defined by XEP-0045. This one standardizes and extends the first solution called Groupchat. As all that comes from IRC, I’ll explain as they come the major differences between them.

It is possible to acces a chat room located on any server from any server (again, while it is not explicitly prohibited). Chat rooms do, as the users, have a jid, which has the pattern chat_room_name@service. For example, that of Salut à Toi is sat@chat.jabberfr.org:  “sat” is the chat room’s name, “chat.jabberfr.org” the service.

The resource is used for occupants of the chat room: sat@chat.jabberfr.org/goffi corresponds to the occupant “goffi” in the chat room sat@chat.jabberfr.org. Ah little detail that I forgot in previous articles: everything is unicode in XMPP, including jid. So you can use arabic or russian nickname. But beware: some unicode characters are strongly similar, therefore it is possible to get 2 words graphically similar mixed up, we name it “homoglyphs”. For example “gοffⅰ” looks like “goffi” but it uses different characters. This issue is mentioned in a unicode technical report: http://www.unicode.org/reports/tr36/. Also, do not rely exclusively on a nickname to identify someone (espcially that it is possible that it can be reused by someone else between two sessions).

The nickname is linked to the chat room and not to the service. You can have a nick “toto” in a chat room and “titi” in another one, and someone else can have “titi” on a third chat room. This is a big difference with IRC where we have only one nickname on a server that will be used in every chat room (channel on IRC).

To go in or go out a chat room, or to change nickname, we send an available (or not) presence directly to chat_room@example.net/desired_nick, but this is normaly managed by your client.

It is also possible to write directly to all chat room’s occupants (under the hood this is a “groupchat” message that is sent to the chat room’s bare jid), or to have a private chat with a member (we write to the full jid of the recipient).

A chat room can be public or hidden (it will not appear in the chat room list), not anonymous or semi-anonymous (in the first case everyone can see the occupant’s real jid, in the second case only moderators and administrators can), persistent or temporary, open or accessible only by white list or can be protected by password, moderated or not.

All those parameters are normally defined at the creation of the chat room, or they can be modified after with the suitable option of your client (on Gajim: right click on chat room tab => Manage Room => Configure Room). According to the service you use, you can configure more or less things, for example limit the occupant’s maximal number.

A feature often implemented is the history or “back log”: when you get in a chat room, the service sends you the last X messages, allowing you to understand the context of the current conversation.

Also, if a public archive of the chat room is kept (we say “logged” chat room), the service must warn you (it’s mandatory in the XEP), this is another good point compared to IRC. For sure, one has to remember that anyone in the room can keep a log and could publish it without your consent.

So far, so good, but a great strength of IRC is its simplicity: no need to create an account, you just have to pick a nick (unique), with a server, and that’s it! So, you won’t be disapointed, XMPP has exactly the same thing with connections called “anonymous”. No anonymity in terms of Tor here, but rather the possibility to get a temporary account, with a jid more or less random, for the connection time. This comes built-in but it must often be explicitly enabled in the server configuration, and most of the time, anonymous connections are limited to the local network, no communication with other servers (to avoid spam).

If you want to chat as with IRC in a simple and intuitive way, and if you like the console, I would strongly recommend Poezio which is an excellent XMPP client that is easy to use: initially, without changing the configuration, you will be anonymously connected to the MUC service of Poezio. It is inspired by Irssi/Weechat and use the same commands (and more generally those of IRC). Below the welcome message, without changing the configuration, we see the anonymous jid assigned for the session time.

Poezio screenshot

Well this episode is long enough, but I am not finished with MUC, therefore we will talk about it next time, probably with transports.

by Goffi at August 26, 2015 10:21

August 25, 2015

Tarun Gupta (GSoC 2015)

Wrap - Up!

Hello everyone,

This summer comes to an end but it's just the beginning. I had a great learning experience all throughout the summer and have many great takeaways. I would like to thank Kev (my mentor), Nick, Tobias and all other XSF members who supported and helped me to complete my project.

Throughout the summer I worked to implement the remaining bits of Stroke, so that Stroke can have feature parity with Swiften. I am able to reach close to this goal, and will continue developing and contributing to XSF. Overall, I was able to implement most of the remaining bits in Stroke, update the existing code and also add tests, so as to ensure a good test coverage in Stroke. Still, I need to complete some small bits including LinkLocal and WhiteBoard.

I learned a lot of things throughout the summer. Firstly, I blogged the first time during GSoC. I learned a great deal about version control systems and automated review systems. I am now able to use git properly and efficiently, being able to use a lot of features provided by it. I learned a lot about the XMPP protocol by reading some RFCs and XEPs and also through writing blogs. Also implementing some of these made my understanding more clear and thorough. Lastly, I learned some debugging skills (using a debugger), learned about XML namespaces, the Elements, Parsers and Serializers in Stroke for setting and getting XML data and many many more things.

I had some minor roadblocks throughout the development period. One of them was the ant config file problem which was not picking up the dependencies properly, and resulted into failure of patches. Another one was making some workarounds for multiple inheritance, which is not supported in Java. I was able to overcome some challenges myself and some with help from my mentors.

Lastly, I am looking forward to contribute to XSF as a long term developer. Thanks.

by TARUN GUPTA (noreply@blogger.com) at August 25, 2015 22:06

August 22, 2015

Ishan Khanna (GSoC 2015)

Finally GSOC’15 came to an end.

After about 3 months yet another GSOC has come to an end. This is the part of the program that I am sure almost every accepted student would feel sad about. End of those weekly meetings, end of those long chats with your mentors, and a lot more fun.

So my project was about adding support for Link Local (read Serverless) messaging (an XMPP Extension – 174) to Smack’s API. Though I didn’t complete everything that was expected as a part of my proposal but the basic implementation of this API is ready and working. Using the current API you can establish an XMPPLLConnection that is capable of announcing its presence over a local network and able to receive incoming connections and then communicate over a TCP connection. This was verified with the help of Gajim (an XMPP client for linux.) I made a video that demonstrates this process and shows messages being received over a Link Local Connection with the help of my API.

Even though officially the program has come to an end, I will actively contributing to Smack in future and will extend the current functionality to what I had written in my proposal, along side my Mentor Florian Schmaus.

by Ishan at August 22, 2015 21:01

August 21, 2015

Marvin Wißfeld (GSoC 2015)

GSoC 2015 is over.

Finally, the Google Summer of Code 2015 concluded. Over 1,000 students - including myself - used the summer to develop amazing open-source software, making our daily life better.

DNSSEC for minidns

I successfully finished my project, to include support DNSSEC in minidns, a popular DNS client library for Java with support for Android. Just to summarize my previous posts, here is a list of things developed during the summer:

  • Parsing the wire format of various DNS records: DLV, DNSKEY, DS, NSEC, NSEC3, NSEC3PARAM, RRSIG, OPENPGPKEY, OPT, TLSA
  • Creating the wire format for all supported DNS records (required for proper validation)
  • Recursive resolving from the DNS root servers
  • Validating signatures (RRSIG) using RSA and DSA keys and MD5 (deprecated), SHA1, SHA-256 and SHA-512 hashes
  • Validating negative results using NSEC and NSEC3
  • Validating delegation using direct domain chain (DS) or DNSSEC lookaside validation (DLV)
  • Certificate validation using TLSA records (DANE)
  • Include DNSSEC resolving and DANE capabilities as optional features into smack

To ensure correctness of all features, I also added a lot of unit tests to minidns. Due to this I was able to find some relevant bugs in minidns. Unfortunately, some of the optionally desired features did not make it into usable state until today. I will further work on adding the following after this years GSoC:

  • Validate signatures using ECDSA keys
  • Include DNSSEC resolving, DANE capabilities and OPENPGPKEY DNS record support into OpenKeychain

Thanks

I’d like to say a warm thank you, to everyone involved with the organisation of the GSoC at XSF (which acted as my host organization) or supported me at my project. This includes, but is not limited to:

  • Rene Treffer
  • Florian Schmaus
  • Dave Cridland
  • Georg Lukas
  • Kevin Smith

August 21, 2015 00:00

August 19, 2015

Tigase Blog

Adhish Singla (GSoC 2015)

Week 12

Objective

History Logger for Sensor Devices

Abstract

Storing momentary data for Sensor Devices by a node that sends back History data stored by the Logger.

Work

  • Implementing IoT_Logger.py for SleekXMPP, which is basically an API for storing and Rerieving of Momentary Data collected from other resource of same device.
  • Implementing IoT_HistoryLogger.py for SleekXMPP:
    • It registers a new resource of the same device whose data is to be stored.
    • Sends a read request to the original device at regular intervals and stores the values using above mentioned API.
    • Recieves messages and respond back with history on receiving a history request by getting back data using the above mentioned API.
  • Also did a few changes to XEP-0323 Plugin of SleekXMPP for History Messages.

Results

Logger

GSoC Final Evaluation

With this I conclude the modules made in ‘Prototyping IoT Tools’ Project for GSoC 2015. Will focus a little on Code Clean up and tutorials for the same.

by Joachim Lindborg (joachim.lindborg@lsys.se) at August 19, 2015 13:46

Daniel Baczynski (GSoC 2015)

Polishing and fixing existing code

As GSoC is inevitably going to the end I started polishing and fixing existing code. Not all points of my initial plan was achieved but the aim for these last days is to prepare code so it can be extended to a full multi-account support in future.

by DanielB (noreply@blogger.com) at August 19, 2015 13:15

August 16, 2015

Remko Tronçon

Simple Infinite Scrolling

While looking at the demo site of Twenty Fifteen (the theme I use for this blog), I noticed it used infinite scrolling, where more articles get automatically loaded when you reach the end of the page. It looked like a neat thing to have, but since I didn’t actually use WordPress, I couldn’t use the plugins that provide infinite scrolling. Writing it myself seemed like more effort than it was worth, so I dismissed it at the time. However, I later realized that I could actually do it with just a few lines of client-side JavaScript, and didn’t need any changes or support from the backend (or, in my case, static site generator) or the theme.

Continue reading post

by Remko Tronçon at August 16, 2015 22:00

August 14, 2015

Peter Saint-Andre

RFC 7613: Internationalized Usernames and Passwords

A few months ago I posted about the internationalization odyssey that was the Framework for Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols, a.k.a. RFC 7564. This work has significant implications for security, as exemplified by the PRECIS profiles for usernames and passwords, just published as RFC 7613. The old approach to internationalization of usernames and passwords (RFC 4013) was locked into Unicode version 3.2 (it's now up to version 7, with version 8 coming soon) and also used an identical algorithm for both usernames and passwords, even though the security characteristics of these two constructs are quite different (for passwords we want to maximize entropy by allowing just about every possible Unicode character, whereas for usernames we want a more controlled subset of Unicode characters mostly limited to letters and numbers). With RFC 7613, Alexey Melnikov and I took a more modern and careful approach: among other things it's version-agile with respect to Unicode and it defines separate profiles - actually one for passwords (called "OpaqueString") and two for usernames, depending on whether uppercase characters are preserved or mapped to lowercase. It will take awhile for this new approach to trickle into application protocols (XMPP identifiers and chatroom nicknames are the first two) and then into running code, but eventually this new approach will provide a stronger and more sustainable foundation for handling internationalized usernames and passwords over the Internet.

August 14, 2015 00:00

Marvin Wißfeld (GSoC 2015)

Status Update - Last minutes

Next monday is the soft pencils down date and the firm pencils down is scheduled for next friday.

I completed the support for DANE and did further testing. With DANE support being added, we can finally start adding DNSSEC and DANE to applications. Hooray.

The list of open TODOs:

  • ECDSA support
  • DNSSEC look-aside validation (DLV)
  • Integration with smack and OpenKeychain
  • Moar Tests (can we reach 90% test coverage?)
  • Documentation

Hopefully the first three points will be finished until monday, allowing me to focus on tests on documentation the last four days (as suggested by Google).

August 14, 2015 00:00

August 13, 2015

Andreas Straub (GSoC 2015)

Week 11 - Standards

Howdy folks, and welcome to the progress update!

Not a whole lot of coding happened this week , as the focus has been on standardizing this implementation. I have been working on fixes for some user experience problems that occur if all keys of the counterpart have been purged. As-is, the user will be dropped into an empty TrustKeysActivity. Rather than changing this so that the multi-end encryption is unselectable in such a Situation, I'm going to still drop the user into the TrustKeysActivity, but present them with a short blurb explaining why there are no keys to select here, as we feel this is less confusing to the user. (shoutouts to @danielegobbetti for reporting this).

Other than that, work on the XEP draft is still ongoing.

by Andreas Straub (noreply@blogger.com) at August 13, 2015 21:07

August 12, 2015

Christian Schudt

Babbler Version 0.6.0

I am happy to announce the release of version 0.6.0 of the Java XMPP library, which has also been released to Maven Central!

This version is an important milestone because it’s the first version which is written solely for Java 8!

In particular that means, it leverages many of the new Java 8 goodies, most notably the new Date/Time API, Functional Interfaces (e.g. Predicate) and Lambda Expressions and paves the way for future improvements (e.g. Stream API) to keep the library modern.

The legacy Date API (java.util.Date/Calendar/TimeZone) has been replaced by the new java.time package, i.e. Instant, OffsetDateTime and ZoneOffset.

Event Listeners have been replaced by java.util.function.Consumer, which really saved a lot of similar interfaces and thanks to lambdas there isn’t even a syntactical difference.

New Features

A special release highlight is the support for the Jabber Component Protocol, which allows you to write External Components for an XMPP server. So the library isn’t exclusively usable for client development anymore, but now also for server component development! More about that in a future blog post.

Further new features are:

The full changelog with more information can be found here.

The updated documentation can be found here.

Support for XEP-0198: Stream Management is nearly done, but still needs some polishing, so it’s postponed to the next version.

Thanks for everybody who provided feedback and bug reports! I’m happy to hear more from you!

by Christian Schudt (noreply@blogger.com) at August 12, 2015 22:11

Adhish Singla (GSoC 2015)

Week 11

Objective

Client-Device Logger

Abstract

Logging momentary Data of a Sensor device using another resource of the same Jid.

Work

  • 2 resources of same device can interact with each other, without any subscription.
  • So basic idea is to write a Logging Python Script for SleekXMPP that runs with same Jid as some Sensor Device which keeps asking for its Momentary Data at particular intervals from the Device and stores it locally or in some Database ( InfluxDb ).
  • So that when asked for history, the actual resource gives momentary data, while the resource of Logger Script gives History Data.

Road Ahead

  • Complete this module and implement XEP-0326.
  • Write Tutorials for all Modules in this Project, made during GSoC 2015.

by Joachim Lindborg (joachim.lindborg@lsys.se) at August 12, 2015 14:29

Daniel Baczynski (GSoC 2015)

Keeping roster items expanded

After implementing roster proxy model to serve multiple RosterModels I had to update RosterGroupExpandinessPersister class (that keeps given items expanded, also after Swift restart) to manage AccountRosterItems too.

Collapsed groups were stored in string list as a setting. I have implemented CollapsedRosterItemsSet where information about each account and its groups state is stored. We can get info whether item is expanded/collapsed with convenience methods. RosterGroupExpandinessPersister now uses this new set instead of string list. CollapsedRosterItemsSet is serializable so it's easy to load/save it.

by DanielB (noreply@blogger.com) at August 12, 2015 12:20

August 11, 2015

Tigase Blog

XMPP: An introduction

A newcomer's introduction and journey into to the world of XMPP.
Helpful for beginners who are just starting to use XMPP.

by Daniel at August 11, 2015 22:41

Ishan Khanna (GSoC 2015)

Serverless Messaging – Sniffing Packets

For last couple of weeks I have been working on the XMPPLLConnection and Stream management. I have learned about Java NIO (read Non-Blocking I/O). Successfully implemented it in some test tasks given by my mentor and also implemented it to an extent in my project source code.

I have been testing my code for incoming connection requests with the help of Gajim on a VM. However there seems to be a problem with Gajim (This is what I have felt after trying some things suggested by David and Florian on the IRC channel #smack.) Whenever I get a Socket connection request from Gajim I send back a Stream Open packet to it but it immediately Resets the TCP connection by sending an RST packet. I have so far checked that there are no firewalls turned on for my network, I have made sure that the StreamOpen stanza is being written to the stream and is being sent to Gajim’s IP from which the request comes in.

All the above investigation was done with the help of WireShark.

This is what Gajim sends to my XMPPLLConnection

This is what I reply back to it.

However it fails to establish a TCP connection for some reason. I am still trying to figure out what’s going on.

by Ishan at August 11, 2015 22:07

ProcessOne

Advanced Erlang ejabberd Workshop Talks

We have started preparing our Advanced Erlang ejabberd Workshop that will take place on the 17th of november 2015 in Paris.

The main focus of the workshop will be to showcase the use of ejabberd for broadcasting messages and alerts. The goal is to demonstrate that you can truly unlock the power of XMPP by implementing more than one-to-one messaging.

Session 1: Building advanced broadcast messaging service with XMPP and ejabberd

  • Talk 1: ejabberd State of the art to implement one-to-many chat services (Mickaël Rémond)
    I will be presenting all the methods available in ejabberd and XMPP to build large scale groupchat system that meet the challenge of modern messaging. In a world where browser-based chat and mobile messaging applications are the dominant clients for large XMPP networks, building groupchat system on top of XMPP is not as straightforward as it should be. However, XMPP and ejabberd have adapted themselves to these new requirements.

    The talk will cover and compare various XMPP extensions that are used today for distribution one-to-many messages:

    • Multi-User Chat: What it is used for, how to get the best of it and how to use ejabberd APIs to extend it and customize it.
    • XMPP based extended stanza addressing (called multicast service, defined in XEP-0033).
    • Admin broadcast for mass-messaging users.

    I will then explore a conversation-based, presence-less approach to enable group discussion in ejabberd and XMPP. This will be an opportunity to present our work-in-progress extension to enable Skype or WhatsApp like group conversations.

  • Talk 2: Broadcasting with XMPP PubSub. Building efficient and scalable message broadcast services (Christophe Romain and Jérôme Sautret)

    The goal will give you a broad overview of ejabberd PubSub extensible implementation. It will explains how you can benefit from the multiple plugins available to configure a scalable Pubsub deployment for your own specific needs.

    This talk will be also a good opportunity to give an overview of ejabberd PubSub API and introduce participants to PubSub plugin development.

Session 2: Managing production Erlang services at scale

  • Talk 1: Managing large scale ejabberd infrastructures: Dealing with operational challenges (Christophe Romain)

    The talk will present experimental technics to push Erlang application deployment further. It will shows in the specific case of ejabberd how you can use those methods to manage and upgrade large scale XMPP services without downtime.

The workshop will take place in Paris on November 17th, 2015. You can join us for a fixed affordable price of 100 euros (exc. VAT). You can register on Eventbrite: ejabberd Workshop – November 2015.

by Mickaël Rémond at August 11, 2015 18:30

Tarun Gupta (GSoC 2015)

Week - 10 & 11

These two weeks I completed StringCodecs, Networks, Jingle and File Transfer.

In StringCodecs, I removed extra crypto functions (SHA-1, MD5 provider, etc) as they are already ported in Crypto. Later, I added tests for some existing functionalities.

XMPP has a client-server architecture wherein a client utilizing XMPP accesses a server over a TCP connection, and servers also communicate with each other over TCP connections. Because each server is identified by a network address and because server-to-server communications are a straightforward extension of the client-to-server protocol, in practice, the system consists of a network of servers that inter-communicate. 
For example, <juliet@example.com> is able to exchange messages, presence, and other information with <romeo@example.net>. This pattern is familiar from messaging protocols (such as SMTP) that make use of network addressing standards. Communications between any two servers are OPTIONAL. In Networks, I implemented various proxy connection classes (HTTP and SOCK5), Dummy Connection and ChainedConnector. I also added tests for some of the classes including HostAddress class which performs the functionality of finding the IP using InetAddress.

Jingle is an extension to XMPP which adds peer-to-peer session control for multimedia interactions such as in Voice over IP or video conferencing communications. In essence, Jingle enables two XMPP entities (e.g., romeo@montague.lit and juliet@capulet.lit) to set up, manage, and tear down a multimedia session. The negotiation takes place over XMPP, and the media transfer typically takes place outside of XMPP. More information is available in this RFC. Jingle provides a pluggable framework for both application types and media transports; in the case of voice and video chat, a Jingle negotiation usually results in use of the Real-time Transport Protocol (RTP) as the media transport and thus is compatible with existing multimedia technologies such as the Session Initiation Protocol (SIP). I added JingleSession, JingleContentID, JingleResponder, JingleSessionManager.

The File Transfer protocol is specified in XEP-0096. File Transfer defines a profile of the XMPP stream initiation extension for transferring files between two entities. The following XML namespaces are used in the context of the File Transfer protocol: http://jabber.org/protocol/si/profile/file-transfer. In order to send a file, the sender must first tell the receiver a little bit about the file to make sure they will accept it. At the same time they list the stream methods they support in the order they wish to use them. This is done by sending the information in the http://www.jabber.org/protocol/filexfer namespace. More information available in this XEP. I have ported JingleFileTransfer, FileTransferManager and various other files. Tests are yet to be ported.

Next week, I am onto LinkLocal.

Thanks.

by TARUN GUPTA (noreply@blogger.com) at August 11, 2015 16:47

Alexander Gnauck

Unity development with MatriX

A question which comes up very often is the following:

Can I use MatriX with Unity 3d?
Of course you can. Many of our customers are using it with great success in their Unity projects.

Unity is based on Mono. MatriX is designed for cross platform and works on all major .NET platforms, including Mono.

Many Unity developers have some problems to get started with MatriX on Unity.
This post should be a small tutorial and address some of the issues you may be facing during your Unity development.

1) Download the correct MatriX dll (Mono build). MatriX builds are not universal, which means you need to download and reference the MatriX library for Mono.
The Mono build can be found at the latest binary downloads here:
http://www.ag-software.net/download-directory/
when you browse to MatriX => Mono

2) The System.Xml.Linq.dll seems to be not a standard Unity reference. Download it as well and add it to your assets. Otherwise Unity may throw an exception when you run your project.

3) Depending on your Unity version you may get compiler errors on iOS. When you use the latest Unity version this should be no problem. On older Unity versions this problem is related to obfuscation. To resolve this please contact us directly.

4) The iOS stripping feature causes problems. It does not work when reflection gets used. The core Xml serializing engine in MatriX is build on reflection using a factory pattern. You either have to remove stripping from your complete project, or exclude the MatriX classes.
Here is an example of a linker.xml file excluding all MatriX classes:

<linker>
  <assembly fullname="Matrix">
    <type fullname="Matrix.*" preserve="all"/>
  </assembly>
  <assembly fullname="mscorlib">
    <namespace fullname="System.Security.Cryptography" preserve="all" />
  </assembly>
</linker>

It looks like disabling all stripping in Unity is not enough and the linker.xml file above must exist.

5) Some of our users reported that connecting to an XMPP server does not work inside the Unity editor because of some networking problems of the IDE. When the code gets executed or published on a device it works fine. This is a restriction of Unity and not related to MatriX.

If you run into any other problems please contact us directly. We do our best to solve them.

by gnauck at August 11, 2015 12:36

August 09, 2015

ProcessOne

Code As Craft Interview #2 – XWiki

Ludovic Dubost, XWiki founder, explains what he has learned in more than 10 years running his company. Mickaël and Ludovic discuss what it is like to be both a programmer and a founder. Ludovic discuss what you have to do to stay relevant in a quickly evolving and highly competitive environment.

We hope you will enjoy this open discussion between two programmers, Open Source product builders and company founders.

by Mickaël Rémond at August 09, 2015 16:23

ejabberd powers mission critical Realtime Internet of Things platform

In this interview (in French), Huy Phong Nguyen explains how IMA Technologies leverage the power of ejabberd realtime messaging platform to power a mission critical Internet of Things platform.

ejabberd is used as a central hub to connect smart things and alarm central systems in a house-wide home automation service.

You can check the video (in French) for more details:

by Mickaël Rémond at August 09, 2015 16:22

XMPP Extensions are now managed on Github

The XMPP Standards Foundation has moved a while back the repository for the XMPP specification documents to Github: xsf/xeps

This is quite an important change in the XMPP Extensions Proposal workflow. It is now easier than before to track the changes as they are happening.

I am curious to see the contributions rate in the next few months but I bet we will see involvement and contributions increasing. Even for small fixes and typos, this is a good thing.

You can see our work / proposal on processone/xeps or track our own custom work, possible candidates for new XMPP Extensions on processone/ejabberd-saas-docs.

by Mickaël Rémond at August 09, 2015 16:21

Jose Valim interviews Mickaël Rémond on Elixir language integration in ejabberd

Here is a video interview from Jose Valim from Plataformatec about the integration of Elixir programming language as a standard way to write modules in ejabberd.

ejabberd is an extremely extensible and versatile server. Using ejabberd API together with Elixir programming language expressivity certainly makes writing ejabberd modules easier. It opens ejabberd module development to a whole new set of use cases. This integration makes ejabberd module development more approachable to new ejabberd developers and make it an even better choice for building advanced high-performance messaging platforms.

You can read the full blog post on Plataformatec website: Elixir in production interview: Mickaël Rémond

by Mickaël Rémond at August 09, 2015 16:20

BBC News launch new major Android and iOS app release, powered by Boxcar Push

BBC News has launched a beautiful new version of its international application in July 2015.

It has still the same great content with a new modern look.

screen322x572

Coming from a server and scalability perspective, the best part is the incredible audience the International version of the app has, adding to their own UK audience. More figures are available from their slides, but the international version has 27 million downloads and an audience of 5.4 million monthly users.

We thank them for mentioning ProcessOne as their Push Notifications delivery partner. This is a project we are proud working on.

You can learn more about the brand new BBC News mobile app from BBC Media Center: BBC continues digital transformation of news on the go with new-look international BBC News app

by Mickaël Rémond at August 09, 2015 16:19