On Fri, Aug 12, 2016 at 04:07:07PM +0200, Fabian Grünbichler wrote:
> On Wed, Aug 10, 2016 at 03:44:02PM +0300, Dmitry Petuhov wrote:
> > 10.08.2016 14:58, Dietmar Maurer пишет:
> > > This is by intention - we want people to use open source software.
> > ``Use open source software'' and ``patch Storage.pm on every update'' are
> > little different things.
> > 
> > Users are still free to share their code if it loads automatically, but
> > autoload eases life if plugin if actively used, but not being included into
> > PVE distrib for some reason.
> 
> I see the point - but there would need to be some additional changes for
> this to be accepted in my opionion:
> 
> - there needs to be a way to output loaded plugins (for support / bug
>   triage, because loading third-party plugins would need to be
>   completely unsupported)
> - there needs to be some kind of storage plugin API version mechanism to
>   disable loading of outdated/incompatible plugins (and storages using
>   those plugins)
> 
> since all the existing supported storage plugins are part of one git
> repository and one deb package, the latter was not needed so far. but if
> such an autoloading mechanism were to be included, there would be a lot
> of automatic breakage whenever the supported plugins get a new
> method/new method parameter/return type change/.. which is used by
> PVE::Storage, but no corresponding update was made to the third-party
> plugin. such changes could then bump the minimum required API version in
> PVE::Storage, and the plugins would need to have a corresponding
> "implemented API" version.
> 
> this does of course imply that the API is backwards compatible (i.e., a
> newer plugin works with an older PVE::Storage), which might require a
> cleanup of the existing plugins first.. which kind of returns us to
> square one - do we want to do this additional work for something which
> is essentially unsupported and whose main beneficiaries are proprietary
> storage solution vendors (and their users)? I am not yet convinced that
> this is something that I want to spend a lot of time and effort on, but
> I am not opposed to merging such changes.

A simple check that the plugin's ->api_version() is == the current
version would be fine IMO. If it changes, plugins have to be adapted.
Not investing time in backward compatibility is an option after all ;-)

Storages for which the plugin cannot be loaded would then simply
disappear, which is fine. Better than data corruption due to an
incompatible API for sure.

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to