The [HACKING](https://github.com/geany/geany/blob/master/HACKING) file has this:
Before the 1.0 release series, the ABI can change when necessary, and
even the API can change.
Obviously Geany has long switched to 1.x versions. Does this text still apply?
Well, despite the fact that Geany never had a 1.0, its "interesting" versioning system having gone from 0.22 to 1.23, we do attempt to keep the ABI and API as stable as reasonably possible.
In general the ABI changes as little as we can manage, the ABI number must match exactly between Geany and the plugin, so an ABI change kills all plugins until they are re-compiled. But sometimes it is absolutely necessary. Removing a feature or significantly changing the semantics of an existing feature require an ABI change since existing plugins may no longer work with the modified version of Geany.
The API identifying number is increased whenever anything is added to the API so plugins can test if the feature is available. The API number required by a plugin needs only to be lower than the API Geany provides, so an increase in API number without a change in ABI will not stop plugins that need a lower number from working.
These rules seem to work reasonably well, and are likely to continue into the future.
All of which is a long way of saying that whilst the exact text (referring to 1.0) is wrong, the general sentiment still applies.
@elextr
whilst the exact text (referring to 1.0) is wrong, the general sentiment still applies
I don’t actually get that from the current text. It says “can change when necessary” and doesn’t say “...but we prefer not to”. That’s probably why it mentions 1.0. Like, “we’re not 1.0 yet so why not break things”.
Do you think it would be appropriate to rewrite that paragraphs as follows?
We try to keep the ABI and API stable unless it's really necessary to break them. An ABI change means that all plugins will not load and they must be rebuilt. An API change means that some plugins might not build correctly.
whilst the exact text (referring to 1.0) is wrong, the general sentiment still applies
I don’t actually get that from the current text. It says “can change when necessary” and doesn’t say “...but we prefer not to”. That’s probably why it mentions 1.0. Like, “we’re not 1.0 yet so why not break things”.
What I meant was it still might break (an ABI change) occasionally and the API will change regularly as stuff is added, even though we are well beyond 1.0.
Probably would be better to make something out of the explanation I gave above, I don't think its actually been spelled out anywhere to date.
Closed #1475 via #3027.
github-comments@lists.geany.org