This is my third year participating in the Hacktoberfest challenge!
2017 has been terrible, I've not been able to submit any Pull Requests.
2018 was way better, mainly due to me learning Golang that created a whole lot of new opportunities for contribution.
This year I started gathering interesting issues and projects since summer, so that I would have a pool of issues to choose from during Hacktoberfest.
It all started with finding a bug in Ansible while at work. 😅
Any HTTP code below 200 cannot be considered a success, should be handled like a failure instead.
This is particularly true for below zero status codes.
This change is required to avoid
ACMEAccount.get_request to consider any HTTP status code below
400 to be a success. In #63139 status
-1 is returned due to a
.netrc file permission error, but the function does not report it as an error.
- Bugfix Pull Request
Second one has been found by share luck! Following the Arduino main repository, I saw a weird issue:
Hi. This script has an obvious, but easily fixed bug. Currently there are a bunch of comments before #!/bin/bash. And it assumes, very incorrectly, that pound-bang /bin/bash is a comment. In fact, "#!" is a valid Unix/Linux magic number, and "/bin/bash" is the path to the program which needs to interpret / execute the script. When run by a user who uses /bin/bash as their everyday shell, it works, but only because the user happens to have invoked bash. But when run by a user who uses another shell (e.g. /bin/tcsh) as their shell, it doesn't work, because pound-bang is not at the top of the file, and thus /bin/bash is not invoked to execute the script. And since the script is written to bash, as opposed to tcsh (or ksh or ... ) syntax, it won't work.
This bug report is against distribution 1.8.10. Screen capture of trying to run this script from a non-bash shell is pasted below. Read the below wikipedia link, which mis-pronounces "pound-bang", but is otherwise valid. This construct has worked since handed down by Real Programmer Dennis Ritchie in Jan 1980. Please learn it.
An easy one, but fun: the shebang mentioned has been in the wrong place probably since the file has been added to the repo, on May 2, 2018. The fun part is that the file was coming from another repository, where was dated 2017. And as the copyright suggested, it may have been created way before, in 2015.
Which actually means that script has been broken for 4 years and was working by share luck: in 4 year either no one tried to run that script on a shell different than
bash or no one bothered reporting it (this would make me sad!).
This as a reminder that broken code can live a long life in any codebase. Even very simple things may have hidden edge cases no one just happened to hit before.
A project that I followed closely during the last year has been
sops. I really like the approach and available functionalities and I wanted to contribute to it.
I spent some time digging in
sops open issues and contributed to the
filestatus command, reporting if the file is in encrypted or unencrypted state.
ensureNoMetadata logic, thus the command would return
0 when the file is not encrypted and
203 when the file is encrypted (respecting the
codes.FileAlreadyEncrypted error code)
It does not output the error message as returned by
ensureNoMetadata, preferring a simpler output: "File is encrypted" or "File is unencrypted".
As I'm not so fond on
sops internals, I'm sure there are multiple things to review, I'll gladly update the code to reflect any suggestion.
Last one, is probably my favourite: a simple one indeed, but (I hope) with a future. This year I got a new laptop, and decided to move from my trusted and loved Ubuntu 16.04 installation to something newer.
I've been following Elementary OS since 0.3, tried 0.4 but were not able to use it successfully for work.
But this was the year, Elementary OS 0.5 Juno felt ready for my daily workloads, and is my stable OS since a couple of months now.
I can say I'm pretty in love with it. It has some small glitches (is OSS and donation based so ❤) but the overall experience it awesome. Is snappy, easy to use and has a polished touch that really make it shine. Kudos to the development team, they did an incredible work!
There is one issue I'm struggling with: being a not native English speaker, I switch keyboard layout a lot, between italian (my main writing language) and English (my main coding language).
It always interested me to contribute to an Operative system, but I have never been able to (due to my inexperience and web specific knowledge).
Contributing to an Operating System is daunting, I don't know where to start and don't know most of the tools (from the programming language to how a Desktop Environment works, I'm a newbie!). Thus starting small was my best choice. A simple task that required reading a lot of documentation and a bit of understanding how apps work on Elementary:
This is a starting point, my final goal is:
Hi there! It's very important to have different layouts for each windows if you use more than one layout. But it is impossible in Elementary OS. Is there some solution how to fix it? Thanks.
ps: Elementary OS can be the first candidate to move from Ubuntu with Unity, but it must have at least base functionality like above.
In a couple hours I've been able to compile and replace the Window Manager from source code (😎). A pretty happy and motivating start!
This was my 2019 Hacktoberfest. What about you? Did you contribute?
This year Hacktoberfest is over, but Open Source Software is waiting for your contribution: it may be small, it may sound simple or daunting but is everyone's job to keep that software in good shape. Everyone starts small.
Go Make the world better!