[Framework-Team] package syndication: practical problems + possible solution
Johannes Raggam
raggam-nl at adm.at
Tue Apr 8 18:45:59 UTC 2014
thanks Jens, for the comments. I didn't want to start this discussion on
plone-dev. the topic is old, many arguments already stated. and i didn't
want to start a flame, which stops development on this PLIP. i just
wanted to re-think it again and hear your opinion.
the missing controlpanel shouldn't be a problem for plone.app.event,
actually, as long as there are registry entries.
and timo, i didn't mean to merge plone.app.event, .contenttypes or the
like. of course they should stay separate.
see you later, johannes
On Tue, 2014-04-08 at 16:58 +0200, Jens W. Klein wrote:
> Hi FWT,
>
> Johannes asked me to comment on this. Usally I'd prefer this on the
> developers list, but I dont x-post anyway. Feel free to move it over.
>
> On 2014-04-07 23:15, Johannes Raggam wrote:
> > Hey FWT,
> >
> > I want to share a problematic experience with the Python-package
> > syndication effort, the https://dev.plone.org/ticket/13283 PLIP.
>
> Base idea is good, but imo it does not solve the core problems.
>
> > At wine/beer sprint we moved plone.app.event's timezone vocabs to
> > plone.app.vocabulary, because we found that generally useful and worth
> > to be used elsewhere.
>
> This makes sense i.e. to stick the correct timezones to the effective date.
>
> > Then we moved plone.app.event's controlpanel to P.CMFPlone, because it
> > just does datetime related settings, not necessarily specific to the
> > calendaring framework plone.app.event.
> >
> > Now, the current refactored plone.app.event 2.0 branch, which somehow
> > depends on newest p.a.vocabularies and P.CMFPlone, cannot easily be used
> > in Plone < 5, just because of the dependency on CMFPlone.
>
> Changes in p.a.vocabularies we're made carefully and are tested in Plone
> 4.3 and Plone 5 coredev buildouts. So this package can be used in both
> worlds. The ``plone.app.vocabularies.AvailableTimezones`` vocabulary
> finds both the old p.a.event controlpanel settings and the new ones for
> which i created a pull request here
> https://github.com/plone/Products.CMFPlone/pull/203
> If theres no p.a.event installed in 4.3 the vocabulary wont be
> registered at all (because of a zcml:condition).
>
> > With the package syndication effort, we might give up some inter-version
> > compatibility of selected packages like plone.app.event, and others,
> > just because other dependencies like p.a.controlpanels cannot be
> > released independently from CMFPlone anymore.
>
> This is true, but otoh we have at the moment way too many packages. I
> must admit I did not much work on the core in the last years, esp. in
> the 4-series.
>
> At wine and beer sprint I was a bit shocked about how many packages we
> have and how many dependencies are there. Even for small changes one
> have to touch often three packages.
>
> If there would be a exact dividing rule and clean dependency chain
> between packages this would make sense. But at the moment it feels more
> like an uncontrolled package mesh than a directed graph. Would be funny
> to visualize that.
>
> > SOLUTION (?)
> >
> > That would actually be different, if we don't do these refactorings like
> > the controlpanel one, but merge the package namespaces into another
> > umbrella namespace, just called "plone.app", and refactor the packages
> > to not have any code in it's __init__.py, which is a requirement for
> > these namespace packages to work. That would also be less work, than
> > refactoring everything into CMFPlone. Also, for backwards compatibility,
> > individual packages/namespaces can still be released independently.
> >
> > Makes sense?
>
> Is this the solution here? I dont think so. Just changing how we deal
> with namespaces wont help.
>
> I think the solution is moreover to move the stuff to the place it
> belongs too. plone.app.controlpanel is a good example here: It can be
> moved entirely to Products.CMFPlone.controlpanel and all is fine.
>
> There are more difficult cases like the code around dexterity and plone
> base content handling:
>
> - plone.dexterity, plone.app.dexterity, plone.supermodel,
> plone.app.*field, plone.app.*behavior plone.app.fieldsets, ...
>
> - plone.content, plone.app.content, plone.folder, plone.app.folder, ...
>
> Do we need them all? Do we really need want to have division line
> between content and folder, basic stuff and plone specific? So who plans
> i.e. to use plone.folder not in plone? (I'd say nobody) It makes things
> difficult to understand, difficult to find in code, difficult to
> document and difficult to maintain. Two packages would imo be enough:
> One for the dexterity stuff inlcuding supermodel and one for all base
> type framework things. Any, just my 0.02 €. We need to think about this
> carefully, but it would save time in future we could invest to solve
> other problems.
>
> Other ideas:
> - move plone.app.vocabularies entirely to
> Products.CMFPlone.vocabularies. since these are named utilities there
> would be almost zero impact on other packages.
>
> - merge z3c.caching, plone.caching, plone.app.caching and
> plone.cachepurging
>
> - merge plone.portlets, plone.app.portlets, plone.app.layout.portlets
>
> - merge plone.app.viewletmanager, plone.app.layout.viewlets, ...
>
> - Cleanup the monkey-patchy swamp around Products.PlonePAS: get rid of
> Products.PlonePAS and put the monkey patches in place where they belong
> to: Products.PluggableAuthService and the additional features in
> Products.CMFPlone. PlonePAS was made at a time where PAS was new and
> optional. I think we wont ever go back to the default userfolder.
>
> Downside: all the current namespaces are in heavy use. We would b
> reak to mcuh or would have a whole bunch of BBB code/ imports around.
> But we would have a big cleanup.
>
> regards Jens
--
programmatic web development
di(fh) johannes raggam / thet
python plone zope development
plone framework team member
mail: office at programmatic.pro
web: http://programmatic.pro
http://bluedynamics.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.plone.org/pipermail/plone-framework-team/attachments/20140408/0d6cacce/attachment.asc>
More information about the Framework-Team
mailing list