Today, I stumbled upon a 2023 podcast where Italian YouTuber Lorenzo Danese interviewed an exceptionally humble developer from Agrigento: Salvatore Sanfilippo. Well, after listening carefully, I’ve decided – from the lofty heights of my irrefutable opinion – that antirez, Salvatore Sanfilippo’s alias, is officially Italy’s pioneer of Open Source Software.

Context

Sometime around mid-2024 (I don’t recall the exact month), I was investigating a bug in APISIX when I came across a GitHub account that piqued my interest.

Apache APISIX is a fully open-source API gateway developed by API7 and later donated to the Apache Software Foundation, the world’s largest open-source community, which made it publicly available under the Apache 2.0 license.

APISIX primarily handles request routing to upstream services based on a set of rules. When configured with the radixtree_uri_with_parameter router, it can also use path parameters for route matching. With this router, APIs like the following can be defined:

  • /users/:user_id
  • /users/:user_id/orders
  • /users/:user_id/orders/:order_id

Here, :user_id and :order_id are path parameters that allow dynamic values.

Special Characters in Path Parameters

URIs follow the RFC 3986 standard, which defines a set of reserved characters (e.g., /, ?, #, %, &). Since these characters serve specific functions in URI structure, they must be encoded safely-using percent-encoding (Section 2.1 of the standard) – to be treated as literal characters. The name comes from the % prefix used in encoded sequences.

In an API gateway (or any web server), when using routes with path parameters, values must be properly encoded to avoid ambiguity. For example, with an API like /users/:user_id, a parameter like user_id=abc/def would break interpretation because / is a reserved separator. Thus, / must be encoded as %2F, yielding user_id=abc%2Fdef.

The Bug

While messing around on APISIX, I noticed that when certain percent-encoded reserved characters were used in path parameters, APISIX failed to match the request and returned {"error_msg": "404 Route Not Found"}. For example, with /users/:user_id:

  • Path parameter without special characters:

    curl -s "http://localhost:9080/users/abc123"
    {"result": "ok", "user_id": "abc123"} 
    
  • Path parameter with %2F (encoded /):

    curl -s "http://localhost:9080/users/abc%2Fdef"
    {"error_msg": "404 Route Not Found"}
    
  • Path parameter with %20 (encoded space ):

    curl -s "http://localhost:9080/users/abc%20def"
    {"error_msg": "404 Route Not Found"}
    

This happens because APISIX’s radixtree_uri_with_parameter router automatically decodes these values before route matching, causing unexpected behavior.

Note: Other web servers, proxies, and API gateways handle this use case correctly.

We reported the issue to the developers, and a patch was later applied to partially resolve it.

The Radix Tree Module

Before APISIX developers addressed the issue, we tried to diagnose the root cause. And here’s the beauty of open-source software: APISIX’s code and its entire dependency chain are fully public, accessible, and downloadable by anyone. Moreover, anyone can contribute (subject to maintainer reviews). This led us to the problematic component: api7/lua-resty-radixtree.

At this point, the poor soul reading this post might wonder: “Now that I know everything about APISIX and radix trees, what’s the point? And how does antirez fit in?”. Well, dear patient reader, guess where APISIX developers got their radix tree implementation from? :)

A Step Back

As I wandered through the dependency chain, trying to get to the radix causa (eheh radix)…

Which however is only thanks to the code being fully open-source (shoutout to Apache and APISIX/API7 🤍)

…I traced the issue to APISIX’s radix tree implementation: api7/lua-resty-radixtree. This OpenResty module wraps a C library that implements the radix tree algorithm, exposing Lua APIs for API gateway use cases. And who wrote that C library? antirez himself!

Likely, APISIX/API7 developers, at some point, decided to integrate a radix tree-based router into their gateway. Instead of reinventing the wheel, they found antirez’s open-source library, available under the permissive BSD 2-Clause “Simplified” license (for those who don’t know, it is one of the most permissive licenses) and integrated it. Crucially, they retained the copyright notice, which led me to his GitHub profile: github.com/antirez.

GitHub Stalking

I don’t know what mental quirk drives this, but when I discover interesting projects, I love digging into the authors’ profiles. Upon landing on antirez’s GitHub, I was stunned to learn:

  1. he’s Italian (even though the name was a pretty obvious hint) and Sicilian;
  2. he writes most projects in C, a language I adore;
  3. he has 22,000 followers!

Then, I spotted his pinned repositories:

  • rax – A radix tree implementation in ANSI C;
  • dump1090 – A Mode S decoder for RTLSDR devices;
  • linenoise – A minimal alternative to readline/libedit;
  • kilo – A sub-1000-LOC text editor with syntax highlighting;
  • sds – Simple Dynamic Strings library for C;
  • disque – A distributed message broker.

If you know antirez, you’ve probably noticed something glaringly missing: Redis!

Fast Forward to April 2025

A YouTube episode from Lorenzo Danese’s podcast popped up: “Salvatore Sanfilippo @antirez: Open Source, AI” (video link).

As I listened on my commute, I discovered that antirez – whose GitHub I’d followed for a year – was also the creator of Redis.

In the October 17, 2023, interview, Lorenzo and Salvatore covered:

  • parallels between software and architecture;
  • Salvatore’s journey into tech and his critiques of formal education;
  • the beauty and importance of open-source software;
  • the story behind Redis, his most famous project;
  • balancing creativity with productivity in tech;
  • opinions on AI and “tech capitalism.”

An enlightening and enjoyable episode, which I highly recommend, even to non-technical listeners.

Conclusions

Learning about antirez’s story was a delightful surprise. His philosophy and dedication to open source are inspiring, especially this paraphrased quote from the podcast:

“Looking in the mirror after 20 years at a company, realizing I’d only worked on abandoned projects, things I didn’t care about, or client requests that felt pointless… That would’ve crushed me. So I chose to work on what fascinated me and give it away for free.”

Toward the end, Salvatore also briefly mentioned his sci-fi book, published in 2022: Wohpe, a novel exploring humanity’s relationship with technology in a future where AI blurs the line between awareness and control.