-
-
Notifications
You must be signed in to change notification settings - Fork 580
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
Reword warning about extension compatibility in README #1588
base: master
Are you sure you want to change the base?
Reword warning about extension compatibility in README #1588
Conversation
GDExtension has limited forwards compatibility available since Godot 4.1, so the warning, while still relevant, can be made less prominent.
c29a888
to
4de929e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! This definitely seems like an improvement to me
I think the new wording is still a bit strong? Also, it's repeated too many times imo:
This sounds a bit dreadful. What I'm worried about is that this discourages binding and extension maintainers from investing into long-term projects. While it's an easy cop-out for us in the GDExtension team, I'd prefer if we held ourselves accountable on not breaking compatibility unless absolutely necessary, and this is also how we've operated since 4.1, sometimes even reverting the removal of broken methods just for this. What I would prefer instead is to document that we generally maintain GDExtension compatibility from 4.1 onward, however there may be rare scenarios where breakage is needed, but these need to be well-justified. Furthermore, I believe godot-cpp should be mentioned separately from GDExtension. While both are maintained by overlapping groups of people, GDExtension meanwhile has many more clients, so its design is not only driven by the C++ bindings. Such a separation would also allow a more lenient compatibility policy in godot-cpp while maintaining API stabilitiy on the C interface. TLDR: Backwards compatibility with 4.1 is a core goal and not just a potential, nice side effect. godot-cpp is allowed to follow a separate policy. |
Hm, yeah, our track record has been very good with regard to binary compatibility since 4.1, and, in practice, we put a lot of effort into not breaking compatibility. So, we could publicly make a stronger statement on compatibility. My main worry with doing something like that, has been a fear that there is some serious issue (like the one that forced breaking compatibility in 4.1) that we haven't found yet, and making strong compatibility promise will hurt developer trust if we are forced to break it. However, I guess with each minor Godot version, and as GDExtension gets more and more use, that becomes less and less likely.
This makes sense to me. We're quite strict with regard to binary compatibility for the GDExtension interface and even source compatibility for We can discuss this some more at the GDExtension meeting in ~10 minutes :-) |
Yeah, there's probably a balance to strike. On one hand, it's nice if people can see that a project takes stability seriously (especially considering all the effort we put in to ensure just that), on the other hand we don't want to design ourselves into a corner. So I wouldn't state the compatibility as a guarantee, but as some best-effort goal we strive towards. Incidentally, I think we haven't discussed a strategy on breaking changes, simply because the policy so far was "we don't do it". But maybe it's good to have some ideas in place just in case (e.g. deprecation periods, epochs/editions, ...). This will become more relevant as we have more minor versions. |
Discussed at the GDExtension meeting and we discussed a number of ideas:
|
Some thoughts in addition to what was discussed at the GDExtension meeting:
|
GDExtension has limited forwards compatibility available since Godot 4.1, so the warning, while still relevant, can be made less prominent.