-
Notifications
You must be signed in to change notification settings - Fork 12
Project: ejabberd
- Website: http://www.ejabberd.im/
- Responsible: Mickaël Rémond (mremond at process-one)
- Possible mentors: Mickaël Rémond (experienced mentor, since 2006), Alexey Shchepin, Badlop, Evgenyi Khramtsov, Holger Weiss, Jérôme Sautret, Christophe Romain
- If you have any questions, send an e-mail to beam-community AT googlegroups DOT com
- You can add Mickaël Rémond on XMPP: mremond AT process-one DOT net
ejabberd is one of the most known Erlang project, developed since 2002 by ProcessOne. As a student, you will have the opportunity to work with the ejabberd historical lead developers directly and work on projects that can have a huge impact given the number of worldwide users.
Ahead of the Summer of code, we have prepared a way to automatically setup for ejabberd development environment ejabberd-vagrant-dev
As a student, you can select the language you prefer to contribute to ejabberd, between Erlang and Elixir.
Here is a page to help you get started working with ejabberd community as a GSoC student: A quick introduction to ejabberd for GSoC hopefuls
Ideas are listed in no particular order. Students providing their own ideas are also welcome!
Brief explanation: Let's encrypt is a free, automated and open certificate authority. It simplifies the deployment of trusted SSL certificates.
Thanks to the ACME protocol, it is possible to make a server like ejabberd compliant with Let's Encrypt, making deployment of secure and trusted certificate much simpler and affordable, even for small, self-administered XMPP services.
The goal of this project is to implement Automatic Certificate Management Environment for ejabberd.
Expected results: Full support of ACME protocol integration in ejabberd.
Knowledge prerequisites: Erlang
Difficulty: Moderate
Possible Mentor: Evgeny Khramtsov, Mickaël Rémond
Brief explanation: Stream Management is a feature that adds a reliability layer to communication between entity on an XMPP network. Stream Management is described in XEP-0198. Stream management is already implemented for client to server communication in ejabberd. However, adding the same level of reliability and robustness to server-to-server communication would make the whole XMPP network more robust.
Expected results:
- Implementation of XEP-0198 for server-to-server communication
- ejabberd code may be refactored to allow reuse of client to server feature when possible.
- Ability to cache outgoing messages for a given for a configurable amount of time to allow other end server to reboot or short unavailability will also be added (with correct overflow protection).
Knowledge prerequisites: XMPP servers in general, Erlang
Difficulty: Moderate
Possible Mentor: Holger Weiss
Brief explanation: The first step in getting Internet of Things over XMPP to take off is to be able to register things. Implementing XMPP-IOT protocol would allow Things to be installed, configured and claimed by their owner.
Expected results:
- Implementation of ejabberd server component conforming to XEP-0347 Internet of Things - Discovery
Knowledge prerequisites: XMPP servers in general, Erlang
Difficulty: Moderate
Possible Mentor: Jérôme Sautret
Brief explanation: ejabberd comes with a web console to manage the server. However, many administration features are only available from XMPP clients from users with admin rights or from ejabberdctl command-line tools. For example, managing chat rooms would be more efficiently performed using a web front-end. To spread the use of ejabberd as an easy to use corporate chat services, it is important to make it more manageable through a web browser.
Expected results: Revamp ejabberd management web interface with extended features, with a focus on managing users, MUC Room and shared rosters.
Knowledge prerequisites: Knowledge of Erlang, XMPP and web developments.
Difficulty: Difficult
Possible Mentor: Alexey Shchepin, Mickaël Rémond
Brief explanation: XMPP is a difficult protocol for web developer. It is a connected stateless protocol. However, it is possible to map a lot of the operation, semantic of XMPP on top of HTTP using traditional ReST semantic.. You could for example browse chat rooms, pubsub nodes, etc using a rest interface. If the session can be separated from the routing of the XMPP protocol, it is even possible to send and receive XMPP stanzas through the HTTP protocol. A lot could be done that way and it would open up a whole new range of use case of ejabberd to traditional web developers or to environnement where using XMPP directly is difficult.
Expected results: ejabberd version that can be controlled either through XMPP or a pure HTTP interface to simplify XMPP usage for web developers.
Knowledge prerequisites: Erlang or a functional language and web development.
Difficulty: Moderate
Possible Mentor: Mickaël Rémond