As 2020 comes to an end, I thought that it might be interesting to document and comment on the OSS contributions which I made in the past year.
MongoDB & mongoose
- PR #6
mongo-sanitizeadds recursive object sanitisation, to mitigate mongoose/MongoDB injection attacks (which can occur on e.g. unsanitised JSON input).
- Issue #8521
mongoosewas created after I found that calling
syncIndex()after updating the collation index for a model (for case-insensitive username matching) had no effect.
- PR #9688
mongooseadds Github Actions CI configuration (after travis.org announcement). This was somewhat challenging due to environment (os, node, and dependency) differences and timing issues which exists in the test suite. In hindsight, it probably would have been easier if I tested it using Docker first.
- PR #9696
mongooseadds single document populate to the new internal type definitions.
- PR #9705
mongooseis a small CSS responsive design fix for documentation.
- PR #374
connect-mongo(not yet merged) fixes type definitions errors caused by upstream type definition updates.
For project 2
we were required to use CouchDB and its MapReduce functions to analyze harvested Twitter data.
One of the tasks is to use
ansible to automate the deployment of fresh nodes.
Though Docker was optional, I decided to use it to reduce complexity in making changes.
During this process, I ran into several non-obvious details and issues.
- PR #185
couchdb-dockeradds documentation about the default ports which are exposed by vm.args and the Dockerfile.
- PR #186
couchdb-docker(not merged) adds a sample docker compose file.
couchdbfixes an issue which causes the
finish_clusterAPI call to fail when executed on a fresh CouchDB node with no UUID. I helped by describing and reproducing the issue (using scripts and 2 networked VMs) and submitting the final PR.
- PR #225
couchdb-nanofixes typescript definitions for generic user-defined requests (
dinosaurfunctions). I discovered this issue when attempting to use the
requestfunction to get metadata about the instance using the
- PR #226
nano.info(), a method specifically used to retrieve the metadata. This PR came about because I was expecting a method to access the
/route, but didn’t find any. As I didn’t have enough time before the project was due, I used
nano.request()for the project and submitted this PR during the winter break.
- PR #576 (my first Rust PR!)
was a small fix to remove a duplicated occurrence of
tokei --help. I came across the attached issue by chance and thought that it might be a fun problem to tackle.
- PR #580 adds summary information (i.e. the Total) to output formats. Some minor refactoring was done to accommodate this change.
Misc self-hosted web apps
- PR #35
BASE_PATHas an environment variable.
- PR #1495
triliumwas a small change to rename the session cookie from the default. This PR was inspired by a clash of
express-sessioncookies which occurred on one of my subdomains.
- PR #252
entrypointfrom the sample
docker-compose.ymlfile suggested by the documentation. This prevents the default
Dockerfilefrom being overridden.
- Issue #141 reports a compilation error.
2020 is the first year where I have started to look at and dive more deeply into the code of the software and packages that I use. Though I have mostly focused on small bugs and minor issues, I have found the process to be highly rewarding and something worthwhile to repeat for the future.
Though I doubt that many people (if there are any at all) read my blog, I wish you all the best for 2021!