In Lövely Interviews I interview developers of LÖVE and LÖVE games. And this time we interview bartbes. Together with slime he is one of the main developers of the LÖVE framework.
Tell us a bit about yourself. Who are you and what do you do?
How did you learn about LÖVE?
I'm not really sure, but I think this happened as a result of the game Crysis. See, Crysis came with an editor for the CryENGINE 2, which used Lua. After playing around with the existing code, tweaking it a bit, and generally messing around with the editor, I googled for game engines using Lua. Yes, it was that simple.
I should probably mention that it wasn't my first foray into programming, I started with QBasic on MS-DOS, and then later went on to (primarily) C++ programming. Using LÖVE was like a breath of fresh air, since all "games" I had made until then were text-based, and in 3 lines of Lua I had a window displaying "Hello, world".
Together with slime you're the biggest contributor to the LÖVE framework. Why did you start contributing and what kept you going?
I started contributing because... I'm not sure, actually. I think I heard rude and/or mike saying they were looking for help coding, and considering I knew C++, LÖVE was (and is) written in C++, and I was a cocky teenager, I volunteered. And it worked, I guess.
As for what kept me going, I'd say it was probably a combination of free time (I was in high school at the time), fun and necessity. It was quite interesting to go from knowing how to get a compiler to accept your C++ code to knowing how a game engine works, I suddenly got to see everything from graphics to input to audio on a clean, readable codebase. I feel like these days I'm familiar with what goes on in most of LÖVE, but I've read ahead and will go into that in the next question. I also mentioned necessity, which I'm using fairly loosely here, but that was about the time that mike stopped contributing, and when rude had less and less time to work on LÖVE. I'm sure LÖVE would have been fine without me, but knowing I could easily become a driving force behind the project was a good motivator.
Are you and slime both specialized in certain modules/features or can you find your way through the whole codebase?
I'd say I could probably read and modify everything, and I have probably read most code at some point. Partially this is because I have modified or authored a decent part of it, or have worked on code that interacted with it, partially it's because I've been doing this for years, and LÖVE's codebase isn't actually that big. That said, I know slime knows OpenGL much, much better than I do, so I'd say I know love.graphics the least, and I usually leave graphics-related things to him. Don't tell him, but it's also because I'm lazy.
From what I can tell, slime feels the same, he's had his fingers in a lot of pies too, including the SDL pie. I'm not sure how he feels about modules I've written from scratch, like love.thread and love.video, but he is not someone to back away from a challenge.
Does LÖVE still have lots of work left or are you at the point where you really have to seek for what you could work on next? What are you currently working on?
That's a hard question. As most people know, it feels like your work is never done, it's just "good enough". Though with love.video, and the upcoming microphone input (see raidho's pull request for more information), there's nothing major that comes to mind.
I never have to look for what to do next, since I don't think the bug tracker has been empty in years, and in the limited time I spend on coding, I try to tackle whatever bug seems interesting at the time.
Is there a feature that is currently not in LÖVE simply because none of the developers so far have an understanding on how to implement it? Have you ever searched for help to get a feature made?
Audio input has (had) that problem: if I remember correctly bmelts had a working prototype a few years ago, but it turned out it only worked on his machine.
I think love.video used to be a prime example, but we've persevered! I don't think Twitch still has them archived, but I did a lot of research and experimentation for love.video on twitch.tv. I didn't necessarily reach out to a person, but I ended up looking at a lot of example code, bad documentation and even library source code to get that working. Most of the time when I can't solve something myself, there's two resources that help: Google and slime.
That's not to say it has never happened, ports are a good example. meric (then appleide) ported LÖVE to OSX, and I'm sure that played a role in asking him to join, though that was before my time. Similarly, fysx' android port was something we probably wouldn't have done ourselves, and he too was asked to join. Come to think of it, maybe that's the secret to joining… I'm sure those rituals had nothing to do with it.
When working on LÖVE, was there a bug that you had a special grudge on?
No specific ones, but garbage collections or race conditions are always fun. Especially garbage collection race conditions! Any bugs we can't reproduce are also up there.
Interestingly, I kind of like the extremely specific bugs, the weird edge cases. Those usually expose some flaw in your logic, where you were sure that value can't have been 3 at that point, but your tests undeniably prove it can.
Is there a LÖVE feature that you are extra proud of?
When I read this question, love.video was my first thought, but I've talked about that enough and there's something else that I think is actually really cool: love.run.
Why love.run? Because it shows the simple and customisable nature of LÖVE. If you use the default love.run, you get a hello world in 3 lines. But there's no reason you need to use the callbacks as we defined them. There's no reason you need to handle events in the main thread. You can change LÖVE's main loop without a problem. boot.lua — which is the file love.run lives in in the repository — shows to me that in essence LÖVE is a library. You can pick and choose, modules are fairly loosely coupled, and you can load it into an existing lua program. And somehow we tie this together into a coherent framework/engine using lua, rather than C++.
Do you have any plans or hopes for the future of LÖVE?
"Plans? Where we're going, we don't need plans!" pretty accurately describe LÖVE development. There are bugs, intentions and release dates.
What I would like to see is more users. It still feels wrong that media and industry seems to ignore us. Obviously I live in a LÖVE bubble, and it's probably fair, but I'd like to be at the point where LÖVE is well-known. Something completely unrelated: if you work for a big games company, and you like LÖVE, spread the word!
Anything you would like to tell all lovers (LÖVE users)?
Don't fall in the engine-making trap, you'll never release games again!