[Owncloud] Improvement for the required version test blocking apps
Christian Reiner
foss at christian-reiner.info
Sat Aug 18 08:28:00 UTC 2012
Hello Michael, Thomas and all,
> > On Friday, August 17, 2012 10:33:39 PM Christian Reiner wrote:
> > [required version test blocking apps]
> > [suggestion of tag 'compatible' in info.xml]
> On Friday 17 August 2012 16:56:35 you wrote:
> Instead of ownCloud versions, I believe we need to start setting versions
> for the public API and use those for determining what apps work. In any
> case this is something that we should work on before the hard feature
> freeze.
> Since no version for the public API has been set before, should we just
> start at v1?
from a technical point of view this absolutely makes sense on first sight.
However as Thomas mentioned it also rises the overall complexity without
really offering a clear benefit beside logical correctness.
I also think that only to base the compatibility question of the public API is
jumping too short. There are a number of reasons:
- most apps actually use more than just the public API currently
- there are dependencies beside API version compatibility (markup structure,
redirection behaviour, style rules structure)
So either the mechanism would have to consider more aspects in the info.xml to
have a clean solution (far too complex, so unrealistic) or there are gaps in
the solution (then why do it this way?)
Since there is no clean solution from a technical point of view things should
be kept as simple as possible. The only thing that really needs to be changed
is the current blocking effect of inevitably having all apps broken for longer
periods around the release dates of new major versions.
In addition, simply changing the logic at that point seems ok to me currently.
The current logic is primitive and leads to the effect that right now all apps
specify exactly one single major version number. A /current/ major version
number, which ever they target to. It should be save to turn around the logic
as Thomas wisely suggested without actually breaking an app:
* tag 'requires': the app relies on features only present from this major
version, so installing it on older OC installations makes no sense and will
almosst vertainly break things. New: no restrictions for future versions.
* tag 'compatible': the app is guaranteed to be compatible with the specified
major version. The absence of this specification is interpreted as 'not
compatible'.
This specification could also allow more detailed settings: for example
<compatible>4.5</compatible> would make the app usable in the announced
intermediate version without that is has to be declared compatible to the
4.0.x series as <compatible>4</compatible> would do. Questionable though if
this enhancements offers enough benefits to justify its additional complexity.
* implicit compatibility: an app is always considered compatible to the
version specified in 'requires'.
Both tags can be combined this way and the mechanism is backwards compatible.
It would be a cleaner solution to combine both tags inside a container
'compatibility' for an enhanced readability, this would also enable easy
future extension in case it turns out to be neccessary.
However this means breaking the current syntax.
--
Christian Reiner (arkascha)
[ foss at christian-reiner.info ]
More information about the Owncloud
mailing list