Le 17/08/2011 07:37, Lex Trotman a écrit :
Hi All,
Given that the previous thread had moved way off topic, I started this one.
After thinking about it a bit, considering Matthew's, Colomban's and Thomas's comments and looking at other systems I came to the understanding documented below. Frank probably already knew all this, but I have saved him writing lots of English. If its right and you think its worth using in the newsletter or anywhere else feel free to copy it.
[...]
Great writing :)
available at runtime. Making the API number available at runtime may be a potential enhancement of the interface and allow plugins to support a wider range of versions.
Yeah, that may help too; and as you explained later in the discussion, it would work with the current design.
[...]
Because the ABI must match exactly, every effort must be made to limit changes that affect the ABI. Otherwise as soon as a new Geany is released all plugins stop working until re-compiled, and new packages are released, and installed by users. This is bad :-(
This means that:
- the interface should be as small as possible so that the least
possible changes impact the ABI.
- structures should not be visible in the interface, instead they
should be hidden behind getter/setter functions, and
Agreed
- interface wrapper functions should be used to hide the
implementation and side effects.
What do you mean by "interface wrapper functions"?
IMO Geany should use the exact same API than plugins to do one thing. This would avoid having a broken getter in the API (or whatever) that we don't notice just because the core doesn't use it.
The last two have not been Geany policy to date but I now propose that they be.
Agreed (at least for 2, not sure what 3 is).
Regards, Colomban