Hi,
here is some very-high-level strategy for the future of Lix: It's not the high-level 2022 roadmap, but even higher level.
How will I introduce breaking changes? I've been really conservative, I haven't changed the physics
at all since 2017. Why is that? And how will the next 5 years look like?
Debian problem: Every 2 years, Debian, the linux distro, allows major software updates. We have a package with Lix 0.9.x in Debian, thanks to tarzeau.
Debian shuns non-bugfix patches in-between the releases, therefore Lix's physics updates will only land in the Debian Lix package every 2 years. The Lix game server (running on a machine that I rented, has nothing to do with Debian) accepts players from all operating systems, including Debian, but requires that everybody has the same minor version of Lix (either all have 0.9.xx, or all have 0.10.xx, ...). Therefore: If we change the physics in
stable Lix releases more often, Debian players will not be able to play on the server. But I want them to be able to play.
The Debian problem is paramount in my Lix project planning. I want the Debianists to play. I don't want to lock them out of the server for over a year.
Therefore, I see two possible paths forward:
Careful addition:- Rework the existing server to accept players from different minor versions (0.9.xx, 0.10.xx, ...) and ensure that you only join rooms with same-version players. If this takes weeks to be nice, so be it.
- Work on the existing problems one-at-a-time.
- Introduce physics changes only when well-tested in singleplayer, and move all culture to the new stable. Ideally, create some unittests for physics.
- Only extend the level format, don't replace it entirely.
- Introduce neutral lix only after careful assession how they fit best into the existing level format.
Massive feature bloat:- Immediately split an experimental from stable, and run two multiplayer servers.
- Add neutral lix, add unstable features, add new skills
- possibly cut/change/merge skills to make room in hotkey layout
- Change level format in whatever incompatible way I want.
- Expect the stable and the experimental to be split for years.
The 5-year-old child in me wants to bloat 7 features and then cut 3 of them. I haven't done this in software for years. It's refreshing to make features
without spending 90 % of the time on how to make it agree with the rest of the software. We can bloat dumb features and ditch them if they suck!
The software architect in me isn't so sure, warns that those 90 % will be spent anyway in the future, and wants more caffeine now. Also, I don't know if I have the free time for enough features that warrant a fork.
The community priest in me wants everybody under the same nice comfortable stable version, and no arguments that feature X will be cut in any experimental version. Debianists will always enjoy the same perks as those who run the hottest new stuff, because only highest-quality hot stuff leaves the factory in the first place.
-- Simon