Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FL, Versioning and the bane of compatability #870

Open
Salanto opened this issue Sep 28, 2022 · 0 comments
Open

FL, Versioning and the bane of compatability #870

Salanto opened this issue Sep 28, 2022 · 0 comments
Labels
conversion Issues related to converting a legacy system

Comments

@Salanto
Copy link
Contributor

Salanto commented Sep 28, 2022

TLDR: FLs function needs to change and actively tell the client if the server considers it unsupported, even if it's too new. Compatability code should move to the server-side for authority and compatibility sake. This also means AO needs to follow something akin to semver, or a little dumb spin-off cause boy is our decision-making questionable at times.

THIS CAN BE CONSIDERED BREAKING SUPPORT OF LEGACY VERSIONS AS WE KNOW IT

FL :
Being born to disable client features to remain compatible with older servers, it has become a bloated mess that can turn a 2.10 client back to the olden days, where a modcall was considered a luxury, not an expected feature. Smart as it may be when conceived, it is now a trail of times gone by, but also shows that no feature after 2.1 is considered essential to AO2.

A potential redesign could be the server sending supported versions as opposed to supported features, enforcing a stricter design and versioning by conception.
Now, you may ask why we don't just kick clients we consider outdated. Well, this would also handle the case of a client being too new and failing parsing due to the extra/different data it sends.

Versioning :
AOs versioning is a mix of "yeah, let's bump the version later and FL the feature" and "yawn, bored now", Using stricter guidelines on when versioning happens and how to approach them would aid the client development as one can easier see the implications of an update. 2.10.1 could be anything from a full rework or minor bug fixes right now.

Compatability:
GET. IT. OUT. OF. CLIENT.
The client should not be responsible for maintaining compatibility with the many, many, many servers that are out there, cause for any server there are at least twice as many users using different versions.
What is easier in your eyes? Updating one server to support the new versions and broker older packets for the newer clients and vice versa? Or have EVERYONE update their clients or download bug fixes on their client in order to pair correctly with a legacy client. (Looking at you 2.8 offset)

In conclusion, taking no steps will only increase the problems of handling the legacy of AO2.
Change is scary, we have all been there, but keep going and nesting code into older code should not be a design to strive for.

@oldmud0 oldmud0 added the conversion Issues related to converting a legacy system label Nov 21, 2022
@TrickyLeifa TrickyLeifa added hack regression Feature was there but stopped being there for some reason labels Jan 21, 2023
@TrickyLeifa TrickyLeifa removed hack regression Feature was there but stopped being there for some reason labels Feb 4, 2023
@Salanto Salanto linked a pull request Jul 12, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
conversion Issues related to converting a legacy system
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants