This is a boring kind-of blog post to share some really trivial stuff about life, the universe and everything.

Out of a few billion intelligent individuals known to live on this planet, only a few are computer programmers. Some may say too few. While jumping into the realm to do "at least a little something" (which you accidentally turned out to want badly at a particular moment) is relatively easy, it necessarily takes a few years, depending on your luck in encountering people and/or projects to learn from, to grasp most of the usual theory and notions and thinking patterns that are required to build or maintain large software. I'm not sure if any genetic or physiological peculiarities of the individual speed up or slow down the learning curve as well, or if all intelligent individuals are roughly equally intelligent to begin with, but it is certain that for most of them the choice of whether to become a programmer or not mostly boils down to personal preference. Quite a lot of people stop learning computer science once they're able to use twitter on their phone. (Well, in fact, quite a lot of people live in countries that are too poor to enjoy even that much). They've got many other things to desire, like cooking food, singing songs, growing kids. Doctors are pretty nice too. You can't blame them for this choice - no matter how annoyed you may be about it. That's a matter of desire.

Nothing new so far, i hope. Ok, so let's honor people who have actually put enough effort into becoming a programmer capable of doing programming for a living (which is the same as saying "good enough by modern industry standards") by calling them "lvl1 programmers". For the sake of completeness, let's also honor people who didn't have enough intent to do so as "lvl0 programmers". What kind of people lvl1 programmers are? Like most other people, they have some free time to spend, which they spend according to their desire (a tautology). This may be cooking food, singing songs, growing kids. Being a good doctor is more unlikely though. The only thing we know is that they invested a lot of their time and intelligence into reaching lvl1, perhaps more than it takes to reach lvl1 in many other professions, which means that they most likely enjoyed it to some extent. And it means that even when they do programming for a living, when given free time, they have a little chance to repeat the same choice again, and do programming as their hobby as well.

That's where open-source software comes in. The few lvl1s who picked programming as their hobby begin to, first, use open-source software because it gives them the advantage of being able to improve or tweak the software as they want, and, second, to slowly start participating in the development of such software by sharing their changes and tweaks with other people. When open-source software is also "free software" (as in "free speech"), it protects the freedom of other users to use their improvements or tweaks, and the freedom of other people to work further on them, which is an extra bonus. Let's honor people who do this regularly in harmony with other open-source developers by calling them "lvl2 programmers". In fact, the "harmony" part also requires a significant investment of time and patience to learn the ways of open-source, which are significantly different from commercial development; the fact that i'm making this post itself demonstrates how hard that may be.

Normally, open-source software is being developed by at least lvl2s. Some serious open-source projects deserve attention of lvl1s, when their manager would pay them to work on open-source software. An extreme example would be the LLVM project, to which software giants like Apple, Google and Microsoft contribute together, despite being deadly rivals in every other aspect. Most open-source projects don't enjoy such commercial attention.

For the purposes of this talk, the crucial part here is that lvl2s are working on the software that makes them happy. Otherwise they wouldn't be using it in the first place - we're talking about their free time and hobbies, after all. That's why they are happy to improve the parts of the software that makes them happy. Does it mean that they also make you happy? Not necessarily. lvl2s are not here to solve your problems - they're here to solve theirs. They are free to choose what to work on, and you can't enforce a change of hobby on a person, that's the whole point of a hobby. They may accidentally make you happy, but they won't necessarily listen to your demands. Same as becoming a lvl1, becoming a lvl2 is a matter of personal preference.

I'm going to define a "lvl3 programmer" as a lvl2 that proves himself interested in success of an open-source project as a whole, caring about other people. Instead of doing what is the most useful to himself, a lvl3 is eager to ask what would be the most useful for the project, and work on that, regardless of if it's his favorite part of the project that makes him happy, or his favorite technology to work with. Instead of doing what he thinks is right, he is ready to ask - guys, what's right, really? - and act according to the feedback. Unlike lvl2s who would (only) love to work on beautiful new features by utilizing magnificent new technology, lvl3s would be happy to fix random bugs on the bug tracker, implement quality assurance techniques, listen to user opinions through polls, or even maintain the website (doh), if that's what the project seems to need.

Being a few out of a few out of a handful of intelligent individuals on earth that become programmers, divided by the number of open-source projects, and often also divided further by conflicts and quarrels within projects, lvl3s are extremely rare beasts - so rare that projects exist around lvl3s more often than vice versa. At the same time, you can't go far without lvl3s. I do not know what it takes to become a lvl3 - i've never reached that far. That must be an extremely healthy conscious attitude towards life and people and everything, great emotional stability and harmony with the world. I'm quite sure, though, that it is definitely a matter of personal preference, of desire, and same as becoming a lvl1 or a lvl2, becoming a lvl3 cannot be enforced upon a person.

I'm very greatful to all lvl3s who worked on Warzone2100. With the descriptions above, i think they'd know if i'm talking to them now. And i'm happy to see all lvl2s having fun and bringing variety and richness to the game. From my current point of view, based on the little experience that i have (having been lvl2 for a while, but temporarily stuck at lvl1), i cannot blame lvl0s for not being lvl1s, i cannot blame lvl1s for not being lvl2s, and i cannot blame lvl3s for not being lvl3s. Though i'm definitely happy when they lvlup, i know how hard it is.

Why, just why do so many lvl0s blame lvl2s for not being lvl3s? I do not understand

I think most people do not understand that lvl2 developers typically focus on specific areas of development rather than the project as a whole, hence why people expect lvl2’s to work on all aspects of development (or act as lvl3’s as you stated). At least that’s what I thought when I first started becoming familiar with the dev team a few years ago.

I wish that I could fix some of the bug problems with 3.2 but I don’t know enough about WZ graphics code to debug them. From what I’ve read on the forums I’m under the impression that the bugs are all graphics related and it simply boils down to incompatible drivers. I have a master’s degree in computer science and I work in the IT field but rendering and C++ are not my areas of expertise. As you also stated, lvl2’s work on whatever interests them and for me that’s the stats and map making. Btw, I did learn map making mostly from your Aurora tile set and this guide https://developer.wz2100.net/wiki/ModdingTilesets

I have gained some good computer skills from working on WZ that carries over in my real life professional career:

Familiarity with C++. Although I’m by no means fluent in it, I know enough about OO programming that working on WZ helps me learn C++ which is good for my professional career.

Understanding how maps get rendered

Writing VBA code to export a spreadsheet to .json proved to be a good exercise that’s useful in real life. Reading and writing to files in a particular text format is valuable experience to have.

Compiling the source code and grep’ing through it for strings and regular expressions was a good exercise.WZ provides an opportunity to apply some things I learned in school. Namely, how an AI might be designed in an RTS setting using predictive analytics and the usage of simulation for testing stat changes

Actually I might even attribute my entire IT career to WZ, it was the first online game I ever played when I was 14 and it was around that time I knew I was going to work on computers for a living. I’m 31 now. I can honestly say WZ has been somewhat influential in my life.

And this is just experience I gained from working on WZ in the past couple of years, not to mention the critical thinking skills I acquired as a kid actually playing the game.

I just now compiled WZ for the first time about 4 months ago so I’m still lurking around the source. Right now I’m trying to figure out how to make the cyborg production upgrades independent of the tank production upgrades which requires the cyborg factory structure to have a different productionPoints attribute than tank factories. I think it would be a nice feature to implement in the stats to make things a little bit more complex but like you said, time is limited, I just do this in my spare time. In fact I have to get back to work now, I wrote this post at work .