[dev] Horde 5 was: Re: [commits] Horde branch develop updated. fa956a4d83a7227e2a5d47bfe87185854e151fbc

Gunnar Wrobel wrobel at horde.org
Mon Feb 20 11:26:37 UTC 2012





Jan Schneider <jan at horde.org> schrieb:

>
>Zitat von Michael M Slusarz <slusarz at horde.org>:
>
>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>
>>> Quoting Michael M Slusarz <slusarz at horde.org>:
>>>
>>>> Re-setting this discussion, since I don't even know where we are  
>>>> at.  Here's what I see:
>>>>
>>>> * Notifications and Alarms setup HAVE to be cached going forward.  
>
>>>> Nobody has proven to me that these changes broke anything, or are  
>>>> not BC.
>>>>
>>>> The only thing that has changed (that I can see) in the  
>>>> notification/alarm code is as follows:
>>>> - Applications are only initialized once per session.
>>>> - Non-authenticated apps are initialized (or initialized before  
>>>> the entire Horde framework is initialized).
>>>
>>>> The first shouldn't be an issue (and is the whole reason for the  
>>>> change).  The second is NOT A BC BREAK!  Not only was this  
>>>> behavior not documented, and thus not part of the API, but this is 
>
>>>> how we did things at the release of Horde 4.
>>>
>>> I stand by my earlier statement - this *IS* a BC break. How can it  
>>> not be? If Core is updated, existing application functionality  
>>> breaks. It doesn't much matter what any documentation does or does  
>>> not say - a user is only going to care that their synchronization,  
>>> or some custom application that uses RPC access is broken.
>>
>> You are still wrong.  It is NOT a BC break.  Just because KRONOLITH  
>> is incorrectly using the API does not make anything in Core wrong.
>>
>> There are only 2 ways you can break backward compatibility:
>>
>> 1. You explicitly change an API element.  We all agree that is not  
>> the case here (these changes don't change what a method either  
>> accepts or returns).
>> 2. Alternatively, it could be argued that in the absence of a  
>> clearly-defined API, you change some critical system as it was  
>> performed hen 4.0 was released.  As already described, in 4.0 the  
>> defined behavior is that non-authenticated applications would have  
>> init() called BEFORE the full Horde environment was created.
>>
>> To reiterate: init() is solely a bootstrapping function to allow  
>> enough of the application environment to be setup so that it could  
>> be accessed by the Registry.  That's all it was ever designed to do. 
>
>>  As amply shown, it was never guaranteed to have the full Horde  
>> environment (this is why authAuthenticateCallback() exists).
>>
>>> For instance, the Ansel uploader plugins for iPhoto and Aperture  
>>> rely on existing RPC behavior. If initializing the share system of  
>>> applications when accessed via RPC is broken (which is currently  
>>> is) - these uploaders will be broken too.
>>
>> If Ansel is not following the limitations described above, then the  
>> correct fix is to fix Ansel.  There's nothing wrong with Core - just 
>
>> how Ansel uses Core.
>>
>> As far as versions - this is the whole point of package.xml.  Will  
>> the next version of Kronolith 3.x require Horde_Core 1.6.0 (or  
>> whatever the next release is)?  Yes.  That's just the reality of the 
>
>> situation.
>>
>> Can you upgrade Horde_Core without upgrading Kronolith?  No.  But  
>> that's also the reality of the situation.
>>
>> Imagine this scenario: MIME encoding of an address.  Let's say an  
>> application parsed the results of an encode for the quoted-printable 
>
>> signature to determine if the message was encoded, and performed an  
>> action based on the encoding status.  In a future version of the  
>> MIME library, it was decided to change quoted-printable encoding  
>> into binary encoding.
>>
>> This change would "break" the existing application if the library is 
>
>> updated but not the Application.  But this is not a BC break.  This  
>> is an example of an application making incorrect assumptions about  
>> the API.  Nobody could possibly argue that we would have to maintain 
>
>> the old way of MIME encoding just because a downstream application  
>> won't be able to handle it properly.
>>
>>>> We switched to only checking authenticated apps in this commit, a  
>>>> week after Horde 4 was released:
>>>>
>>>> commit dcdd9f52eabc7cd8df5b2ea661097effe039833e
>>>> Author: Michael M Slusarz <slusarz at curecanti.org>
>>>> Date:   Thu Apr 14 23:48:24 2011 -0600
>>>>
>>>>   Bug #9733:  Don't setup notification handlers in applications  
>>>> that are not yet authenticated
>>>
>>> Which is a change you committed after commenting that you didn't  
>>> know why we were polling unauthenticated apps for notifications.  
>>> What changed with the documentation of the API since then that  
>>> makes the earlier behavior more appropriate?
>>
>> Because this was a broken assumption.  This prevents  
>> non-authenticated applications from setting notification handlers,  
>> which is perfectly acceptable under the original API (as it should  
>> be).  So the original bug-fix was flat wrong.
>>
>>>> Thus, if Kronolith has been initializing things in _init() that  
>>>> aren't working because the Horde session itself is not fully  
>>>> initialized, KRONOLITH IS BROKEN AND MUST BE FIXED (in 3.0 also).  
>
>>>> FYI: this is the whole reason for the authAuthenticateCallback() - 
>
>>>> to do things that require the ENTIRE Horde framework to be  
>>>> initialized.
>>>
>>> Another issue to consider is that rpc requests initialize Horde  
>>> with authentication => 'none' (we delegate authentication to the  
>>> Rpc classes), and when I attempted to refactor things using this  
>>> callback, it was *never* called from rpc requests.
>>
>> This seems like a limitation in the Registry_Application API then  
>> that was not contemplated before Horde 4 came out.  Sounds like you  
>> will have to manually do Authentication checking in Kronolith.  Or  
>> add a new method that is called in this situation.  But you can't  
>> hijack the init() function to do something it wasn't supposed to do.
>>
>>
>> I'll be honest: revisiting this kind of BC discussion/argument is  
>> exactly what I was fearful of a year ago.  This adherence to BC is  
>> the single biggest problem of Horde, as it has been for the last 10  
>> years.  I have had preliminary thoughts of forking IMP for precisely 
>
>> this reason so I could avoid all this headache.  I spend way too  
>> much time worrying about these sorts of issues - something like  
>> releasing versions of IMP that require the latest version of all  
>> required components would eliminate a tremendous amount of wasted  
>> time for me.  There's a bunch of stuff that I have wanted to do, but 
>
>> have not been able to because of these limitations.  Not my  
>> intention to sound combative, but it accurately portrays the  
>> frustration I have felt the last few months.  Or maybe my goals are  
>> simply diverging from others'.
>
>While I'm still with with Mike in this discussion, we don't seem to be 
>
>able to come to a conclusion.
>
>When we discussed the new release model for Horde 4, one of the  
>important points was indeed that we don't want to fear breaking BC if  
>we consider it necessary to go forward. I say we have reached this  
>point, and instead of spending too much time in such discussions and  
>causing frustrations, we should make the next release Horde 5.
>I already considered to bring this up before this thread started,  
>because if we really manage to get the new design in place for the  
>next release, this would probably be a large enough change for the end 
>
>users that it warrants and a new major version, even if we didn't  
>break BC.
>
>If everyone could agree to this, let's go forward with Horde 5 

+1 from the developers point of view.

Does it make sense to send a quick heads up to the main Horde list to ask if there are any concerns if we switch to 5?

> (and  
>let's quickly update any conference, paper, article applications that  
>mentioned 4.1).

I'm not that concerned about those. In everything I wrote 4.1 has been described as a big step. If that is 5.0 now this does not take away anything. We can add a sentence about it in the initial press release.

Cheers,

Gunnar

>
>Jan.
>
>-- 
>The Horde Project
>http://www.horde.org/
>
>
>-- 
>Horde developers mailing list
>Frequently Asked Questions: http://horde.org/faq/
>To unsubscribe, mail: dev-unsubscribe at lists.horde.org

--
Core Developer

The Horde Project

e: wrobel at horde.org
t: +49 700 6245 0000
w: http://www.horde.org

pgp: 9703 43BE
tweets: http://twitter.com/pardus_de
blog: http://log.pardus.de


More information about the dev mailing list