[Geany-devel] Plugin Version control (explained?)
lists.ban at xxxxx
Thu Aug 18 16:25:48 UTC 2011
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:
> 1. the interface should be as small as possible so that the least
> possible changes impact the ABI.
> 2. structures should not be visible in the interface, instead they
> should be hidden behind getter/setter functions, and
> 3. 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).
More information about the Devel