Open Source contributions
Most important contributions to third-party Open Source projects.
browserslist
features
istanbul-js
istanbul-js is a code coverage tool used internally by the
Jest testing framework, developed by Facebook, and the
current de-facto standard for Node.js, React, and JavaScript projects. Its
default text output format was too limited when showing uncovered lines, so I
refactored it to reduce the number of decoration
characters and auto-adjust to the width of the terminal by default, in addition
to grouping ranges of
consecutive missing lines to be able to show more of them.
libWebrtc
Google’s implementation of the WebRTC spec, used in Chrome and Android,
among others. Here, I added support for the removeTrack event in the
Java bindings,
to allow dynamic removal of video and audio tracks from PeerConnection objects
in Android applications.
This contribution was sponsored by Atos Research & Innovation.
node.js
static builds test
node-canvas
As part of the development of NodeOS, to provide it with some
basic graphics capabilities, I added support for configurable backends in
node-canvas, with the intention of being able to draw directly on the Linux
FbDev framebuffer device instead of just only in memory, in addition to X11
and Windows GDI (Win32 API). Backend support has already been accepted in the
upstream code, while the FbDev, X11, and Win32 implementations are still pending approval. In
the future, I plan to add support for other graphic systems like accelerated
Linux DRM/KMS or macOS Quartz.
This work was later sponsored by Ventrata to improve the FbDev backend by adding support for double-buffering, VSync, and 24-bit color mode, and by easing the path to add new screen-based backends.
node-webrtc
As a WebRTC pioneer since 2012 with ShareIt!, I’ve been
contributing to other projects, especially using node-webrtc as a building
block for Node.js applications, where I’ve worked on improving API
compatibility with browsers in addition to maintenance tasks.
num2words
num2words is a Python library that provides word captions of numerals for
multiple languages and dialects. As part of my work at
qvantel, I not only added support for Algerian French
(where numerals are based on increments of 100, instead of increments of 20 as
spoken in France), but also added support for its coin system. I also
refactored the generic French implementation to simplify it and make it easier
to add support for other dialects like Swiss French. That work earned me
compliments both from the library owner and from my superiors for how clean and
streamlined the implementation became.
redux-offline
redux-offline provides helper functions to work with network requests in the
redux state container. I have been using
it in almost all my React Native projects, and my contributions includes
support for async dispatching to control when failed requests are due to expired
tokens (and being able to renew them and redo the request without losing the
session), as well as support for multiple queues of parallel network operations
with different protocols in a single application, without blocks between them.
Thanks to these changes, I was given administrative permissions on the
project itself.
You can find more info about redux-offline in
Redux-offline in Node.js
re-start (AKA ReactNative Everywhere)
re-start is a wrapper for React Native that provides configuration to add
support for web platform in addition to standard Android and iOS platforms,
all of them by using a single code base. I added support for Electron and
Windows. Thanks to that, I became an administrator of the project, and future
plans include adding support for macOS applications, and reworking the project
from a React Native template into a CLI tool capable of enabling support for
additional platforms in any existing React Native project.
You can find more info about re-start in
What’s re-start?
React Native Spain @ F8 Madrid,
Madrid 3rd May 2018:
