Projects

Most important projects I’ve conceived, designed, and developed from scratch, both personal projects and projects for third-party organizations on a professional basis. Most of them are open-source, and I’m always looking for new ideas and collaborations.

Personal projects

Mafalda SFU

Massively vertically and horizontally scalable SFU built on top of Mediasoup, automatically managing the resources based on their capacity, so in theory, with enough resources, it should be possible to host videoconference rooms with an unlimited number of participants in a transparent way for both users and developers. It is also API-compatible with Mediasoup, so current codebases can be upgraded to use it and scale in a matter of minutes. Initially a personal proof of concept, in the first month of development (March 2021) it got interest from several companies, so I decided to develop it as a commercial product. It’s still a work-in-progress, but it already supports vertical scalability with multi-CPU Mediasoup routers, horizontal scalability with routers over several servers, and easy integration with current codebases. The main missing piece is support for routers distributed across multiple CPUs over several servers. In addition to that, the long-term roadmap includes support for transparent decentralized P2P video streaming.

projectlint

Linter to check the overall quality of projects, based on my experience doing code audits. It not only checks code quality and best practices, but also has rules to validate project structure, file names conventions, complexity, documentation, tests…

This project also involved developing from scratch an async engine for project-level rules and a task runner with support for parallel execution and multiple optional alternatives, since none of them was available at that time.

WasMachine

Proof-of-Concept implementation of WebAssembly on FPGAs. Binary WebAssembly bytecode is more optimized for reduced size than direct execution, but it was still able to run some basic instructions and implement on-the-fly translation for some of the more complex ones. Its intended usage was as a “hardware accelerator for web pages” before WebAssembly compilers, instead of interpreters, became the main strength, but it was later suggested as an alternative to the JVM in SIM cards.

Web Assembly workshop by Dan Callahan, NodeJS Madrid meetup, 2017 (my keynote starts at 1:40:36):

NodeOS

Minimal operating system built on top of the Linux kernel using Node.js as its user space and fully managed with npm. It’s mostly focused for Cloud and Fog computing, as well as education and embedded systems, and has some unique features like isolated filesystems for each user (it was planned to isolate each one on its own LXC container) to allow full customization of the system by their users, or multiple flavors depending on the user needs (also as a single-process OS or bootable USB, and was planned support for networked GUI).

This project won the spanish national IX Free Software Universitary Championship, was my bachelor thesis (graduated with distinction), and I was also invited to give some keynotes at OpenExpoDay 2015 and JsDayEs 2017 conferences.

IX Concurso Universitario de Software, Zaragoza 7th & 8th May 2015:

Jesús Leganés Combarro presenting his NodeOS project in the Final Phase of the IX Free Software University Contest Enrique Teruel Doñate (Delegate of the Rector for SICUZ) presents the diploma to Jesús Leganés Combarro for his NodeOS project

XXVIII Jornadas Técnicas del GUL UC3M, Leganés 10th November 2016 (spanish):

JsDayEs 2017, Madrid (english):

Citations
  • Novática 236.pdf, April-June 2016:

    They were also given honorable mentions for the projects:

    […]

    NodeOS of Jesús Leganés Combarro (Rey Juan Carlos University).

    Original (spanish)

    Se entregaron también menciones especiales para los proyectos:

    […]

    NodeOS de Jesús Leganés Combarro (Universidad Rey Juan Carlos).

  • The Case for Writing Network Drivers in High-Level Programming Languages, 13 September 2019:

    4.10.1 Related work. JavaScript is rarely used for low-level code, the most OS-like projects are NodeOS and OS.js. NodeOS uses the Linux kernel with Node.js as user space. OS.js runs a window manager and applications in the browser and is backed by a server running Node.js on a normal OS. Neither of these implements driver-level code in JavaScript.

ShareIt!

First P2P file-sharing web app based on client-side JavaScript and HTML5, built using WebRTC DataChannels, with an architecture inspired by Gnutella. Since DataChannels were not available in web browsers, I first needed to create DataChannels-polyfill, the first working implementation of WebRTC DataChannels API, available 4 months before experimental versions of Chrome and Firefox browsers, and built using WebSockets as transport layer.

This project won the “Most Innovative Project” award in the spanish national VII Free Software Universitary Championship and I was invited to give a keynote at the first Spanish WebRTC summit at the Polytechnic University of Madrid, November 2012.

VII Concurso Universitario de Software, Granada 23rd & 24th May 2013: Winners of VII Free Software University Championship

Citations
  • Introducing ufo.js: A browser-oriented p2p network.pdf, February 2014:

    Among real life applications using the datachannel as best as they can, we should definitely mention shareit and sharefest. Such applications allow browsers to share files in the absence of any form of upload to external servers, as opposed to well-known services such as Dropbox or Google Drive. Both shareit and sharefest use an external server holding and managing a connection to each peer; these connections are used to accomplish all the signaling procedures between peers. Thus the actual p2p communication happens during file transfers.

    Note: ShareIt! used an external server to bootstrap the initial discovery and signaling with other peers, once they were connected to at least another peer and being part of the P2P network, the discovery and signaling with new peers was done directly between peers over the P2P network itself, leaving the connection with the external server as a fallback mechanism.

PirannaFS

Modular filesystem build with Python and using SQLite to manage metadata, allowing to the user to customize its behaviour by using plugins, and inspired by other new generation filesystems like BeFS, ZFS or Ext4.

This was my first open source project with some public repercussion, and won the Madrid local edition of the spanish national V Free Software Universitary Championship and was Honorable Mention in the national edition, both in 2011.

Third parties

TransFast

Initially designed as a one-to-one high-performance file transfer protocol based on WebRTC DataChannels, it evolved into a transport-agnostic streams-oriented communications protocol for general-purpose use, heavily influenced by Node.js streams. Taking ideas from P2P architectures (conceptually, I consider it myself ShareIt! 2.0), it implements advanced features like asynchronous sending and receiving, flow control with backpressure, use of multiple transports in parallel, or auto-recovering.

This project was sponsored by Takeafile Labs with funds from European Union Horizon 2020 program.

Context Broker

Node.js bindings for Orion IoT server.

Although I was initially asked to develop just a one-to-one proxy server between the Orion IoT Server and other APIs like Google Spreadsheets or Amazon DynamoDB, I took the initiative with a bottom-up development focused on following Node.js best practices and standard protocols, and building an expandable system based on reusable modules (the initially requested server ended up being only 70 lines of code) with one-to-many publishing support in half the initially estimated time. This is one of the projects I’m most proud of professionally at various levels, but it would not have been possible without detailed documentation of the Orion IoT Server, clear requirements and objectives, and giving me creative liberty from their side. Kudos.

This project was sponsored by Telefónica R&D division.

Kurento

Kurento is the lead WebRTC media server, powering Skype web conferences or Facebook and WhatsApp multi-user videochats, thanks to its flexibility and performance. In contrast to other ones, it’s focused on providing a thin low-level layer on top of GStreamer with an easy-to-use API instead of a high-level approach that does everything that’s needed to create a videoconference application. Kurento team was acquired by Twilio in 2016.

In Kurento I was responsible for designing and developing its JavaScript and Node.js client APIs and its WebRTC browser utilities, based on my previous experience from developing ShareIt!. After that, in 2020 I was sponsored by Veedeo.me to update kurento-utils browser utilities package to make use of current WebRTC APIs and to follow newer JavaScript standards and best practices.