GSoC 2019 (6 Part Series)
My name is Antonio Gámiz, I'm a student at the University of Granada, where I'm studying a double degree in Computer Science and Mathematics. I have been programming in quite a few languages like JS, Python, C/C++ and Java, but I had never used Perl6 before!
First of all I need to tell you what is Perl6: is a language entirely made by the community and completely open source! So all the work has been made by people willing to improve it and support it. The community is very friendly and is always welcoming to new members willing to learn (you can join us in the IRC channel).
But why it's so cool? Because it unifies many great ideas that aren't usually found in other programming languages (quote from here). In addition, Perl6 is multi-paradigm! That means you can learn OOP at the same time you play with FP and a lot of more like declarative or imperative paradigms!
In addition, from my point of view, it's one of the best scripting languages at the moment, because it has a wide set of tools to make your life easier. Nonetheless, at the beginning, you can feel a bit scared of the syntax, but if you use it for a while, you will discover how amazing and powerful it is!
Well, as I have said earlier, Perl6 is great, but in order to learn this incredible language you need an even better documentation. In Perl6, the documentation is also code and there is a special syntax to write i t, called Pod6 format. This is an example:
=begin pod =TITLE Perl6 =head1 First article Some comments =end pod
Official documentation is entirely written using this format (you can see the source code here) and then is processed by a huge and scaring file:
htmlify.p6 (this one) and a few modules. All of this code have been developed and maintained by the community along the past years, patching the problems whenever they appear and hoping anything stopped working.
So here is where I take part! My project aims to document the generation process, test it and spin off all the modules involved in the process. This is necessary due to there is a high level of coupling between the parts involved and it's quite hard to make changes by two reasons:
- You cannot know if the changes you make will break some parts of the system because there is not enough test coverage.
- If you want to change a specific behavior, you do not know where to modify it because the same task is made along several different files.
So, when all the process is documented, tested and we know why things are being made the way they are, will be time to create a doc specification. As my main mentor, JJ, said in this post, we need to settle on a specification of the document page format first. If we do that, generate the docs will be a lot easier because all documents will have the same format and there will not be strange situations prone to errors.
And that's the main part of my project, feel free to ask me anything about it!
I will be keeping a weekly blog explaining my work during that week and why do what I do. I will publish the first one next Monday, where I will talk about the work made these past weeks.
I know this article is a bit late but, in Spain, university tests are around this time and I have been terribly busy studying for them. Luckily, I have already finished and I'm totally free the rest of the summer! (huge thanks to my mentors, who have been very understanding with this problem).
Also, in two days is esLibre, a Spanish meetup where amazing people will be talking about open source! I will be hosting a devroom about Perl6 and Perl. Feel free to stop by and learn something new :).
See you again next Monday!