Introduction
As part of my professional and personal work, I sometimes contribute fixes or enhancements to open-source projects. I’ll be going over some of the ones that I found interesting this year.
Node.js
The year started off with a long-standing PR that I had for the Node.js ORM, TypeORM, getting merged, that improved the performance of hydrating entities. This was the last in a series of PRs directed at performance improvements in projects in the Node.js ecosystem that I had worked on as a result of profiling a slow application.
Elsewhere in the Node.js world, I contributed a few fixes to the import-in-the-middle project, which is a library that lets you intercept imports in Node.js, notably used by Sentry to add instrumentation. I was already familiar with the library’s code since last year when I had submitted a fix that touched many of its core parts. This made it slightly less tricky to debug the issues this time around, which can be difficult due to the intricacies of module resolution in a JavaScript runtime.
I also reported an issue in
Node.js regarding the spawn and execFile APIs that could lead to unsafe
usage. I was happy to see it resolved quickly and released as a deprecation
warning
in Node.js 24. With all the supply chain attacks seen this year, it was good to
contribute something to the security of the ecosystem. As part of investigating
this problem, I also learned that it is almost
impossible
to pass arguments safely to cmd on Windows, and developed
batspawn to help with that.
MacPorts
As a maintainer for MacPorts, I sometimes run into projects that do not tag
their releases, so we need to rely on git to check if there was an update for
them. There wasn’t a good way to do this, so I contributed an
enhancement that checks
for updates in a repository using the helpful git ls-remote command. This was
my first contribution to MacPorts base as I had previously only contributed to
ports. For ports, I had a total of 421
commits
in 2025 as of writing.
One notable addition to ports was the ANGLE project, developed by Google, which provides a conformant OpenGL ES implementation on almost every platform and is used by Chrome for WebGL. As part of porting it, I set up git mirrors for some of the dependencies hosted on googlesource.com (which doesn’t offer stable tarballs) and understood what a bare repository is.
I also maintain include-what-you-use on MacPorts, which is a neat utility that ensures you include the right headers in a C or C++ project, and submitted several enhancements to the upstream project to improve its behavior on macOS.
macOS
Since most of my personal work is done on macOS, I sometimes run into bugs in the core tools (or userland) that come with it. Most of the tools in macOS come from FreeBSD, so I submit the fixes there in the hopes that they will be picked up in the next release of macOS. Two such issues were in sed, and one of which had originated in OpenBSD code that FreeBSD imported. I decided to submit the fix for that one to OpenBSD first, and reported the other, which interestingly had already been fixed in NetBSD years ago. They were both fixed in OpenBSD, then picked up by FreeBSD, and finally brought to macOS 26. The fixes themselves were simple, but it was interesting to see code move across four different operating systems — NetBSD, OpenBSD, FreeBSD, and macOS.
Another issue encountered on macOS was that the default syntax highlighting for shell scripts in Vim was poor. This was because the default highlighting was for the ancient Bourne shell syntax and not the modern POSIX one. This finally changed after I submitted a fix for it.
Last, but not least, less (the pager) had long had an issue that was a pet
peeve of mine: when trying to copy text from a git diff (paged through less),
tabs would get converted to spaces. Someone had mentioned the exact cause and
fix for this in a StackExchange
post
years ago, so I submitted the same
fix, and now diffs are displayed as
expected when using less -rU as the git pager.
Conclusion
This year had more of a focus on macOS fixes while last year I followed up on patches in the Linux world, largely to support an Arabic keyboard that I had submitted the year before, which required co-ordination with several projects under Freedesktop.org, X.Org and GNOME to support a new keysym.