Skip to main content

Final GSoC Report - Prosody Plugin Installer!

Here we are. This post is the conclusion of the official GSoC journey with prosody! Check out below what this project is, what it is currently doing and how things can keep on going!

First of all, where is the stuff?

The code is right here! This is everything that made it to the trunk merge. If you want to see the installer in action and how to use it, you can check this demonstration.  If you want instead to see all of the changesets I've made throughout the months, you can check them here. Finally, here you have the project's link in case you want to check it out!

Really briefly, what was this all about again?

ProsodyIM is a XMPP server. People can set it up with a lot of different functionalities. These are provided by what the community calls modules or plugins. Prosody only comes with a given set of core modules but there are many others that we can use. We aimed at providing an easy way to install those, because previously, the user had to go to a mercurial repository and fetch the sources that he wants to use.

Cool, so what has been done?

Prosody makes use of a command tool, prosodyctl, that allows a user to run a series of commands for a multitude of purposes. The installer is run through it, so I added 3 new commands for installation, removal and listing of modules. The user no longer has to go to the web, fetch the sources and manually place them around. All of that is now taken care of by the install and remove commands. Through the list command, the user can check which third-party modules are currently installed.

What didn't made it through?

Most of the code that as removed was either:
- badly written, and therefore had to be redone in a better way
- experimental, to help me understand how everything was working
- Development code, which i was using to help me accomplishing any given task

Only one feature was trully remove, and that was the --tree flag. It allowed the user to specify a location where the installer would operate. An explanation on why it was removed is available at this this blog post.

And what can be improved?

Here is a list of tiny things that could still be neat to add:
- Update information. Right now, the user can update the current module by simply installing it again, but there is no info being printed about what is changing;
- Automatically configure the module, when possible. Tricky, has different modules have different configuration options. But at least adding the module to the modules enabled or disabled list could be a nice little extra
- List of available modules to install. The user still has to go to the web to see which modules exist and their documentation. It would be neat if that could be done from the command line.


Prosody now has an installer that makes the server a bit more user-friendly, I believe. For a newbie like me, these months have been great, but I also feel underwhelming in a way, at the end. I haven't wrote much, and most of the time I was just questioning things around and diving into train of thoughts, because everything seems so big and complicated at times. But hey, It is done anyway! It is simple, but it works, and it is a step forward! 
I hope this software can become a real improvement. At least for me, It was. I also liked the blogging experience, and I hope I can keep contributing in the future and make my work more consistent and solid.


I'd like to thank my mentor, Matthew "Matt" Wild \o, for the patience and guidance! He had a child through the project, so be sure to give him the good wishes =D
Kim "Zash" Alvefur o/ also helped me out all the time, so a bit shout-out to him!
The people at XMPP, who were always friendly. Special mention to Florian "Flow" Schmaus, who was always supportive, and to Paul "vanitasvitae" Schaub, who inspired me about how to blog!
I've also like to say thanks to the folks at Luarocks, particularly Thijs Tieste, who patiently explained me some stuff when I was lurking around their Gitter =D
Need to also appreciate Zerobrane's Paul Kulchenko, who always answered me when I was having trouble using the great Zerobrane's Studio IDE.
And finally, to the other GSoC students at our chatrooms, who sometimes showed me how much of a fool I am and also how people can battle with Pokemon on the web nowadays =P