Agregador de noticias

ProcessOne: XMPP Radar Newsletter #3

Planet Jabber - 6 October, 2015 - 18:53

With September behind us, we present you the third issue of XMPP Radar. This month we focus very much on new releases and announcements of XMPP software. You can subscribe to the newsletter and receive it in your inbox at the end of each month. Also, do not hesitate to tweet XMPP Radar to suggest content for the next issue.

Here are the links we found interesting in September:

ejabberd 15.09 released, now with OAuth 2.0 support

OAuth support is a major milestone for ejabberd, as it makes it a central components that can integrate and play well with Web HTTP based clients, apps and services.

Smack 4.1.4 released by Ignite Realtime

Smack is an Open Source XMPP client library for instant messaging and presence. As a pure Java library, it can be embedded into your applications. This month marked the release of version 4.1.4.

AG-SoftwareMatriX v2 released

AG-Software announced a stable releases of MatriX 2. It’s a SDK / library for XMPP written in managed C#, dedicated to .NET and Silverlight technologies.

OMEMO Multi-End Message and Object Encryption

OMEMO is an XMPP Extension Protocol (XEP) for secure multi-client end-to-end encryption. It is an open standard based on Axolotl and PEP which can be freely used and implemented by anyone.

Dropbox releases its chat app Zulip under an open-source license

Dropbox has released its recently acquired chat app, Zulip under an open-source Apache license. They have released everything, including the server, Android and iOS mobile apps, desktop apps for Mac, Linux and Windows, and the Puppet configuration necessary for running the Zulip server in production.

ProcessOne XMPP Academy #1

We are pleased to launch a new initiative to help developer get a better understanding of XMPP called “ProcessOne XMPP Academy”. The goal is to help developers get the big picture and get XMPP architecture and design tips from 15-years-experience XMPP experts.

ProcessOne: ProcessOne XMPP Academy #1 Video and Slides

Planet Jabber - 1 October, 2015 - 08:16

We had last monday our first XMPP Academy live online event. Thank you for all our customers who attended and for all the questions we received.

Here are the questions that were covered during that session:

  1. ejabberd SaaS architecture questions direct link – 1m33s:

    • What is the best way to archive user messages if we do not want to sync data from user device? direct link – 9m17s
    • Why does ejabberd SaaS not use async mechanisms for archiving messages to customer back-end server? direct link – 11m25s
    • Mobile XMPP support: Explain standby, push and detached modes direct link – 16m44s
  2. XMPP / ejabberd questions direct link – 22m42s

The video of that first session is now online and available for every one to enjoy.

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

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

XMPP Academy #1 from Mickaël Rémond

ProcessOne: ejabberd 15.09 released, now with OAuth 2.0 support

Planet Jabber - 30 September, 2015 - 10:35

This month’s ejabberd release contains some major improvements and few fixes since the last release two months ago. On top of improvements is support of:

  • OAuth 2.0 delegation framework
  • preliminary OAuth and HTTP based ejabberd API,
  • X-AUTH2 authentication mechanism,
  • and message archiving for Multi-User Chat.

This is a major milestone for ejabberd, as it makes it a central components that can integrates and play well with Web HTTP based clients, components and services. You can learn more about our OAuth support from ejabberd OAuth documentation. With this support, we are exposing 13 commands from ejabberd API over HTTP with OAuth. This is just a start to get feedback and bootstrap a community effort to make ejabberd API right. We are expecting to hear from you !

Moreover, Message Archive Management now supports the latest proposal for Archiving and Multi-User Chat support, based on recent clarifications we proposed in XEP-0313.

Finally, we are keeping improving our support for Microsoft ecosystem. As Microsoft Windows support is back since 15.07, we also restored the MSSQL / Azure database server support through ODBC driver. This is a big step for users under Windows Server infrastructures.

Please read further for our full detailed changelog.

Changes Major changes
  • Added OAuth delegation framework
  • Preliminary OAuth and HTTP based ejabberd API
  • X-AUTH2 authentication mechanism,
  • MAM now can store MUC room
  • MSSQL: improved schema, simplified config, and fixed support

Note: ejabberd now requires erlang 17.1 or higher

Core improvements
  • New set_loglevel admin command to ease changing loglevel.
  • Configuration: allow to override main config file options with data from included files
  • Improve S2S certificate checks
  • Log TLS errors as [debug] messages only
  • XEP-0198: new option “max_resume_timeout”
  • XEP-0198: Improve handling of non-message stanzas
  • ext_mod: Check external modules configuration on load
  • ext_mod: Don’t override custom configuration on module upgrade
  • Several Elixir fixes
  • Updated most translation languages
Modules improvements
  • Carbon Copy: Don’t copy messages of type “normal” without body
  • HTTP-Bind: More eye-candy mod_http_bind help page
  • HTTP-Bind: Nameprep host name passed to http-bind before using in
  • HTTP-Bind: Set disable caching headers in http-bind responses
  • HTTP: pass stream management options defined in http listener to http-bind and websocket
  • MAM: Add XEP-0359 to archived messages
  • MAM: Add XEP-0313 v0.4 support
  • MUC commands: Changed argument names in two commands
  • MUC commands: Fix and document create_rooms_file and destroy_rooms_file
  • MUC hooks: added muc_filter_presence
  • MUC hooks: renamed muc_filter_packet to muc_filter_message
  • MUC logging: check for hint
  • Multicast: many improvements in the source code
  • SIP: Do not crash SIP authentication on SCRAMed passwords
  • Remove bashisms in join_cluster leave_cluster and postinstall scripts
  • Allow root to run join_cluster and leave_cluster
  • Allow building an ejabberd release with mix and elixir release manager
  • Allow installing as root
  • Fix Debian/Ubuntu package
  • Rename idna to ejabberd_idna
  • Improve ‘make install’ to remove useless failure cases

As usual, the release is tagged in the Git source code repository on Github.

The source package and binary installers are available at ProcessOne.

If you suspect that you’ve found a bug, please search or fill a bug report on Github.

Ignite Realtime Blog: Second alpha version of Smack 4.2 available

Planet Jabber - 28 September, 2015 - 10:32

I've just published Smack 4.2.0-alpha2 on Maven Central. Everyone who wants to look into which direction Smack is heading, and current Smack users eager to be prepared for the upcoming API changes are invited to test this version out. We are awaiting your feedback in the Smack Users forum.


More information about Smack 4.2 can be found in the Smack 4.2 Readme and Upgrade Guide.

Peter Saint-Andre: RFC 7649: The Jabber Scribe Role at IETF Meetings

Planet Jabber - 23 September, 2015 - 00:00
During its thrice-yearly meetings, the Internet Engineering Task Force makes fairly heavy use of chatrooms powered by Jabber/XMPP technologies (which only makes sense because XMPP was standardized by the IETF). These chatrooms are used mainly as a way for remote participants to send comments to the physical meeting room. Thus arises the need for what we call "Jabber scribes" - folks at the meeting who volunteer to relay comments from the chatroom at the microphone and otherwise help to improve the experience for remote participants. Those who volunteer for this role often wonder if there are some guidelines they can follow, so Dan York and I have helpfully obliged by writing RFC 7649. Happy scribing!

Ignite Realtime Blog: Smack 4.1.4 released

Planet Jabber - 14 September, 2015 - 19:39

The Ignite Realtime community is proud to announce the availability of Smack 4.1.4. This release includes some important fixes. Most notably MultiUserChat's UserStatusListener would not always get triggered in previous releases. Also the JOSN/GCM provider did not correctly parse JSON/GCM extensions. Smack 4.1.4 includes fixes for those and addresses a few other bugs. Since it is a patch level release, Smack 4.1.4 can be used as drop-in replacement for any previous version of Smack 4.1. Users are encouraged to update existing projects depending on Smack.


This is also a friendly reminder that Smack 3 has critical security vulnerabilities. Please check if you are affected by those if you are still using Smack 3 and update as soon as possible.

ProcessOne: ProcessOne XMPP Academy #1

Planet Jabber - 14 September, 2015 - 16:32

We are pleased to launch a new initiative to help developer get a better understanding of XMPP called “ProcessOne XMPP Academy”. The goal is to help developers get the big picture and get XMPP architecture and design tips from 15-years-experience XMPP experts.

We are targeting all XMPP developers interested in asking a question on specific XMPP topics. 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 video channel.

We are planning to have a session every month.

The first session will takes place on September 28th 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.

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

We are waiting for your input !

ProcessOne: Building an OTP release for ejabberd with Elixir mix

Planet Jabber - 14 September, 2015 - 13:16

ejabberd is an ubiquitous Erlang application that is widely available in Linux distributions. For that reason, it needs to rely on the de facto Linux build tools like autotools to make integration very easy for Linux and FreeBSD packagers.

However, it does not mean that ejabberd does not play well with the standard Erlang release approach.

ejabberd is fully OTP and release compliant. OTP is the standard “pattern” to build Erlang applications and ejabberd rely on them. Moreoever, it fully supports the Erlang release mechanism. A release in Erlang is a way to prepare a standalone package of a system composed of several applications. A release includes version of the Erlang VM (Beam) and all the needed dependencies, for easy deployment. A release is also a way to perform upgrade of a live running system (and downgrade if you would like to rollback a deployed change).

In this tutorial, I will show how to build a standalone Erlang release for ejabberd and how to deploy and upgrade new code in a new release without stopping the service.

To demonstrate the feature, I will rely on Elixir toolchain to build an ejabberd release, and more specifically mix and exrm tools.

Here is the full video tutorial, but you can read on for complete written, step-by-step explanation:


As a prerequisite, you need to have Erlang R18+ and Elixir 1.0.5+ available on your machine, as well as standard GNU build tools. You can read more about ejabberd dependencies on ejabberd documentation site: [](Installing ejabberd from source code).

Build ejabberd with Elixir mix

First, you need to checkout ejabberd from source, from ProcessOne Github:

(mkdir ejabberd-demo1; mkdir ejabberd-demo1/deploy; cd ejabberd-demo1; git clone

Second step is to download ejabberd dependencies and to build the software. It can be done automatically with mix:

cd ejabberd-demo1/ejabberd mix do deps.get, compile

Once this is done, we can prepare an ejabberd OTP release with the following command:

MIX_ENV=prod mix release

You can now unpack the release you want to deploy using the package release file. It is not recommended to start ejabberd from the release directory directly as you can get issue later. I recommand you copy / extract the file rel/ejabberd/releases/15.07.0/ejabberd.tar.gz to your ejabberd deploy directory:

(mkdir -p deploy/ejabberd; tar zxvf rel/ejabberd/releases/15.07.0/ejabberd.tar.gz -C deploy/ejabberd)

Note that I am deploying inside the same ejabberd directory to avoid cluttering the local drive, but on a real server I expect you will extract the release in a place like for example /app/ejabberd/ or /home/ejabberd/deploy or anywhere else that suit your taste.

Now, you can start ejabberd from the release directory. But first, you need to add an ejabberd config file. I have prepared a default ejabberd configuration file that you can download from Gist:

(mkdir deploy/ejabberd/config; cd deploy/ejabberd/config; wget

From that point, you should be able to start ejabberd successfully. You can start ejabberd and keep an Elixir console opened with:

deploy/ejabberd/bin/ejabberd console

From that console, you can now create the user user1@localhost with password ‘mypass’:

:ejabberd_auth.try_register("user1", "localhost", "mypass")

If you open an XMPP client, you should now be able to connect with those credentials.

ejabberd can be stopped from the console with:


You can run ejabberd in background with:

deploy/ejabberd/bin/ejabberd start

At this point, you should be able to reconnect from your client.

If you want to deploy this software on your server, you can copy the compressed release package to your server, uncompress it there and run bin/ejabberd start from the release directory. File should be named: releases/15.07.0/ejabberd.tar.gz

Please note that you need to use the same architecture to build the release than the one you are deploying on. It means if you are deploying on Linux 64-bits, you need to build your service on the same architecture (so, not directly on your OS X laptop, you can use a VM). If you do not do that, the embedded Erlang and ejabberd .so binaries will not work.

New release / hot code upgrade

Let’s demonstrate how to make a very basic change in the code, prepare a new release and do a live code update on a running server.

Open the following page in your browser: [http://localhost:5280/http-bind]

This is the info page return by the mod\_http\_bind module. Let’s say we want to replace the string in the code containing “To use HTTP-Bind” with “To use XMPP over BOSH” which sounds more correct.

Open the file src/mod_http_bind.erl and search for “HTTP-Bind” and replace that string with “XMPP over BOSH”.

As your change is ready to deploy, you are ready to increase project version in mix.exs. Increment the version number from 15.07.0 to 15.07.1.

You can now rebuild the project. Compile it to check all is fine:

mix compile

You can prepare a release with the upgrade process:

MIX_ENV=prod mix release

You can now upgrade the live system. To do that, you need to perform the upgrade not from your build structure, but from the actual target deployment directory. exrm deletes file during the upgrade process that may be used to produce subsequent releases.

So, to upgrade the live production system, you need to do:

  1. Create new dir for release in your original deploy:

    mkdir -p deploy/ejabberd/releases/15.07.1
  2. Copy the new release file:

    tar zxvf rel/ejabberd/releases/15.07.1/ejabberd.tar.gz -C deploy/ejabberd
  3. Assuming the server is already running and you do not want to interrupt the existing users, you can launch live code upgrade:

    deploy/ejabberd/bin/ejabberd upgrade "15.07.1"

ejabberd should upgrade just fine. If you reload the page [http://localhost:5280/http-bind] you should now clearly see your updated text. Note, that only the needed module were reload and no client have been disconnected. The upgrade has been fully live.

However, be careful. Not all upgrade paths are that simple. Depending on how deep your change goes into the internal of ejabberd, preparing the upgrade process maybe become a project in itself, requiring skillfull work.


As you have seen, ejabberd is:

  • Able to integrate well with Linux distribution build process
  • Erlang/OTP compliant
  • Compliant with Erlang release mechanism and standard approach for hot code upgrade.

Christian Schudt: Babbler Version 0.6.1 released

Planet Jabber - 13 September, 2015 - 14:04
A new version 0.6.1 of the Java XMPP library has just been released to Maven Central.

This is primarily a bug fix release, which addresses some issues which were recently discovered and improves things here and there. It is compatible to version 0.6.0.

For detailed release notes, you can find the changelog here.

Tigase Blog: XMPP: AN INTRODUCTION PART III - Establishing a Presence

Planet Jabber - 11 September, 2015 - 01:09
Part III of an introduction to the XMPP protocol, we take a moment to discuss Presence stanzas.

Peter Saint-Andre: Economic Autarky at Walden Pond

Planet Jabber - 10 September, 2015 - 00:00
Readers of Thoreau's Walden might be forgiven for thinking that his experiment in living was one of economic autarky. The way he describes things in the section on "Economy" certainly give that impression. For instance, after detailing his expenses, he states that "my whole income from the farm was $23.44".

ProcessOne: Swift messaging with Cocoa Pods and XMPPFramework

Planet Jabber - 8 September, 2015 - 14:55

This is an updated version of this post

Oyez Oyez Oyez Swift lovers !

The new pod for XMPPFramework is finally ready !

You are just one pod install away of your next chat application client, in Swift !

The XMPPFramework Podspec was re-written to be fully compatible with Swift, check the full tutorial and download example here.

Peter Saint-Andre: RFC 7622: Updated i18n for Jabber IDs

Planet Jabber - 8 September, 2015 - 00:00
As previously mentioned, the internationalization odyssey I completed with RFC 7564 got its start innocently enough through the need to modernize the handling of Jabber IDs (as I recall, Alexey Melnikov, applications area director at the time, made me promise that I'd correct the internationalization of JIDs at the IETF before he would sign off on RFC 6120, the core spec for XMPP). Now, all these years later, those corrections are finally done in the form of RFC 7622. Well, that only took a bit over 5 years!.

Alexander Gnauck: MatriX v2 released

Planet Jabber - 7 September, 2015 - 17:08

We are pleased to announce the stable releases of MatriX 2. More about the changes in the v2 version can be found in this blog post

Instead of installers we will use NuGet only for all future MatriX releases. You can find all MatriX NuGet packages here

Sample codes can be found in the Git repository here

All our customers with active support & maintenance can of course upgrade to MatriX 2 for free. Updating existing code bases to MatriX 2 should only take a few minutes. We highly suggest the update because there are many improvements in the MatriX 2 core, and also many new features on our roadmap.

Andreas Straub (GSoC 2015): OMEMO

Planet Jabber - 6 September, 2015 - 14:37
Hey everyone!

GSoC is over, but we're far from done. For those of you who have been following along for a while, OMEMO is now the official name of this protocol. Since it's not actually exactly axolotl, it would be confusing and disingenuous to refer to it as such. Plus, branding. Look, we even have a cute clownfish logo for it and everything! Head on over to our shiny new landing page, where you'll find a basic introduction to the concepts of the protocol along with XEP drafts for the OMEMO protocol itself as well as for an Encrypted Jingle File Transfer that makes use of OMEMO. A more detailed user guide is forthcoming. If you'd like to Join the Conversation™, come to our MUC at
Thanks again to my mentor Daniel, the XMPP Standards Foundation, and Google, for supporting this project.

ProcessOne: XMPP Radar Newsletter #2

Planet Jabber - 1 September, 2015 - 14:01

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.

Jérôme Poisson: Let's talk XMPP - episode 4 - group conversations

Planet Jabber - 26 August, 2015 - 10:21

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:

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” is the chat room’s name, “” the service.

The resource is used for occupants of the chat room: corresponds to the occupant “goffi” in the chat room 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: 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, 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.

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

Tarun Gupta (GSoC 2015): Wrap - Up!

Planet Jabber - 25 August, 2015 - 22:06
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.

Ishan Khanna (GSoC 2015): Finally GSOC’15 came to an end.

Planet Jabber - 22 August, 2015 - 21:01

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.

Marvin W. (GSoC 2015): GSoC 2015 is over.

Planet Jabber - 21 August, 2015 - 00:00

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

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
Distribuir contenido