As you may know, our ejabberd XMPP server is written in Erlang. The Erlang VM was originally designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. What you may not know is that ejabberd is part of the BEAM Community – a group of projects that run on the Erlang VM.
Since 2013, BEAM Community hosts relevant Erlang and Elixir projects, making it easier to participate in the Google Summer of Code (GSoC) (and similar initiatives), giving interested students a wide range of projects to choose from.
BEAM Community has been accepted again in 2017 as a GSoC mentoring organisation. This year, nine projects have been accepted:
- For Lasp:
- A Biparite Proposal for Lasp’s Lacking Documentation by Matt Wiese
- Implementing a Real World Application in the Lasp Programming Language by goncalotomas
- For Erlang:
- ETS support for Erlang Lab by Kacper Mentel
- For Elixir:
- A code formatter for Elixir by alexjiao
- Language Server Protocol implementation for Elixir by Nishith Kumar Shah
- For Barrel:
- Implementation of a RabbitMQ Plugin for BarrelDB by Tah Teche Tende
- For Zotonic:
- Port Zotonic Shell Scripts to Erlang EScript by Blaise M.
- For ejabberd:
- Ejabberd support for “let’s encrypt” ACME protocol by Konstantinos Kallas
- Server-to-Server stream management support for ejabberd by Anna Mukharram
You can find more details about these projects here, but first lets look at the ejabberd projects.
Support for “let’s encrypt” ACME protocol
The Automatic Certificate Management Environment (ACME) protocol is a communications protocol for automating interactions between certificate authorities and their users’ web servers, allowing the automated deployment of public key infrastructure at very low cost. Supporting this protocol will reduce the complexity of acquiring certificates for TLS encryption, via the “Let’s encrypt” certificate authority.
The final goal of this project is for ejabberd to fully support the ACME protocol and thus provide an easy and cheap way of acquiring security certificates. This project is executed by Konstantinos Kallas, mentored by Evgeny Khramtsov from ProcessOne.
Server-to-Server stream management support
The goal of this project is to implement XEP-0198 for server-to-server communication in ejabberd. This extension allows to request stanza acknowledgement and quickly resume session. Any messages that were not delivered over previous connection will be retransmitted during session resumption without duplication. This project is executed by Anna Mukharram, mentored by Holger Weiß, an experienced ejabberd & XMPP developer.
Google Summer of Code
ProcessOne is committed to grow the interest of student developers in XMPP, ejabberd and real-time technologies. Through initiatives like the BEAM Community and GSoC involvement, we can have bigger and more positive impact, as well as bring valuable improvements to existing projects.