Serious topic here about the engine guys - please go over this carefully. You can't complain later if you TL;DR.
Ever since SX left and handed me they keys as "Lead Dev", I have tried to uphold his stance on maintaining backward compatibility at all costs. However, lately I am off the mind that needs to change. However, leader does not mean dictator - so I want to get a solid community consensus before moving forward.
So allow me to state my case, and what dropping backward compatibility really means:
So what would it mean to drop backward compatibility? Well if adopted as a policy, parts of the engine will be subject to change without regard to making them work with existing or in development projects. It doesn't mean going off willy nilly and changing things on a whim. In fact, one of the facets of the new command design is 100% backward compatibility from that point on. Say we add multiple attack box support. Right now that would mean breaking the old attack command or adding a second one. A redesigned and object oriented attack command won't be that way. New modules use the new parameter to take advantage, old modules (old as in made after the redesign) that don't have it will fall back gracefully and work as they always did. Think of the way level spawn commands work; that's pretty much how everything else will.
It does mean that a lot of our old module catalog will eventually be phased out as the redesign progresses, but again since a lot of authors just version their work anyway does that really matter?
So... let's hear it. I want your permission for design freedom and in turn I'll give you a smaller, faster, more stable OpenBOR (though yes it will come gradually). Will you give it to me?
DC
Ever since SX left and handed me they keys as "Lead Dev", I have tried to uphold his stance on maintaining backward compatibility at all costs. However, lately I am off the mind that needs to change. However, leader does not mean dictator - so I want to get a solid community consensus before moving forward.
So allow me to state my case, and what dropping backward compatibility really means:
- Bugs are piling up by the day it seems, and many of them are imbedded in archaic code written long before OpenBOR was organized into a cohesive project. Many of them cannot be fixed at all without causing new breaks.
- I have given it my best effort, but I simply cannot do much more to clean up the source code without making compatibility changes. Long requested features like animation properties or timer based ("real") random numbers just can't be added without bloating the engine and surprise, causing more bugs.
- It's not just the source code. The modding commands and script interface are extremely powerful yes; there's literally nothing in the world quite as versatile. But they're also confusing, overlapping, and often contradictory. Many of the older iterations were thrown together without any thought toward the future or ease of use. Just look at the utterly stupid and superfluous dive, the mile long attack or confusing bglayer commands for a few quick examples.
- For almost two years now I've been a one man show. It's clear the old team is gone and not coming back any time soon - if ever. I have an excellent but busy career and am up to my ears in projects. It's only going to get worse as I work toward my CS PHD. I simply cannot kill bugs, clean code, fill requests AND maintain backward compatibility all at the same time. Something has to give.
- Backward compatibility doesn't exist anyway. Rather than upgrading and helping with specific bug reports, authors generally just post a generic "This don't work!" post, pick a version and ignore updates. I understand that - it's a lot easier than waiting around for a fix. But it's not fair for the dev team (me) to be asked for backward compatibility when no one is really using it or willing to help keep up with it.
So what would it mean to drop backward compatibility? Well if adopted as a policy, parts of the engine will be subject to change without regard to making them work with existing or in development projects. It doesn't mean going off willy nilly and changing things on a whim. In fact, one of the facets of the new command design is 100% backward compatibility from that point on. Say we add multiple attack box support. Right now that would mean breaking the old attack command or adding a second one. A redesigned and object oriented attack command won't be that way. New modules use the new parameter to take advantage, old modules (old as in made after the redesign) that don't have it will fall back gracefully and work as they always did. Think of the way level spawn commands work; that's pretty much how everything else will.
It does mean that a lot of our old module catalog will eventually be phased out as the redesign progresses, but again since a lot of authors just version their work anyway does that really matter?
So... let's hear it. I want your permission for design freedom and in turn I'll give you a smaller, faster, more stable OpenBOR (though yes it will come gradually). Will you give it to me?
DC