-
Notifications
You must be signed in to change notification settings - Fork 11
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 best-known Erlang projects, 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 and docker image ejabberd/mix.
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: XMPP being a federated open protocol is subject to spam, using messages and contact addition requests.
If it is easy to limit messages spam by blocking messages that are not send by existing contacts in roster, contact additions spam is both quite inefficient for spammers but also very annoying for users and difficult to block.
By allowing servers to require a small blockchain payment to be attached to contact requests addition, it could be possible to make the cost of mass sending contact addition requests not cost effective to use for spammers.
The goal of this project is to experiment with XMPP spam fighting by using blockchain to add a small cost to contact addition requests.
Expected results: Tool to allow servers to manage a small blockchain budget and allowing passing small blockchain payment to allow contact addition.
Knowledge prerequisites: Erlang
Difficulty: Moderate
Possible Mentor: Evgeny Khramtsov, Mickaël Rémond
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 developers. 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 cases of ejabberd to traditional web developers or to environment 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
Brief explanation: XMPP is used for many IoT project, as it provides federation and identity for objects, allowing message routing.
However, for smaller objects, XMPP is too heavy to be embedded directly and run directly on the object. In those cases, MQTT is often a good choice.
The goal of this project is to a way to mix devices connected using either XMPP or MQTT to participate in the same workflow.
Expected results: ejabberd version with ability to subscribe and publish to channel either as MQTT or XMPP.
Knowledge prerequisites: Erlang, XMPP, MQTT protocol
Difficulty: Moderate
Possible Mentor: Mickaël Rémond, Pawel Chmieslowki