Announcement: Merge-freeze Wednesday to Sunday

Tomorrow (Wednesday, October 16) we plan to merge Python 3 support into Plone. Please do not merge anything until Sunday, October 21 to allow us some time to clean up and polish afterwards!
From now on all pull-requests for Plone 5.2 must work in Python 2.7, Python 3.6 and Python 3.7 and the pull-request-jobs in jenkins must be green for all three versions. We will make sure that the relevant jenkins-builds can be triggered for each pull-request and are triggered after each merge.

Other changes:

  • The coredev buildout is refactored to accomodate supporting python 2 and 3 (see https://github.com/plone/Products.CMFPlone/issues/2593)
  • alltests and test-groups are being removed from the coredev
  • Archetypes is deprecated. It can be pulled in by adding the extra [archetypes] to Products.CMFPlone when running in Python 2.7
  • A wsgi-setup is added to the coredev by default. It works in python 2 and python 3.

Thanks you!
Philip

This is part of the preparation for Plone 5.2:

10 Likes

Short update :whale:

  • All Python 3 related branches of Plone core packages are merged back to their master.
  • Some packages in zopefoundation repository still need some love before merging back (primary housekeeping work).
  • we still need to update Zope to the latest 4.0b7 release
  • JenkinsCI setup and mr.roboto are changed to work with multiple python versions.
  • test are green (most of the time :wink: ) https://jenkins.plone.org/
  • buildout.coredev got a large overhaul. Now we have 2 buildout cfgs there:
    1. Python 3 with a WSGI server (./bin/wsgi) without Archtypes,(AT)
    2. Python 2 with a WSGI-server w/o AT (./bin/wsgi), Zserver w/o AT (./bin/instance) and a ZServer instance with AT (./bin/instance-archetypes).

So, our Merge-Fest goes on. But we made more progress today than expected!

Freeze phase is still up!

5 Likes

3.6 and 3.7?

That'll require addressing the shutdown issues we have with ZODB 5.4.0?

awesome! it would be very nice if someone can write documentation explaining to n00bies (like me) how to run Plone 5.2 in Python 2.7 and Python 3.7 so we can start testing our add-ons for compatibility ASAP.

I plan to add a Travis build just after the first alpha release.

Yes

I don't think that's a hard requirement but there is progress in https://github.com/zopefoundation/ZODB/issues/208. I think Track down all implications of the `__repr__` changes of Zope objects · Issue #2547 · plone/Products.CMFPlone · GitHub is more important.

Checkout buildout.coredev and then run ./bootstrap-py2.sh XOR ./bootstrap-py3.sh. Don't use both in one checkout. In order to share one builodut.coredev with two actual pythion versions, have a look at the simple wrapper I created at GitHub - collective/coredev52multipy: Plone Coredev for 5.2 with Python 2.7 and 3.6 support in one. (just run bootstrap.sh).

Or just rm -rf src/* and rebuildout when switching. Requires way more in the way of patience than keeping two clones around, though.

I think I'm going to wait for the release as it will be very complicated to set this up in Travis right now.

You don't need to. You can share eggs and src between both (python3 uses the __python__ folders for its byte-code files). I think the database is more the problem. Probably two different var folders should work. But I never tested it.

Yes, both.