The final teardown

After writing so many teardowns in tests for software projects for customers, open source projects and in house software, it is now time for the gocept folks to finally work on a last teardown of the company itself. After 23 years of existence gocept will close the doors and stop operating business at 2023-11-30. The developers found a new home at the wonderful company Minddistrict. There we will work in a product team and build software to empower people to take care of their mental well-being.

Customers

We want to thank all our customers for their trust in us over the years and for the often multi year long collaboration. Sometimes gocept was a bit on the bleeding edge of technology and often that was shining through in the development work. But we did our best to provide the individual software applications to the needs of our customers.

Open Source Software

It was in the very essence of gocept to work with open source software. The company grew with Zope and contributed to the Zope ecosystem. Out of this relationship many events were supported like DZUG-Tagung, a EuroPython Conference and in particular in the last years a round of Zope sprint to ensure compatibility and stability in the Python 3 wonderland. We are very happy, that Minddistrict also builds its core product on zope.* packages and that we can further contribute to the open source world.

Most of the gocept.* packages on https://github.com/gocept have been archived or given to the people and companies, that still use them. In case you need to work with them, please contact mail@gocept.com or the respective maintainers on PyPI. We will be able to unarchive the package and if necessary transfer the release rights.

gocept folks

Some parts of gocept already left the company in 2014 and formed https://flyingcircus.io/. They are more successful than ever providing a very good and individual hosting and, more important, operation solutions for bigger applications and complex setups. They took over the dedication to software and to new technology, and they are good colleagues to work with.

The remaining 4 developers at gocept join the Minddistrict company and will work there in a bigger team to empower people to take care of their mental well-being in the Netherlands, in Germany and the DACH-region. We will still keep an office in Halle, so there might be a chance to stop by.

The last Christian of gocept (in a row of many) will continue his management work within the Saltlabs and the Koffij – with the mission to develop modern, contemporary and flexible workplaces in Halle and build communities that motivate and offer pleasant working environments.

gocept.cleanup()

In case you need anything or want to reach us, please find us on GitHub (or the place to be in the future) or write an email to mail@gocept.com.

Ready, set, sprint: Earl Zope invites again

Sprint with Earl Zope at September, 21st and 22nd of 2023.

Earl Zope is already a long time inhabitant of the Python 3 wonderland. Living here for some years with the help of his friends, he sometimes looks back to the “good old times” but mostly enjoys his current live with all its surprises and unexpected turns.

Gocept invites you to sprint for Earl Zope’s future well-being: 21st till 22nd of September 2023 in the SaltLabs of Halle, Germany. Participants of the sprint are also invited to join the gocept-23 party at 23rd of September 2023.

This sprint will the last one hosted by gocept as the company will go new ways by the end of the year. To join please register via meetup.com. (After registering for the sprint, you’ll get the party invitation.)

Presentation: We have nearly one million lines of Python 2 code in production — and now?

Still running Python 2 code in production is like steering a ship without radar in thick fog: You don’t know, which obstacle you will hit next. But there are ways to see the sun again – even for large code bases. This presentation contains a discussion of the possible ways and a success story.

I have been giving the presentation at

  • Python Web Conference 2020 and
  • EuroPython 2020.

If you did not manage to see the presentation at one of these conferences, you will find now:

Maybe this helps you with your next migration project to the Python 3 wonderland. If you have questions – we are here to help with such migration projects.

We have nearly one million lines of Python 2 code in production – and now?

How to successfully migrate a Python 2 project to Python 3.

Still running Python 2 code in production is like steering a ship without radar in thick fog: You don’t know, which obstacle you will hit next. But there are ways to see the sun again even for large code bases.

I am Michael Howitz and I am going to present a talk at Python Web Conf 2020 on this topic.

In this talk I will show possible approaches for a Python 3 migration of existing Python code running on Python 2.7. I will evaluate which of these approaches seems suitable for a large code base and which principles should be paid attention to to increase the probability of a successful migration project.

I am going use union.cms (a content management system used by German trade unions) to show the story of a successful migration of a project with nearly one million lines of Python code. The story will include the obstacles we encountered and what we learned on the way.

I believe that most of the discussed ideas in the talk and experience can also be used unchanged in smaller projects as the presented principles are very much the same.

The talk is scheduled at 1:00 – 1:45 pm ET (UTC -4h) on Friday, June 19th. (That’s 7:00 pm in MEST (UTC+2)).

To see the talk live on your device, join Python Web Conf 2020 now.

Zope May sprint goes remote

Earl Zope was inviting to the Zope May sprint, from 13th till 15th of May, 2020. He was hoping for many volunteers to come. Due to restrictions to prevent spreading of COVID-19 (Corona) this sprint is going to be remote-only. – By now all of the organizers and their families are fine, so you do not have to worry about us.

This remote-only sprint will be an experiment. We already gathered some experience with remote work, communication and planning. But we neither participated at nor organized a remote-only sprint.

We will prepare channels for communication and collaboration for this sprint. Stay tuned for details. Earl Zope will appreciate your help.

As even a remote-only sprint needs preparation, please join via Meetup, so we are able to see, who we can count on to help Earl Zope in Python wonderland.

Zope May Sprint

Earl Zope has settled down for a good while in Python 3 wonderland. He made friends with the inhabitants and other immigrants. He enjoys his new live.

The sunset of his original homelands took place as predicted by the beginning of January 2020. As Earl Zope was well prepared this was no longer a frightening date for him.

But even living in Python 3 wonderland is not only joy and relaxing. The Python 3 wonderland changes in a more rapid speed than the Python 2 land ever had before: Each year a new policy has to be fulfilled (aka new Python version release). Additionally it is time to drop the last connections to the old Python 2 land to ease the transformation in Python 3 wonderland to make developers and consumers happy.

Earl Zope is grateful for all the help he already gained: There where several Zope 4 releases and a first Zope 5 alpha version was just released. Even though Earl Zope still needs your help to:

  • prepare dependencies to ease transition to new Python versions (aka make repositories more uniform to ease updating to new Python versions.)
  • drop Python 2 support in repositories of dependencies
  • support and test with newer Python 3 versions (aka current 3.9 alpha)
  • improve and update the documentation

You are invited to the “Zope May sprint” located in Halle/Saale, 🇩🇪 from 13th till 15th of May 2020 hosted by gocept. 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.

Update: This sprint will be held als a remote-only sprint. Details see Zope May sprint goes remote.

Undo transactions by truncating ZODB Data.fs

truncate can be used to permanently set back a ZODB Data.fs to a certain point in transaction history.

Sometimes I break the Data.fs of my ZODB in a way that the Zope instance cannot start any more or I want to try again a migration. In such situations it is handy that writing to a Data.fs means extending the file at the end. So the unwanted transaction can be truncated. Normally I use the following steps to do so:

1. Install ZODB in a virtualenv

This is needed to get the script named fstail. If you are already using Python 3, call:
python3.7 -m venv v_zodb

If you are still on Python 2, call:
virtualenv-2.7 v_zodb

Caution: The Python major version (2 or 3) must match the version you are using for the Zope instance.

Install the script into the virtual environment using:
cd v_zodb
bin/pip install ZODB

2. Stop Zope and ZEO

Stop both Zope and (if used) the ZEO server. This is necessary for your cut to get noticed by client and server.

3. Find the position where to cut

Call fstail. With -n you are able to specify the number of transactions to be shown:
bin/fstail -n 20 path/to/Data.fs

fstail returns something like the following. Newer transaction are at the top: (These lines here are only some extracted from a longer output.)

2019-04-24 08:38:44.622984: hash=0b59c10e6eaa947b2ec0538e26d9b4f9128c03cb
user=' admin' description='/storage/58bdea07-666c-11e9-8a63-34363bceb816/edit' length=19180 offset=12296784 (+97)
2019-04-24 08:38:06.823673: hash=3a595fb50b913bad819f0d5bd8d152e06bc695d7
user=' admin' description='/portal/site/add-page-form' length=132830 offset=12121677 (+58)
2019-02-26 10:28:10.856626: hash=5b2b0fbc33b53875b7110f82b2fe1793245c590b
user=' admin' description='/index_html/pt_editAction' length=444 offset=11409587 (+54)

Using the provided information in user and description you should be able to find the transaction from which on newer transactions should be removed. You need the provided value after offset= to do the cut.

In my example above, if /portal/site/add-page-form is the faulty transaction, my cut point is 12121677.

4. 3, 2, 1 … cut

Caution: Every transaction after the cut point (including the one you took the offset from) will get removed by cutting.

Get a truncate tool of your choice. I am using here one of Folkert van Heusden which comes with MacPorts and claims to be command-line compatible with the (Free-)BSD version.

In my example I would call it using:
truncate -s 12121677 path/to/Data.fs

That’s all. Start ZEO and Zope again to be back in transaction history where you have cut.

References

Celebration: Zope 4 final release

TL;DR: Zope 4 beta phase ended, final version released!

After hard, long years of preparation Earl Zope now finally made it to get a permanent license for the Python 3 wonderland: In September 2016 almost 20 people started with the reanimation of Zope at the Zope Resurrection sprint. This marked the beginning of a wonderful journey for Earl Zope himself for the people who helped him. In August 2017 Earl Zope became aware that his Python 2 country will irreversibly be destroyed by 2020. Earl Zope was successfully applying for for a beta permission for the Python 3 wonderland in September 2017. This beta permission has been extended 9 times to give Earl Zope time to become a good citizen in his new home country.

Earl Zope says a big thank you to all who:

  • contributed to the Python 3 migration even before the resurrection sprint
  • wrote bug reports
  • fixed bugs
  • contributed time and/or money for the migration process
  • encouraged the developers
  • tested beta versions or even used them in production

To be welcome in the Python 3 wonderland many nuts had to be cracked:

  • porting of the code of Zope and its dependencies to Python 3
  • rewrite of RestrictedPython from scratch
  • develop a migration strategy for the ZODB contents aka Data.fs
  • polish the user interface of the Zope management interface (ZMI)
  • and many more…

Earl Zope is looking forward to a happy future in the Python 3 wonderland. Currently he did not yet give up his settling in the Python 2 land. This is planned to happen shortly before or after the Python 2 sunset in the beginning of 2020 when the son of Earl Zope IV becomes the new Earl Zope V. See the roadmap for details.

See the documentation how to install Zope. It also documents the migrations steps.

Zope Spring Cleaning: Last minute information

As the beta permission of Earl Zope in Python 3 wonderland was extended in October 2018, gocept invites Zope developers to the upcoming sprint from 08.05. till 10.05.2019 in Halle (Saale), Germany, to continue together on the work, which is still left.

We aim to polish the last dusty spots on Earl Zope for the final permission to Python 3 wonderland aka the final 4.0 release. As Plone and other applications based on Zope have finally found a way to migrate a ZODB Data.fs created with Python 2 to Python 3, the obstacles for this final permit are almost gone.

So if you have questions concerning migrating databases, it is a good time to join or open an issue on GitHub. As many people are working on Zope during these days, the probability of a quick answer is high.

As organizational tool to coordinate the work, we use GitHub projects again, as it allows cross-repository tracking of issues.

Our current schedule:

  • Wednesday
    • 8:15 Breakfast at gocept kitchen
    • 9:00 Welcome at gocept office and start sprinting afterwards
    • 12:30 Lunch
    • 13:30 Happy sprinting
    • between 15:00 and 16:00 coffee break
    • 18:00 Lights out
    • Going to a local pub
  • Thursday:
    • 8:15 Breakfast
    • 9:00 Standup
    • 12:30 Lunch
    • 13:30 Happy sprinting
    • between 15:00 and 16:00 coffee break
    • 17:00 A game of boules if the weather permits it
    • Going to a local pub
  • Friday:
    • 8:15 Breakfast
    • 9:00 Standup
    • 12:30 Lunch
    • 13:30 Happy sprinting
    • 15:00 Closing meeting
    • 16:00 Lights out

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.

One last hint: The location of the sprint is Leipziger Str. 70, Halle (Saale), Germany.

Zope spring cleaning sprint

The last year before the sunset of the Python 2 land has begun. Earl Zope feels relatively well prepared to live in the Python 3 wonderland.

Some issue are still open which are required for the final permission to stay in Python 3 wonderland:

  • test and improve ZODB migration
  • update the documentation
  • fix some glitches in the visual appearance of Earl Zope
  • fix some issues occurring while working together with other residents of the Python 3 wonderland

We invite you, to join forces for three days in May at Saltlabs in Halle and keep on developing good (database) migration stories for various Zope projects, you might have. So bring your Data.fs and let’s port it to Python.

Sprint information

  • Date: Wednesday, 8th until Friday, 10th of May 2019
  • Location: Leipziger Str. 70, Halle (Saale), Germany

Registration

Please join us via Meetup.