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