Everyone knows about the 80/20 "rule" in software development. Thoughtful people also know why it is not a rule per se, but that it has some truth in it: a prototype demonstrating most desired features can be realized in a short amount of time, compared to the time it takes to polish the product, ie. handle errors and all the special cases.
For as long as I can remember, ZK has been an unfinished product. It is a product that you can use, a product providing features (fun, lazors and explosions). But it has a lot of already discovered bugs and a lot of bugs waiting to be discovered. In other words, it is not polished. And if I remember correctly, the goal is to greenlite the game, which require some polishing. Unless you want to cope with the justified backlash of angry players getting a product that had known defects at release time.
So now, there is this difficult phase where the last features and the last bugs have to be fixed and where scalability becomes important (because it costs money). This is the phase that takes "80%" of the time for "20%" of the reward. In other words, a phase where the reward/work ratio is not as good as when you add new feature that amazes players (for a week, until they figure it is broken and the code gets commented or just not used).
How do you intent to incentivize contributors (everyone) to swallow the bullet and fix the open bugs, instead of adding new features that briefly amazes the players, ie. farming low hanging fruits? How to get new developers for hard tasks?
Currently, it is clear that large portions of the code are unmaintained and that nobody is taking care of issues reported by users or other infrastructure people, not without consequences. Take the recent episode of lobby server disconnections, the problem was reported, but nobody took care of it, with important consequences (spring migrating, more latency, potentially more network problems) and a lot of very angry players.
Let's posit that we can not blame anyone for these bugs, since ZK is run by volunteers. In the ZK project, nobody is responsible for sub-projects or functional areas. Nobody is responsible for triaging issues and making sure they are fixed before new features are added. Known bugs gets forgotten, remain in the code until someone waste time trying to figure why autohosts do not start or whatever. When players report a bug, it gets announced in #zkdev. It doesn't mean someone will look at it, and it clearly doesn't mean the bug will be assigned to someone and will end up in some to-do or get a task priority.
#zkdev has been cultivating this "fix it yourself" attitude. I suspect it is simply because they are like everyone else, they want a high reward/work ratio in their free time hobby. The veterans expect newcomers to join the project to fix the bugs and handle the special cases, a tedious and not very rewarding task that require intimate knowledge of the system.
And wannabe contributors, do you think they really want to do the hard part of the job of someone who already switched to another new funny prototype project? At some point, you have to face reality... it is not an appealing proposition.
In other words, there is no incentive to fix bugs or to spend the time needed to tackle harder issues that "my icon is too small" or "we need a color picker in lobby". There is already a list of 50 open bugs in the new github bug tracker and a large amount of bugs that have simply been forgotten in the previous bug tracker.
I'm trying to bring in the idea of project management, because I feel that a lot of effort is wasted, I know that a lot of money is burned on misused hardware (and more will be), and I'm afraid a lot of time and opportunities are lost. The size of the code in the repository is growing at a fast pace, if we believe the graphs. So do bugs.
Is the project getting closer to a greenlite-compatible quality level? It feels like zeno's path at the moment.
Before discussing suggestions... do people agree the observations?