[dev] ZODB5/ZEO5 release plan is it stands today

Jim Fulton <[email protected]>
Newsgroups gmane.comp.web.zope.zodb
Message-ID <CAPDm-FhT3pkd5MDO1ih44_VugFtke+9CfEumt07NXJzACqoe9g@mail.gmail.com>
ZODB5 will use storage loadBefore rather than load to load data.  This
makes the load logic simpler and easier to reason about.  It will also
simplify the ZEO5 server implementation, and will likely allow
RelStorage to be simplified in the long run.  This change is inspired
by the way NEO works.

I plan to make a ZEO 4 release that works with ZODB4 and ZODB5.

Unfortunately, RelStorage as it stands now won't work with ZODB5.
Some of us plan to fix that. There's a RelStorage pull request to fix
it to work with ZODB5 that I hope will be reviewed soon.

In the longer term, I expect that ZODB5 will allow us to make a much
simpler version of RelStorage.

ZEO5 replaces asyncore with asyncio, and also simplifies the
implementation, especially on the client. This will include a number
of enhancements:

- SSL

- Certificate Authentication

- user-name/password authentication (over SSL)

- client-side conflict resolution,
https://github.com/zopefoundation/ZEO/wiki/Client_Side_Conflict_Resolution

- Optional alternate message-serialization formats for the ZEO
protocol.  Initially, this will probably include support for msgpack.
This will make it a little easier to have non-Python clients. A long
term goal is to remove the dependence of ZEO servers on pickle.

- Remove full client-cache verification

- Python 2 support. :)

It will also drop support for the the existing ZEO authentication
protocol. Sorry.

As far as releases go:

- ZEO 5 ClientStorage will require ZODB5. It will be able to work with
ZEO5 or ZEO4 servers.

- ZEO5 servers will require ZEO5 clients.

So to update to ZEO5, you'll update clients, then update servers.

Current status:

- There's a pull request for ZODB5:
https://github.com/zopefoundation/ZODB/pull/56

  It has been reviewed. There will be a few minor tweaks.  It will be
merged and released soon.

- There will be some changes to ZEO to work with ZODB5.  The biggest
is: https://github.com/zopefoundation/ZEO/pull/23 There will be a
couple of smaller ones after that and then I expect to make a new ZEO
4 release, followed by a ZODB5 release.

- There's a PR for implementing ZEO clients with asyncio,
https://github.com/zopefoundation/ZEO/pull/21

- I'm working on a PR for implementing ZEO servers with asyncio.

These 2 PRs are rather large and daunting to review. :(  It would be
really great of someone stepped up to review them.  I think it would
be OK to focus on the non-test parts of the PRs.

There will be follow-on smaller PRs for SSL, authentication,
client-side conflict resolution, etc.  You can expect some alpha and
beta releases.

I've done an initial spike implementing ZEO clients with Trollius and
Python 2.7. https://github.com/zopefoundation/ZEO/tree/trollius
Initial results are encouraging. I'm 93% sure this will work.  I'm
using a very small part of the asyncio/trollius API.  Also, from the
Trollius docs:

"Since the Trollius is used for some projects in the wild, Trollius
will not disappear. You can only expectminimum maintenance like minor
bugfixes. Don’t expect new features nor synchronization with the
latest asyncio."

I think this will probably be enough to get us to 2020. :)

Jim

-- 
Jim Fulton
http://jimfulton.info

-- 
You received this message because you are subscribed to the Google Groups "zodb" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.