Avançar para o conteúdo principal

final


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.

Conclusion

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.

Aknowledgements

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" Alvenur 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 "vanitiasvitae" 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

Comentários

Mensagens populares deste blogue

Sailing!

After some fusion dance, we have some stuff working neatly! Last week was all about the lua environment and improvements aimed at user-friendliness, which you can check down below with latest changesets and demos. Events prosodyctl Removed most development / experimental commands Created a script that is automatically setting up a ready to be served repository will rockspecs for all of prosody's plugins ( demo ) Various improvements/updates to the main commands: list - demo install demos: installing a prosody plugin installing a luarocks library Installation also prints configuration help   remove - demo prosody uses a separate folder to deal with non-standard plugins - demo Users can configure their own path, and override it at any time from the command line if needed - demo Updated the startup utility script regarding management of default/custom installer directories and lua environment Difficulties The greatest obstacles this past week were ...
Prosody's plugin installer is making use of Luarocks to get things working. Therefore, it makes sense that we look a bit into Luarocks to see how it works. Concepts Here is what you need to know. Luarocks uses files, called rockspecs, to get things installed around. These are basically instruction files and they tell the program how to do the work. We can pack the sources and the rockspecs into a single file, called a rock. We can install libraries from both rocks and rockspec files. The code is installed in what is called a rock tree, which is a folder with a specific structure inside, organized in a way to help with the required management of libraries and servers. Installing, removing and list If you are working on debian you can just use: sudo apt-get install luarocks Now, there might be some trouble here and there, depending on your machine, or if you are in a different OS, but the guys at luarocks have tips for almost every possible situation, just che...
Prosody's plugin installer is making use of Luarocks to work underneath the hood. Therefore, it makes sense that we look a bit into Luarocks to see how it works. Concepts Here is what you need to know. From the perspective of Luarocks, Lua Libraries are files called Rocks. Rock files are like a zip file, in the sense that inside there are many files. Most of those files are the sources, which means those are the files that have all the code itself. And then there is a rockspec file. This is like an instruction file, written in Lua, which contains the important information that Luarocks needs to do its job. Things like the location of sources, dependencies and build instructions. The code is then installed in what is called a rock tree. A normal folder, in other words. But this folder is referenced on luarocks documentation, for example, so that things know where to look for when they need to use a particular library. Installing, removing as list If you ...