union.cms is a content management system which was once developed on Zope 2. It was one of the early adopters of the Five technology: Using Zope 3 components in Zope 2. Now it is one of the proud early adopters of Zope 4. It is used as CMS for large organisations.
The porting of union.cms to Zope 4 was not that hard because union.cms does not use things from the dirty corners of Zope 2 which have been cleaned up in Zope 4.
Zope 4 is still in its late beta phase, this required more intense testing. There where no critical problems found before the launch. After launch we had an increased number of
ConflictErrors which required a deeper investigation. But even this problem was solvable in a fair amount of time so it does not hurt the editors working daily with the CMS. (Details see Zope#413.) The users even claim it is running faster.
union.cms currently runs live to Zope 4 although it still uses Python 2.7. We are working hard to port it to Python 3. The launch is planned for the end of 2019.
Zope 4 comes with ZODB 5 which seems to be a big step from ZODB 3 which is used in Zope 2. There were no migration steps necessary besides using the current versions of ZODB and ZEO as union.cms still runs on Python 2.7. Upgrading to Python 3 will require a migration of the database contents. This migration is the last blocker before Zope 4 will get a final release.
Now it’s time to celebrate that the beta version of Zope 4 can be used for actual projects in a live environment. 🎉
Earl Zope was hoping to get the final permission for the Python 3 wonderland on the Saltlabs Sprint in Halle last week. He has made good progress in settling down:
- Zope claims compatibility with the newest Python standards (Python 3.7).
- Earl Zope now has new cloths for his administrative interface (called ZMI) as shown on the image above.
- Zope is playing nicer together with Prince Plone who is also migrating to the Python 3 wonderland
- Documentation got improved and at least partly updated to Zope 4.
- Zope got some other bug fixes.
But this was not enough for the immigration authorities to give Earl Zope the final permission. The following was missing:
- a working and proven story how to migrate Earl Zope’s treasures stored the
There was good progress towards this goal but it could not be fully reached. So gocept will have the honour to host another sprint maybe in May next year.
The new beta licence has the id
4.0b6 and can be achieved and used as described in the Zope documentation.
Earl Zope is now nearly settled down in Python 3 wonderland. On the Zope and Plone sprint from Monday, 1st until Friday, 5th of October 2018 in Halle (Saale), Germany we will work towards the final Zope 4 release aka the final permission for the Python 3 wonderland.
We are currently 33 participants for the sprint. So be prepared for a huge sprint with many interesting people. The Saltlabs have a café (called KOFFIJ) we can use, a big meeting room with big display (aka the Thronsaal) and many smaller rooms including the offices of gocept. So there will be enough room to work in bigger and smaller groups.
To keep the organisational overhead low with this amount of participants, we plan to separate in two teams: Zope and Plone. Those teams will organise themselves individually and we will have a short daily meeting after lunch to share the status in a condensed manner with the other team. Direct communication in case of a difficult problem is, of course, always possible.
We reserved up to one hour after the daily meeting for talks and presentations by you about interesting topics around Zope and Plone, successful migration stories, or something else you want to share with the community. So if you have some interesting slides, please bring them with you and register during the week for a slot.
Our current schedule:
- 19:00, there is a table reserved at Grober Gottlieb, so if you’ve already arrived and want some company, you are invited to join.
- 9:00 Breakfast at KOFFIJ (This is the café in the ground floor of Saltlabs aka the window to the left on the picture above.)
- 10:00 Welcome at KOFFIJ and start sprinting afterwards
- 12:30 Lunch
- 13:30 Sprint planning and introduction for all sprinters at Thronsaal
- between 15:00 and 17:00 coffee break at KOFFIJ
- 18:00 Lights out
- All other days:
- 8:30 Breakfast
- 9:00 Standup in the team (Zope, Plone)
- 12:30 Lunch
- 13:30 Daily meeting at Thronsaal
- 14:00 (Lightning) Talks at Thronsaal
- between 15:00 and 17:00 coffee break at KOFFIJ
- 18:00 Lights out
- 11:00 till 17:00 Massages, there will be a list to register on Monday
- 19:00 social evening at Eigenbaukombinat (local hacker space) with pizza, beer and mate
- 13:30 Closing meeting with presentations at Thronsaal
- 17:00 Lights out
If you cannot make it to the Welcome meeting, ask at KOFFIJ for one of the gocept staff to get a personal introduction.
Parking: As Saltlabs in located in a pedestrian zone, the availability of parking spots is rather low. Please use one of the parking decks nearby.
As organizational tool to coordinate the work, we try to use Github projects this time, as it allows cross-repository tracking of issues.
One last hint: The location of the sprint is Leipziger Str. 70, Halle (Saale), Germany.
After Earl Zope II is now nearly relocated to the Python 3 wonderland, gocept will move to a new head quarter in the next months. This is the right time to celebrate with a new sprint, as we have now even more space for sprinters. The new location is called the “Saltlabs”, a place for IT companies in Halle (Saale), Germany.
- Date: Monday, 1st until Friday, 5th of October 2018
- Location: Leipziger Str. 70, Halle (Saale), Germany
This sprint has three main topics:
Create a final Zope 4 release
Before releasing a final version of Zope 4 we want to resolve about at least 40 issues: Some bugs have to be fixed, some functions have to be polished and documentation has to be written resp. reviewed. On the other hand there is the re-brush of the ZMI using Bootstrap which should be completed beforehand, as it modernizes the ZMI and allows for easier customisation, but might also be backwards incompatible with certain test suites. There is an Etherpad to write down ideas, tasks, wishes and work proposals, which are not currently covered by the issue tracker.
Port Plone to Python 3
The following tasks are currently open and can be fixed at the sprint:
- successfully run all Plone tests and even the robotframework tests on Python 3
- Zope 4 lost the WebDAV support: find resp. create a replacement
- document the WSGI setup and test it in a production ready environment
- port as many as possible add-ons to Python 3 (e.g. Mosaic and Easyform)
- work on the Migration of ZODB contents (
Data.fs) to Python 3
- improve the test setup with
- start to support Python 3.7
Polish Plone 5.2
The upcoming Plone 5.2 release will appreciate some love and care at the following items:
- new navigation with dropdown and better performance
- Barceloneta theme: ease the customisation and improve responsiveness
- parallelise the tests so they run faster
- remove Archetypes and other obsolete packages
See also the list of topics on plone.org for this sprint.
In order to coordinate the participation for this sprint, we ask you to join us on Meetup. We can then coordinate the catering and requirements for space.
As this sprint will be running longer than usual (five days), it is also possible to join only for a part of the week. As October 3rd is the national holiday, we are trying to organise some social event for those who are interested in having a small break.
For a better overview, please indicate your participation also on this doodle poll.
Earl Zope already got the beta permission to stay in the Python 3 wonderland some months ago. His current objective is to help old friends to come to the Python 3 wonderland and to make new friends. He has to build trust in his will and ability to stay in the Python 3 wonderland.
The Zope-4-Welcome sprint last week was a great opportunity to work towards the final permission for Earl Zope. We were a group of 15 developers from different companies and backgrounds building applications on Zope in various ways.
We accomplished the following goals:
- There are some old friends of Earl Zope. He thought that he no longer needs them in the Python 3 wonderland but other applications built on Zope need them, so they were pushed towards the new land:
- Knight RestrictedPython got some love and a new beta release.
- Earl Zope could help an old friend (a custom Zope 2.13 application) to get prepared to move to the new land.
- Duchess CMFCore got a beta permission for the Python 3 wonderland including her beloved siblings:
- Prince Plone is not yet ready to live in the Python 3 wonderland but he is already a welcome guest. It is only a matter of time before he will get an alpha permission:
- The instance starts and many actions in the UI work pretty well.
- The test story was brought some steps further so it is possible to start testing Plone under Python 3.
- Details are described in a Blog post of Philip Bauer.
- The migration of a toy
Data.fs was tested and successfully completed. (Details will follow in another blog post.) The Migration took the following steps:
- from Zope 2.13 on Python 2.7
- via Zope 4 on Python 2.7
- to Zope 4 on Python 3.6
- The ZMI of Earl Zope got a facelift (Zope#249) which is not complete yet but looks promising.
- And last but not least Earl Zope himself got the 5th extension of his beta permission: Zope 4.0b5.
Earl Zope says a hearty thank you to all who where involved in this sprint in Halle or remote by coding or providing the resources and time to code.
Welcome in the Python 3 wonderland!
Once upon the time there was Earl Zope II. A wise guy was telling him that his world will come to an end. He found out that this was true that he had only some years to prepare to immigrate to the Python 3 wonderland.
His preparation was successful: He got past the strict immigration check and has now a beta permission to stay in the Python 3 wonderland. Earl Zope really likes his new home, but he is missing some friends. Most of them are still at the border of Python 3 wonderland and have to go through the immigration process. Earl Zope would be pleased to offer the same service to his friends as in the old Python 2 land.
To get the final permission to stay in Python 3 wonderland Earl Zope needs to build up trust in his abilities and his stability by other inhabitants and old friends. Therefore, he has to show, that he can work with old and new friends in the Python 3 wonderland.
Zope 4 Welcome sprint – 16th until 18th May 2018
Earl Zope invites you to join a sprint with some helpful people to welcome Zope 4 and his friends in Python 3 wonderland. This means: Bring in your Zope 2 based application and we look together how to port it to Zope 4 or even Python 3. That’s why we call the sprint “Zope 4 Welcome sprint”. You can also help by posting issues or even pull requests about your migration attempts.
Additionally we look forward to work on an improved version of the ZMI (Zope Management Interface) and to fix some bugs preventing Earl Zope from getting the final permission.
The sprint will be located in Halle (Saale), Germany. We meet there from Wednesday, 16th till Friday, 18th of May 2018. Please join us via Meetup even if you are planning to work from remote. You will find more detailed and updated information about the sprint there, too.
If you cannot access the root level in Zope 2 via the browser but you are able to use the debug console you have enough to undo transactions.
Start the debug console:
$ bin/zinstance debug
List the transaction descriptions, user names and ids of the last 10 transactions:
>>> from pprint import pprint
>>> pprint(app._p_jar.db().undoInfo(0, 10))
(0 is the youngest transaction, the first one to show)
Undo some transactions:
>>> import transaction
>>> transaction.get().note(u"Undo transactions: ...")
>>> app._p_jar.db().undoMultiple([id1, id2])
(id1, id2 have to be the actual id strings from the transaction listing.)
- Use a sorted list of transaction ids, start with the id of the youngest transaction you want to undo.
- You cannot undo transactions those objects were changed again later without undoing those transactions, too.
- The actual undo is executed when calling
transaction.commit(). (This might take some time to execute.)
- You can check the result of your undo using the transaction log as undo only creates an inverse transaction.
This blog post first appeared on icemac15.wordpress.com.