--- date: 2017-11-01 12:37:53 tags: FreeSoftware Github Hacktoberfest Contributions description: > This year I actively participated in the Hacktoberfest event, which is 'a month-long celebration of open source software'. Ironic, given that the companies organising it don't have their own software stack open source. Nevertheless, I did contribute to free software, and this article lists these contributions. --- = Hacktoberfest 2017 :toc: preamble This year I actively participated in the Hacktoberfest event, which is "a month-long celebration of open source software". Ironic, given that the companies organising it don't have their own software stack open source. I've found some issues to solve in https://perl6.org/[Perl 6] projects, and that lead to trying to solve issues in some other projects, and eventually I got more PRs out than there are days in the month. It did go at the cost of some sleep, but in the end it seems worth it. In this article, I'll give a small overview of all those PRs, in no particular order. == Projects contributed to === Funtoo ==== funtoo/boot-update - https://github.com/funtoo/boot-update/pull/14 When reinstalling my server to try out https://docker.com[Docker], I noticed an error in the output of the `boot-update` utility, a tool from https://www.funtoo.org/Welcome[Funtoo] to make installing and configuring the bootloader easier. The error itself was a small type of a `-` which had to be a `_`. ==== scriptkitties/overlay - https://github.com/scriptkitties/overlay/pull/14 - https://github.com/scriptkitties/overlay/pull/15 - https://github.com/scriptkitties/overlay/pull/16 This is the overlay of the https://scriptkitties.church[Scriptkitties] community. It's got some additional software released under a free license that is not available in the main portage repository. Most of the packages in here are of software made by the Scriptkitties community. This month I updated the readme to be in asciidoc, my new favourite format for documentation. The Travis builds should also no longer throw errors, so those can be used again to ensure the overlay is meeting quality standards. One package has also been updated to be at it's latest version again. === Perl 6 ==== moznion/p6-HTML-Escape - https://github.com/moznion/p6-HTML-Escape/pull/1 On this repository, I added a subroutine to also handle unescaping HTML special characters. Sadly, the owner of this repository has shown no sign of life, and the PR remains open. ==== rakudo/rakudo - https://github.com/rakudo/rakudo/pull/1180 This is a rather small issue, but I noticed it when compiling Perl 6 with https://github.com/tadzik/rakudobrew[Rakudobrew] and it annoyed me. http://zoffix.com/[Zoffix] was a great help in getting me started on this one, and in general with many other Perl related contributions as well. ==== scriptkitties/perl6-IRC-Client-Plugin-Github - https://github.com/scriptkitties/perl6-IRC-Client-Plugin-Github/pull/2 A neat feature for the Github notification system, HMAC adds a header that can be used to verify the body of the request, and can be used to verify the other end of the connection knows the right "secret". Inspired by a Perl 6 bot that already did this, I made a PR to make this a proper https://github.com/zoffixznet/perl6-IRC-Client[IRC::Client] plugin. It is still being tested in https://github.com/scriptkitties/musashi[musashi]. ==== perl6/roast - https://github.com/perl6/roast/pull/342 Roast is the test suite for Perl 6. There was an open issue for the IO::File tests, which needed expansion. As my first contribution during a Perl 6 squashaton, I expanded these tests to fix the issue that was open for it. ==== vim-perl/vim-perl6 - https://github.com/vim-perl/vim-perl6/pull/9 - https://github.com/vim-perl/vim-perl6/pull/10 This first PR has become a bit of a drag, with the maintainers not responding for two weeks, but suddenly very eager to respond when I mention I'm going to fork off and update the reference on the Perl documentation to my fork. Nonetheless, it's sorted out, and the abbreviations for unicode operators have been merged in! ==== timo/json_fast - https://github.com/timo/json_fast/pull/32 `JSON::Fast` is the de-facto standard for dealing with JSON data in Perl 6 it seems. For my work with `App::Cpan6` I wanted the JSON data to be ordered, so I added that as an option when calling `to-json`. Having the JSON data ordered makes it easier to compare diffs of two different versions of the data, making git diffs a lot cleaner. Sadly, timo has not merged the PR yet, so I can't properly depend on it in `App::Cpan6`. ==== scriptkitties/perl6-SemVer - https://github.com/scriptkitties/perl6-SemVer/pull/1 This is one of the new projects I started. It is intended to be used in `App::Cpan6`, since that uses https://semver.org[Semantic Versioning] for all modules it works with. This module defines a class that can interpret a SemVer notation, and exposes methods to bump any part of the version. ==== perl6/doc - https://github.com/perl6/doc/pull/1614 This has been one of the more annoying PRs to work on, as the current `zef` maintainer insists everything but his module is wrong, and seemed very uninterested to improve the situation for users. After some discussion on IRC, some more discussion on IRC, and then some discussion on the PR itself, I decided to just word the paragraph differently. I am still interested in improving the documentation here and the ecosystem itself, mainly the `META6.json` specification, and getting `zef` to play nice with this spec. If anyone else is interested in helping me out on this, do message me on IRC! ==== perl6/perl6.org - https://github.com/perl6/perl6.org/pull/86 - https://github.com/perl6/perl6.org/pull/87 There were some open issues for the https://perl6.org[perl6.org] website, and I decided to take a look at some and try to fix them. This resulted in NeoVim being added to the list of recommended editors for Perl 6, and the list of IRC bots being updated to include all bots in use right now. ==== scriptkitties/p6-MPD-Client - https://github.com/scriptkitties/p6-MPD-Client/pull/1 - https://github.com/scriptkitties/p6-MPD-Client/pull/2 As I was making `App::MPD::AutoQueue` and `App::MPD::Notify`, I found some issues in `MPD::Client`. I fixed those to get my two new projects working nicely. ==== melezhik/sparrowdo - https://github.com/melezhik/sparrowdo/pull/15 - https://github.com/melezhik/sparrowdo/pull/18 Sparrowdo is a configuration management system, written in Perl 6. I learned about it after a reference from the Perl 6 Weekly, and set out to try it. I ran into some issues, which I reported and eventually fixed. In addition, I also rewrote the testing script for Travis, which enables paralel builds of the tests. This has nearly halved the time required for running the full test suite. ==== perl6/ecosystem - https://github.com/perl6/ecosystem/pull/371 - https://github.com/perl6/ecosystem/pull/372 - https://github.com/perl6/ecosystem/pull/374 These PRs added a module, and removed that one and more later on, since I got a PAUSE ID and uploaded my modules to CPAN. ==== scriptkitties/perl6-App-Cpan6 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/1 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/2 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/3 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/4 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/12 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/13 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/14 - https://github.com/scriptkitties/perl6-App-Cpan6/pull/15 `App::Cpan6` is a tool I've started working on to assist me in creating new Perl 6 modules. There's been a couple of tasks that I do often in the process of creating a module, and those tasks should become easier and faster using this module. If everything works out and I learn enough of the module installation process, I might consider letting this deal with the installation and updating of modules as well. == In retrospect The Hacktoberfest has been an interesting month for me. I've gotten to contribute to a project I have come to love a lot, Perl 6. I've also made some new friends with similar goals. Sadly I can't put in this much time every month of the year, but I would if I could! I learned many interesting things for Perl 6, new operators, new functions, all kinds of cool stuff to improve my Perl scripts with. I also got to learn about parallelizing Travis builds with the Sparrowdo project, of which I will write another tutorial post later. I've greatly enjoyed contributing to all the various projects, and would recommend other people to check it out too. The people on the respective project's IRC channels have been a great help to me to get started, and I can help out getting you started as well now.