How to Use Abstraction to Kill Your API

Join me for a fascinating dive into the world of libraries and API design, where we'll explore the reasons behind failures and how they could have been improved. In particular, I'll take a deep dive into libX11, sharing my experience of creating an innovative alternative library in Zig.

My library takes a different approach by not abstracting too much from the application, and I've put it to the test by replacing the libX11 backend in the iconic 1993 DOOM engine. The results are impressive, including the ability to create distro-agnostic executables, reduced runtime overhead, improved error handling, smaller executable sizes, and the ability to run on multiple operating systems such as Windows and MAC.

In this talk, I'll make a case for why my new library is simpler to use, understand and maintain than its predecessor. I'll also share the challenges I faced when tempted to add more abstraction but ultimately resisted, highlighting why libraries can often be their own worst enemy.

So, join me for an enlightening and thought-provoking exploration of how to build better libraries and avoid the pitfalls that lead to project failure.