This is supposed to be the kind of post I would have liked to read when I started contributing to open source last year. I wondered what things people do and what their pull requests look like. Of course you can go look at random pull requests on GitHub, but I wanted simple quick summaries explaining the changes and motivation of a PR. So I started writing down a few sentences for interesting pull requests this month.

You can get your own list by going to github.com/pulls1 and searching for created:>=2017-12-31 is:pr author:githubusername archived:false is:public.

  • xtuc/js-webassembly-interpreter: Floating point hexadecimals2: This is an implementation of hexadecimal literals for floating point numbers. I have written about this format and project in a previous post3. In fact, I made the parsing function for these literals a separate npm package4 and then added it as dependency for the project. During that process I learned a bit about MIT licensing which needs to be redistributed with all projects depending on such a library.

  • prettier/vim-prettier: Add default option values from Prettier for configuration5: The description of vim-prettier says that their prettier settings are different from the defaults. They also provide a list with their setting values but without reference to what the actual default value was. I simply added a comment with the prettier default value to all options, so it becomes clearer where the differences are.

  • babel/babel: Remove check-constants plugin6: This one is actually not included with the search query above because it was not created in January, but on December 7th last year. Moreover, the issue it resolves was opened on July 19th 20177. This is a prime example how patience can be key in open source. The pull request simply moves code from one place to another without any functional changes. It makes the code base more consistent and puts the const checks in a more appropriate place. This is also the kind of work where a lot more time is spent reading than writing code.

  • DmitrySoshnikov/hdl-js: Add two-input decoder example8: A repository with examples provides an easy entry point for contribution: Come up with a new example. This project implements a hardware description language and emulator for digital circuits. Everything is written in JavaScript which makes it really accessible, a big plus in my opinion. I took a circuit from a book on digital design and implemented it in this hardware description language (This sounds way more complicated than it is).

  • DmitrySoshnikov/hdl-js: Correct number range for random pin integer values9: After playing around with the project for a bit I realized an odd behavior: Sometimes the truth tables for my gates would print 10 as value for a binary input which should only be 0 or 1. It turns out that the code producing this error runs only under special conditions, but the bug itself was easy to fix. It was just a simple off-by-one error, where the upper bound for possible inputs was one more than it should have been.