Each year since 2015 ejabberd has joined other Erlang projects in the BEAM Community to invite student developers to Google Summer of Code (GSoC), a global program focused on bringing them into open source software development. Through this program, students have an opportunity to work with an open source organization on a 3 month programming project during their break from school.
This year is no different! ejabberd is offering five intriguing ideas to develop, and five expert ProcessOne mentors to help the participants. Next month, from March 12 until March 27, students can select an organization and a project they wish to work on during the summer – registration will be opened on the GSoC website.
In the meantime, we invite interested students to learn more about the ideas we propose to develop, and get ready for their GSoC applications.
Idea #1: Spam fighting with Blockchain
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 sent 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.
Idea #2: Support for Things Discovery service in ejabberd
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.
Idea #3: Web UI administration improvements
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. 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.
Idea #4: XMPP and HTTP convergence
XMPP is a difficult protocol for a web developer. It is a connected, stateless protocol. However, it’s possible to map a lot of the operations, semantics of XMPP, on top of HTTP using traditional REST. A lot could be done to open up a whole new range of use cases of ejabberd to traditional web developers or to an environment where using XMPP directly is difficult.
Idea #5: MQTT to XMPP session
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 provide a connector allowing small devices to connect to ejabberd using MQTT protocol.