Hi Guys,

I would obviously want to avoid branches, as long as they are not really needed.

Alistair, looking again at your proposal, I must disagree even harder ;-)

Right now, (as of 16 days ago), Zinc builds cleanly into Pharo 7 and 8, that is 
absolute requirement for me. Of course, it might/will override some changes in 
Pharo 8 that were not yet synced back. That is on the todo list. If one of 
those changes is absolutely critical to you, we can add it quickly (syncing the 
change back, in small chunks). That does require that it also works on older 
Pharo versions, that there are comments, tests. Up to now, I have always 
managed to make this work.

What is your particular problem ?

Sven

> On 5 Jan 2020, at 03:14, Tudor Girba <[email protected]> wrote:
> 
> Hi,
> 
> Would introducing branches in Zinc to deal with the different versions of 
> Pharo not be an option?
> 
> Cheers,
> Doru
> 
> 
>> On Jan 3, 2020, at 2:48 PM, Alistair Grant <[email protected]> wrote:
>> 
>> Hi Sven,
>> 
>> On Fri, 3 Jan 2020 at 12:36, Sven Van Caekenberghe <[email protected]> wrote:
>>> 
>>> Alistair,
>>> 
>>> Thanks for the write up, it is useful.
>>> 
>>> However, the general situation with the relationship between Zinc HTTP 
>>> Components and Pharo 8 (or its most recent version in development) is often 
>>> difficult.
>>> 
>>> For me, as author and maintainer of Zinc HTTP Components is had been very 
>>> hard to follow the changes in the latest Pharo and to keep syncing/merging 
>>> them back.
>>> 
>>> Especially since some changes are not backwards compatible with Pharo 7 
>>> (the latest stable) and the previous ones (let's say 6 and 5). For me and 
>>> most users that is unacceptable: HTTP is way too important to not maintain 
>>> it properly. The problems with source code file access were an example of 
>>> that, luckily Pablo reacted super fast.
>>> 
>>> Another point of friction for me are the many cosmetic changes that were 
>>> applied, often using automatic means. They do not contribute much 
>>> (functionally), but cause lots of trouble (to merge, check, validate).
>>> 
>>> Normally, years ago, Zinc was synced into Pharo trunk regularly (like every 
>>> 6 months or so). However, this has not happened for a long time. Why ? 
>>> Because I have too much work syncing/merging everything back first.
>>> 
>>> So I have to put time in this, but it won't happen soon - too much other 
>>> work.
>>> 
>>> Some more comments inline.
>>> 
>>>> On 3 Jan 2020, at 11:34, Alistair Grant <[email protected]> wrote:
>>>> 
>>>> Hi Sven,
>>>> 
>>>> Following on from a discussion I started in Discord development...
>>>> 
>>>> Loading Zinc SSO in Pharo 8 currently causes problems because the Zinc
>>>> packages in core Pharo 8 are out of sync with your repository
>>>> (specifically 
>>>> https://github.com/pharo-project/pharo/commit/45b7de2b6c901112be04230faba485a2f69ebb1e
>>>> caused problems for me).
>>> 
>>> Hmm, I guess I missed that one, but I would of course see it when trying to 
>>> merge back.
>>> 
>>>> I was able to resolve the issue by modifying
>>>> BaselineOfZincHTTPComponents>>baseline: to remove all references to
>>>> the packages that are now part of core Pharo 8:
>>>> 
>>>> BaselineOfZincHTTPComponents>>baseline: spec
>>>>  <baseline>
>>>>  spec for: #common do: [
>>>>      spec baseline: 'NeoJSON' with: [ spec repository:
>>>> 'github://svenvc/NeoJSON:v17/repository' ].
>>>>      spec baseline: 'XMLParser' with: [ spec repository:
>>>> 'github://feenkcom/XMLParser:v0.6.1/src' ].
>>>>      spec baseline: 'XMLWriter' with: [ spec repository:
>>>> 'github://feenkcom/XMLWriter:v0.6.0/src' ].
>>>>      "spec project: 'XML Support' with: [ spec className:
>>>> 'ConfigurationOfXMLSupport'; repository:
>>>> 'http://www.squeaksource.com/MetacelloRepository' ]."
>>>>      spec
>>>>          package: 'Zinc-AWS';
>>>>          package: 'Zinc-REST' with: [ spec requires: #('NeoJSON') ];
>>>>          package: 'Zinc-WebSocket-Core';
>>>>          package: 'Zinc-WebSocket-Tests' with: [ spec requires:
>>>> 'Zinc-WebSocket-Core' ];
>>>>          package: 'Zinc-SSO-OAuth1-Core' with: [ spec requires:
>>>> #('NeoJSON') ];
>>>>          package: 'Zinc-SSO-OAuth2-Core' with: [ spec requires:
>>>> #('NeoJSON') ];
>>>>          package: 'Zinc-SSO-OpenID-Core';
>>>>          package: 'Zinc-SSO-Demo' with: [ spec requires:
>>>> #('Zinc-SSO-OAuth1-Core' 'Zinc-SSO-OAuth2-Core'
>>>> 'Zinc-SSO-OpenID-Core') ];
>>>>          package: 'Zinc-SSO-OAuth1-Tests' with: [ spec requires:
>>>> #('Zinc-SSO-OAuth1-Core') ];
>>>>          package: 'Zinc-SSO-OpenID-Tests' with: [ spec requires:
>>>> #('Zinc-SSO-OpenID-Core') ];
>>>>          package: 'Zinc-WebDAV';
>>>>          package: 'Zinc-WWS-Server';
>>>>          package: 'Zinc-WWS-Client'.
>>>>      spec
>>>>          group: 'AWS' with: #('Zinc-AWS');
>>>>          group: 'WebDAV' with: #('Zinc-WebDAV');
>>>>          group: 'WebSocket' with: #('Zinc-WebSocket-Core'
>>>> 'Zinc-WebSocket-Tests');
>>>>          group: 'SSO-OAuth1' with: #('Zinc-SSO-OAuth1-Core'
>>>> 'Zinc-SSO-OAuth1-Tests');
>>>>          group: 'SSO-OAuth2' with: #('Zinc-SSO-OAuth2-Core');
>>>>          group: 'SSO-OpenID' with: #('Zinc-SSO-OpenID-Core'
>>>> 'Zinc-SSO-OpenID-Tests');
>>>>          group: 'SSO-Demo' with: #('Zinc-SSO-OAuth1-Core'
>>>> 'Zinc-SSO-OAuth2-Core' 'Zinc-SSO-OpenID-Core');
>>>>          group: 'SSO' with: #('SSO-OAuth1' 'SSO-OAuth2'
>>>> 'SSO-OpenID' 'SSO-Demo' 'Zinc-SSO-Demo');
>>>>          group: 'WWS' with: #('Zinc-WWS-Server' 'Zinc-WWS-Client');
>>>>          group: 'REST' with: #('Zinc-REST') ]
>>>> 
>>>> 
>>>> This isn't directly usable by you since it replaces 'XML Support' with
>>>> XMLParser and XMLWriter and it would break Pharo 7.
>>> 
>>> I don't think using feenk repos is a solution
>> 
>> That's why I wrote that it isn't directly usable - it references
>> feenk, which will obviously have to be removed, and it is Pharo 8
>> specific, more on that below.
>> 
>>> , especially since Torsten did official ports of the XML stuff. I would 
>>> then certainly not use a old metacello configuration in squeak source, but 
>>> would go to all GitHub/Tonel.
>>> 
>>>> But if we modified it to put in checks for Pharo 7 vs Pharo 8 it would
>>>> somewhat future proof the code against changes made in core Pharo 8.
>>> 
>>> Like I said, I really want to support two versions back (so today 7 and 6).
>> 
>> I think what I'm proposing would support this.  To expand a bit more,
>> the idea is to have:
>> 
>> baseline: spec
>>   <baseline>
>> 
>>   SystemVersion current major <= 7
>>       ifTrue: [ self baseline7: spec ]
>>       ifFalse: [ self baseline: spec ]
>> 
>> 
>> baseline7: would be the existing baseline.  The new baseline: would be
>> changed to remove all the references to the packages in core Pharo 8
>> (similar to the example above, but without the feenk references).
>> 
>> 
>>> I would like that Pharo code developers that make changes to Zinc/Zodiac 
>>> packages at the very least acknowledge and be careful of the fact that Zinc 
>>> exists outside of one particular Pharo image and has to support some older 
>>> versions.
>> 
>> This obviously isn't a panacea, but it will at least reduce the impact
>> of some changes made in the pharo-project repository.
>> 
>> I'm happy to submit a PR if you agree,
>> 
>> Cheers,
>> Alistair
> 
> --
> feenk.com
> 
> "Every successful trip needs a suitable vehicle."
> 
> 
> 
> 
> 
> 
> 
> 


Reply via email to