Ramon Santamaria

Creator of raylib

December 2020

Ramon makes FOSS and takes our Twitter mic from December 09 to 16. Thank you, Ramon!

Interview with Ramon, Friday, December 11th - 5:00 p.m. UTC on our YouTube channel.

Please tell us about yourself

My name is Ramon Santamaria, I’m an Electronic Engineer but since I finished my Master’s Degree, I’ve worked in the Videogames industry. Some years ago I started teaching Videogames Development and after my first year experience trying to teach videogames programming to art-profile students I decided to create a small free open-source library: raylib. I’ve been working in raylib for the last 7 years, improving and growing the library while teaching and also using it professionally for tools development on my startup: raylib technologies.

What are you working on right now?

During the last 8 years I’ve been balancing my startup projects (emegeme and raylib technologies) with teaching at multiple Universities and private institutions. At this moment I keep working on raylib and multiple other technologies and tools under the “raylib technologies” project. I’m also a lecturer in the University in Barcelona, where I teach Programming and Videogames Development.

What is most interesting about that?

About raylib and surrounding technologies, the most interesting part right now is WebAssembly compilation. raylib is plain C with no external dependencies and can be compiled to WASM to run on the web. Actually, all the tools created using raylib can be used from the web, they execute on client side, they are high-performant and their size is under 1 MB. Really interesting!

How did you first discover FOSS?

Actually I had never worked on any FOSS project before raylib. I got introduced to FOSS thanks to GLFW library, raylib is using it internally for window/inputs management, this library was my reference, I learned about FOSS development as long as I was working on raylib. In the last 7 years I’ve put a lot of time investigating similar projects and learning from them, especially in terms of organization, conventions, best practices, presentation, care for detail, etc.

What prompted you to start contributing to FOSS?

My students needed a simple and easy-to-use library to learn videogames programming, when I started creating it, making it open-source seemed the best option to me.

Why should others get involved with FOSS?

Personally I think it’s the best way to learn and contribute to the software world, sharing is a priceless experience!

How should they get started?

I started just looking at other FOSS projects similar to mine. Reviewing them, checking the code, their repos, documentation, conventions… basically learning from projects with more experience behind. I think it’s a good start.

What difficulties and limitations do you see with FOSS?

Sustainability. It’s very difficult to keep working on a FOSS project for a long time, especially if the project is not used by some big corporation or has a huge community behind that contributes to it. I’ve seen some amazing projects on GitHub completely abandoned after some time because they are just not popular enough or they can not be used to generate money in some way.

How can they be solved?

I’m afraid there is no easy solution. Donations could be a motivator but the amounts received are usually small and do not last for long.

Where do you see difficulties in contributing?

There are projects that are not contributors-friendly, sometimes the code is too complex for people to understand and follow, sometimes the contribution guidelines are not clear, sometimes the project aim, objectives or roadmap are not defined. With raylib I tried to keep de code extremely simple and provide as much information as possible to the possible contributors. I think it helped a lot.

What does a perfect day off look like?

Perfect days are when I solve some issue, I improve some feature and I delete lines of code.

Do you want to tell us something else we didn’t ask?

Most FOSS projects are a result of passion, that’s what keeps a project alive.