Hacktoberfest 2017
This is the second year I take place in the
Hacktoberfest, and I’m really proud to what I’ve done without any regard to the fact that my Pull Requests have been accepted or not.
So what is
Hacktoberfest?
Well, it is a contest that takes place during the month of October and involves any developer around the world that have time, and most notably
the
will to contribute to Open Source. The idea is simple: place at least four Pull Request on
github
before October ends and you’re done!
Last year I was a tiny and scared developer, well I’ve already performed a few CPAN-PR
but I was not able to contribute really aggressively to other people’s projects. Anyway,
I did 9 PRs and got the shrew.
This year I decided to work more intensively to help projects I care and I like.
Two in particular hit my wish list:
perlbrew and
rakudobrew. Let’s be honest here: I use the former much more than the latter,
and I don’t believe I’m a so proficient Perl developer, anyway, I took time to do some possibly useful coding.
So here’s the list of my PRs:
- perlbrew clone-modules: a command to automatically clone modules
from one Perl installation to another one, something I do regularly when I install a new(er) version of Perl.
- perlbrew sort list and available versions: this is something I worked before, but I guess
it was out of the past Hacktoberfest. However, I implemented a sorting routine to display newer version on the top of the list of both
available and list commands consistently. This should solve some ticket complains.
- perlbrew show installation date: this is a kind of troophy patch, since it is not
so widely useful. The idea is to show the
ctime
of the perl
executable in order to let the user know how aged is
her installation.
- perlbrew installer: minor changes to automated installer script in order
to use variables and loops consistently.
- perlbrew shell profile instructions: solves some ticket complains. The idea
is to understand which shell the user is running and provide more accurate information about which profile file must to be edited
in order to make
perlbrew
working.
- perlbrew –force and –yes: solves some ticket complains making the two options
a synonim each other and simplifying the command line usage.
- perlbrew download failure: since different external programs can be used to
download a new perl tarball, and since each program has different exit codes, I decided to place a callback on each program hash entry
in order to simplify the code for handling error situations.
- rakudobrew shell configuration: solves some ticket complaining trying to
provide better information to the user configuration depending on the shell she is using.
- rakudobrew nuke help: solves some ticket complaining providing help
for the
nuke
command and, more in general, for every command that requires a specific version to be passed as command line argument.
- rakudobrew general command help: solves a ticket and also provides a kind of platform
for specifying command help. The idea is to use
Pod::Usage
to read the POD documentation at the very end of the script itself,
so that it can provide sub command help in a more accurate way.
- sqitch italian translation: this is, well, quite trivial, even if required
a lot of time to translate the whole set of messages of this great database management application. This is, so far, the second or third
translation I try and the first one that I complete!
- rakudobrew minor changes: this started as a simple adjusting of the
run
subroutine, but then submitting a PR with a single commit seemed a little stupid to me, so I tried to apply a few small rules of
best practices such as avoiding return undef
, checking that a list return was applied in list context and ensuring
un-interpolable strings whenever possible.
- Perl 6 documentation: a short and sweet introduction to precedence dropping, something I foundmyself difficult to learn and therefore I thought it was useful for other developers to find already cited.
- shame on me for Perl6 documentation!: after the previous PR has been merged I noted that the
web page for the syntax documentation was rendering wrong: I mispelled a
head2
POD title to head 2
and nobody noticed! So this
is not a real PR that counts, rather a quick and dirty fix for a horrible mistake I did introduced!
- Perlbrew reverse sorting customization: due to an issue, my previous patch about
sorting output could not meet all users’ wills, so I added a
--reverse
option to allow users to decide how they
want the sorting of Perl versions.
Here you can
check my Hacktoberfest status.
As a side note I have to say that, being a
magit user, I took advantages of this great program
to overtake some git problems and, on the other hand, this experience made me a better magit user as well as a github user.
It is interesting also to note that, differently from the past year, I did not
rebase my branches. It is not that my commits are
perfect, it is just that my
Fossil experience teached me to value
every single commit and remember my mistakes. And I believe there’s nothing wrong in showing to the world my mistakes, what it does matter, after all, is the
full diff that can lead to the contribution.
One thing I have to admit this Hacktoberfest did to me is that
it took me back to my desk, at eveningn, developing some new feature. That was
a thing I did not do anymore, I try to sped the less time as possible in front of my computer when at home, but this time I did enjoy being back
at evening, with my cat near me (unluckily it was not enough cold to start up my fireplace, that would make it a perfect hacking session).
But wait a minute: how did all the above go?
Well, the first PRs to be evaluated have been, of course, the Perl 6 documentation ones and that reminded me how important and organized
the documentation is. Well, I have to admit I was happy to see
how strict it was the process to get the PR accepted while looking at the documentation
did not make me feel the same. I mean, the documentation seems somehow less structured with regard to the Perl 5 one, but
with such a PR process it will catch up very quickly. Also please note that whithin three hours the repository passed from my
requeste numbered 1594 to the fixing one
numbered 1601, that is the project is
really alive!
The
Sqitch translation PR provided me the
commit-bit to the repository, and that is something somehow scarying because (i) I have to keep the translation up to date and (ii) I have the possibility to mess up the official repository with a wrong push!
The Perlbrew project slowly merged the followings: the
clone modules command,
sorting of Perl versions from the newest to the oldest,
keeping ‘yes’ and ‘force’ coherent,
callable function to manage download return code.
Therefore, so far, the situation is:
- perlbrew clone-modules merged!
- perlbrew sort list and available versions merged!
- perlbrew show installation date merged!
- perlbrew installer merged
- perlbrew shell profile instructions merged!
- perlbrew force and yes merged!
- perlbrew download failure merged!
- rakudobrew shell configuration merged!
- rakudobrew nuke help waiting
- rakudobrew general command help waiting
- sqitch italian translation merged and repo invitation!
- rakudobrew minor changes waiting
- and 14. Perl 6 documentation and shame on me for Perl6 documentation! merged!
- Perlbrew reverse sorting customization: merged