[dev] [commits] Horde branch master updated. 760524934f11365acac54b36a4ced40996062ebe

Jan Schneider jan at horde.org
Wed Oct 23 07:27:05 UTC 2013


Zitat von Michael J Rubinsky <mrubinsk at horde.org>:

> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>
>> Quoting Jan Schneider <jan at horde.org>:
>>
>>> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>>>
>>>> Quoting Jan Schneider <jan at horde.org>:
>>>>
>>>>
>>>>> This doesn't necessarily mean that we aren't allowed to bump a  
>>>>> major version of a library inbetween major releases of Horde. If  
>>>>> for example Horde_Imap_Client 3.0 would have been ready for IMP  
>>>>> 6.2, we could release it, and make it a requirement in IMP. The  
>>>>> problem is, and that's a good example of the general problem of  
>>>>> decoupling libraries from Horde major versions: Since 3.0 is API  
>>>>> incompatible to 2.x, *all* apps and libraries of  
>>>>> Horde_Imap_Client would have to be updated to the new API.  
>>>>> Otherwise users of, say IMP and Horde_ActiveSync cannot upgrade  
>>>>> at all.
>>>>
>>>> I would argue against this. It's a very dangerous precedent to  
>>>> set. With Horde_Imap_Client, we might be able to get away with  
>>>> every library that uses it also upgrading to the new API, but  
>>>> that can lead down a very slippery slope - every one of those  
>>>> libraries would need to be major version bumped too, making a  
>>>> large number of our libraries potentially not API compatible  
>>>> withing the same major version.
>>>
>>> Why? Just because a library uses a different major version of  
>>> another library, doesn't mean that it has to bump its major  
>>> version too.
>>
>> True. I guess I was assuming that the API of the new library would  
>> change to for some reason. Obviously this is not correct.
>
> This is what I was thinking of:
>
> Horde_Imap_Client is bumped to 3.0, and IMP is updated to require  
> it. This breaks the API for Imap_Client. Horde_ActiveSync is not  
> updated, and remains at version, let's say 2.4.0. The user updates,  
> but since Horde_Imap_Client does not depend on Horde_ActiveSync (nor  
> does IMP), we can't enforce a new Horde_ActiveSync minimum version  
> so the upgrade proceeds. The system now has an installation that has  
> a working IMP, but a completely broken ActiveSync implementation -  
> with no obvious reason to the user why.
>
> Horde_ActiveSync OPTIONALLY requires Horde_Imap_Client (up to, but  
> not including Horde_Imap_Client 3.0), but the opposite is not true.  
> Will pear block the installation if the dependency is optional?

Yes.

> Of course, Horde_Core OPTIONALLY requires both of these libraries as  
> well. I'm sure we could figure out a combination of dependency  
> changes in Core and/or IMP that would force this to work, but that's  
> not the point. The point is that some libraries have an optional,  
> one way, dependency that may not block an installation from  
> proceeding. Or will pear block the upgrade if the dependency is  
> optional?

It does.
-- 
Jan Schneider
The Horde Project
http://www.horde.org/



More information about the dev mailing list