Skip to main content

Mid July GSoC Report

Improving Prosody

We are past mid-way through GSoC's coding period already! Check out the most recent improvements made through keyboard and mouse in recent times of history.



Added the following commands:
  • get_modules - development command, downloads all of prosody modules to a folder, downloaded_modules, in the working directory
  • write_rockspec - development command, writes a rockspec from one of the modules at the auxiliary folder and saves it there
  • make - Installs a rockspec. The rockspec name is the only argument it accepts. The file and its sources have to be located at downloaded_modules/module_we_are_installing.
  • install/remove - Installs/removes a rockspec, either at the working directory's plugins path or at a directory specified by the --tree flag. We need to be in the same folder as the rockspec, otherwise it will search for rocks from Luarock's repository.
  • list - Shows a list of installed rocks. If no argument is passed it will look at the working directory's plugin path. Otherwise, it will look at the path specified with the --tree tag
With these a user can now manage either prosody rocks or luarocks directly with the prosodyctl tool.


I've spend a lot of time trying to really understand the concepts of server, repository and directory, and the respective differences in the context of using prosody and luarocks. Albeit I've been delivered some well written explanations around, the concepts weren't really sinking in and I dragged a bit around to push my understanding forward without asking the same questions again, while also trying to put them to use through the current tools. This however is not the main focus of the current project, and ends up being perhaps a unnecessary delay. I find myself particularly vulnerable to these kind of problems, and I'm trying to better deal with them in order to raise performance.

Future Goals

The main focus right now is dealing with dependencies and improving the prosodyctl usability to the user. 
While luarocks considers dependencies related to lua libraries, prosody needs to consider those and also other dependencies related to its modules.
A nice thing to have would be for the plugin installer to automatically deal with the necessary configurations at prosody's config file. This is an hard problem and would be a neat extra objective to have, but for now the most realistic solution is to provide the user with instructions about when and how should he modify prosody's configuration.


The functionality to get prosody's modules and write rockspecs isn't necessary for the user, it is really for development convience at this moment. In the future, the tool should allow the user to easily get the modules required from a prosody's server automatically.
I haven't been able to upload a blog post a week, even though I'd like too. No excuses to offer here, discipline and consistency have to be improved to achieve this goal!
I've been working on some luarocks and prosodyctl tutorials to show the capabilities of the tools, partially. This isn't the main goal of the program and I have been advised to not spend more time on the blog than on the project itself. I still think these will be useful and hopefully easy for the general public to understand. Hope I can get them out this week, while I remain mostly focused on the main objectives.