zopefoundation / cipher.encryptingstorage

ZODB storage wrapper for encryption of database records
Other
5 stars 8 forks source link

Future Python 3.7+ Compatiblity, Interest, Support ? #6

Closed riker1 closed 7 months ago

riker1 commented 4 years ago

(Earl) Zope has matured and can now safely handle the new world of Python 3.

The now-COVID19 universe has created a scenario/need/use-case/requirement of data encryption at all stages of the transaction process. My work involves the world of higher-ed. We're using Plone + (encryptingstorage) and my colleague's custom addon as a DMS.

Plone 5.2.1 + encryption storage has essentially been a killer-app for us. Our central IS office is struggling to implement something in FileNet and Oracle (yikes!). We've already got uptake, usage, and people working remotely and able to serve their constituencies.

--

Encryptingstorage is working very well for the most part but my concerns are as Py3K ages and coverage for the older versions fade (3.6 for example) are surprises going to occur? A lot has changed since the last 3 years a commit has been made.

--

I see that there are many components/dependencies that go into this storage implementation. They were tested (3+ years ago) on 3.4,3.5, and 3.6 (kmi, zlibstorage, webob, zope.component, etc). I'm using 3.6.9 on Ubuntu LTS 18.0.4.4 till that expires.

I think encryptingstorage is a very good story for both Zope and especially Plone. I'd like to help make this a better-known feature etc.

jugmac00 commented 4 years ago

Just a couple of random thoughts of a fellow Zope user:

jugmac00 commented 4 years ago

I'm not a programmer per se, are the codebases for the dependencies and core components worth investing the time in making them further compatible?

If you rely on this package and thus on the dependencies, only you can say whether it is worth investing the time. Sometimes it is hard to tell in advance how much effort you'd have to invest. So think about the alternatives.

Is there anything that depends on that pesky zope.tempstorage for example? Old problems/new problems? Does moving to waitress create issues?

Can't say anything about tempstorage, but I do not understand the waitress thing. When I understand you correctly, you are running your app on Python 3 already, so there is no more ZServer, so you already use waitress or another wsgi server. So there is no more move.

Is there any interest in seeing what breaks/works etc with newer python?

Well, obviously there is interest for those using this package - and currently it looks like there are not many users. Instead of reporting a breakage or a warning from your local environment, I guess the way to go is as I outlined in the last comment - create a tox.ini and try to add support for newer versions.

I think encryptingstorage is a very good story for both Zope and especially Plone. I'd like to help make this a better-known feature etc.

I would love to read a blog article or in general more blog articles about best practices and use cases.

d-maurer commented 4 years ago

...

  • Is there anything that depends on that pesky zope.tempstorage for example? Old problems/new problems? Does moving to waitress create issues?

tempstorage is typically used to store Zope sessions. There are long standing problems with it (aggravated with new ZODB releases). Those problems causes Plone a long time ago to replace its use of Zope sessions (by cookies). Thus, a stock Plone (wthout extensions) should not be affected.

Typical users will have no problems with waitress. Users which used special ZServer functionality (e.g. its protocal support for FTP) are affected (but someone is working on a ZServer reimplementation based on modern Python 3 libraries (asyncio)). In addition, some (advanced) functionality has been moved out of Zope and dumped into ZServer (even though it does not belong there) such as signal handling (and formerly WebDAV support). Likely, you will not be affected; and if affected, then the git repository allows to resurrect the code.

...

  • IMHO, I think that Because of the move to Waitress in Plone 5.2.x, you seem to not have to worry about specifying webob, zope.component, or paster versions which is great.

I do not see any reason why the move ZServer -> waitress should affect this.

jugmac00 commented 4 years ago

I set up a quick and dirty tox.ini locally, and yes, there seems that some work to be done, at least for Python 3.8 +.

  py36: commands succeeded
  py37: commands succeeded
ERROR:   py38: commands failed

Tests on Python 3.8:

Total: 564 tests, 3 failures, 0 errors and 0 skipped in 1 minutes 58.470 seconds.

Who migrated your application from Python 2.7 to Python 3.6? Or did you create this application on Python 3 directly?

icemac commented 4 years ago

I tried to activate weekly builds on TravisCI but I failed. To find out if feature is currently broken on TravisCI I created https://travis-ci.community/t/adding-cron-jobs-currently-broken/8147.

mgedmin commented 4 years ago

I added a weekly build in https://travis-ci.org/github/zopefoundation/cipher.encryptingstorage/settings: Ekrano nuotrauka iš 2020-04-14 19-34-50

It is building now.

FWIW if anyone wants to use cipher.encryptingstorage in production, I would recommend that you hire a cryptographer to audit it first (and keas.kmi, especially keas.kmi).

riker1 commented 4 years ago

Who migrated your application from Python 2.7 to Python 3.6? Or did you create this application on Python 3 directly?

I gave up on Py2.7.x as soon as Mr. Bauer and his army made Zope and Plone Py3 ready. It also helped that we used Future and 2to3 as well to migrate our existing add-ons.

Must plug my humble boss, colleague, and friend who's been familiar with Zope since pure CMF days and also note that PloneCLI + Dexterity has really made content types much easier to design.

icemac commented 1 year ago

@riker1 Is this issue still relevant or can it be closed?

riker1 commented 1 year ago

You can close.

I have been able to use the package with the latest Python 3.8.11 + Plone 5.2.10, & Volto.

icemac commented 1 year ago

@riker1 Please see the discussion in https://github.com/zopefoundation/meta/issues/193. Do you currently actively use this package, so we should keep maintaining it?

dataflake commented 1 year ago

@icemac The question is misleading. "we" is undefined. I am sure you're not offering perpetual support for this specific package, correct?

icemac commented 1 year ago

Sorry for not being precise enough. "We" is the Zope community, especially the users of this repository. I see my personal role as a release manager: cutting releases, trying out new versions of dependencies + fixing small problems occurring during the process and managing the zopefoundation projects. This also includes archiving projects which are no longer relevant for the community.

So the question is actually: Can this repository be archived because it is no longer used?

riker1 commented 7 months ago

@icemac & @dataflake apologies for taking forever to reply. I can't speak for others (are there any?) in the community, but we're migrating off of this in favor of using encryption possibilities available within PostgreSQL using RelStorage.

icemac commented 7 months ago

@riker1 Thank you for your reply. I am going to archive this repository in the next couple of days. (Archiving is not permanent, it can be undone if someone wants to work on this repository again, currently I see no broader interest.)