Projects

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

Personal projects

Mafalda SFU

Massively vertical and horizontal scalable SFU built on top of Mediasoup, automatically managing the resources based on their capacity, so in theory with the enough resources it could be possible to host videoconference rooms with unlimited number of participants in a transparent way for both users and developers, and API compatible with Mediasoup so it’s possible to upgrade current code bases 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 code bases, being mostly missing just only the support for routers distributed across multiple CPUs over several servers. In addition to that, long term roadmap includes support for transparent decentralized P2P video streaming.

projectlint

Linter to check global quality of projects, based on my experience doing code auditories. Not only checks for code quality or best practices, but also has rules to validate project structure, file names conventions, complexity, documentation, tests…

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

WasMachine

Proof-of-Concetp implementation of WebAssembly on FPGAs. Binary WebAssembly bytecode is more optimized for reduced size than direct execution, but still was able to run some basic instructions, and implement on-the-fly translation for some of the more complex ones. Usage was intended as a “hardware accelerator of web pages” before WebAssembly compilers instead of interpreters became the main strength, but later was sugested to promote it as an alternative to 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 build on top of Linux kernel usingo Node.js as its user space and fully managed with npm. It’s mostly focused for Cloud and Fog computing, at the same time for education and embeded 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 of 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 filesharing webapp based on client-side Javascript and HTML5, build using WebRTC DataChannels, with an architecture inspired by Gnutella. Since DataChannels were not available in web browsers, I needed previosly to create DataChannels-polyfill, the first working implementation of WebRTC DataChannels API, available 4 months before of experimental versions of Chrome and Firefox browsers, and build using WebSockets as transport layer.

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

VII Concurso Universitario de Software, Granada 23th & 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 mechanims.

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 files transfer protocol based on WebRTC DataChannels, it evolved into a transport-agnostic streams-oriented communications protocol for general purpose heavily influenced and based by Node.js streams. Taking ideas from P2P architectures (conceptually, I consider it myself ShareIt! 2.0), it implements advanced features like asynchronous send and reception, flow control with backpressure, use 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 it was initially requested to develop just only a one-to-one proxy server between the Orion IoT Server and other APIs like Google Spreadsheets or Amazon DynamoDB, I took the initiative to a bottom-to-up development focused on following Node.js best practices and standard protocols, and building an expansible system based on reusable modules (the initially requested server ended being just 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 professionally more proud of at various levels, but this would have not been possible without a good in-detail 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 provide a thin low-level layer on top of GStreamer with an easy to use API instead of a high-level aproach that does everything that’s needed to create a videoconference aplication. Kurento team was acquired by Twilio in 2016.

In Kurento I was responsable of design and develop 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.