Egor makes FOSS and takes our Twitter mic from December 02 to 09. Thank you, Egor!
I’m a self-taught programmer, mainly developing games.
Right now I finally have time to work on my long-awaited side project, a little programming language called Lit, which is a mix of JS and Lua. I’ve been trying my feet in the waters of writing compilers for over 2 years now, but I was busy with my previous game - Burning Knight. I’m dreaming of one day writing my games in Lit, and the current goal for me is to make it a reality as soon as possible, hopefully by the end of this year. Of course, a language is not enough to write a game, so I’m also developing a small analog of Love2d to use alongside Lit.
For me, compilers were always this magical piece of software, that I could not even start to imagine one-day understanding how those “black boxes” work. But after discovering a great book, called ‘Crafting Interpreters’ by Bob Nystrom, my eyes were opened to how simple yet how interesting and interconnected compilers are. It’s a really interesting field, and I really recommend you take a look at the book even if you have no interest in writing your own languages, it’s fantastic! By understanding how other compilers work, you can write more optimized code, because you know what the compiler will do with your input.
I’m not sure, at this point, sadly. Looking at my commit data, I’ve discovered GitHub in early 2014. I can only suspect, that it happened after reading “Just for Fun” by Linus Torvalds, but by that point, I’ve been using Linux for a few years, I just did not fully dive into the wonderful world of FOSS myself.
I was working on an open-source game, and I found a few great friends after posting about it on reddit, with whom we’ve continued developing it for around a year. I’ve learned a lot about how to better handle pull requests, avoid merging issues & communicate better with other people. Funny to think that at first, we used gitter for chatting :D
It’s an amazing place to learn! By looking at how other people get stuff done, and seeing their contributions, you not only improve your programming skills but you also get motivated, and in the end, both the project and you are benefiting!
Find a project that you’ve been using for a while and that is open source, find something you’d like to add to it/change, and just do it! It could be hard at first to navigate foreign code, but all it takes is practice and perseverance. For example, I’ve been using a bunch of single-header c libraries, and recently I discovered a few minor bugs, that I’ve managed to fix. So I decided to help both the owner and the people, who will use those libraries in the future, by making a pull request. It doesn’t matter if it’s big or not. Fixes for super annoying bugs can be just a single line of code!
The biggest thing, that stops people from developing FOSS full-time is usually, sadly, that in this world you need money to survive. And either you get a full-time job while leaving a few hours a month for your awesome side project, or you risk it all and go for full-time, but that’s risky and not everyone could do it. I’m myself at this crossroad right now, and I’m trying to navigate myself to the second path, but it is hard.
Another huge obstacle is motivation. This issue isn’t specific to either FOSS or programming, but it plays a major part, sadly. When you are employed, you have set goals that you have to reach, and you do not have any choice. And yes, setting your own goals sounds sweet as honey, but sadly, without proper enforcement, it’s really hard to reach the goals and not just start yet another side project, that will die in a few days. If you push too hard, you will burn out, if you don’t push enough, you will not get anything done. What is the optimal solution? I wish I knew.
It’s the day, where I can fully stop thinking about my ongoing tasks and just spend the whole day playing games without the guilt of wasting time, or go out with friends. The guilt of not working is a huge issue for me right now, and I’m trying to combat it.