This records my list of ideas that need to be turned into proposals:
Conflict resolution
o Do conflict resolution on client
o Do conflict resolution at application level
o Component-based approach
The benefits:
o Don't require application code on server
o Provide access to real states (e.g. no persistent placeholders)
Time-traveling connections
- Leverage the recent loadBefore protocol to allow connections to database in past.
Delta storage
- Generalized version of demo storage
- Wraps 2 storages, one for "base" data, one for changes.
- Use loadBefore on base storage so can be used with changing storages like ClientStorage?.
Redo ZEO using Twisted
- More robust network framework, especially at the basic level.
- More testable. Twisted application code doesn't touch sockets and can be tested without creating sockets, threads, and processes.
- Simplify zrpc implementation. (Maybe consider Twisted's RPC framework.)
- Get SSL support for free.
Compressed storages
- Compress on ZEO clients
- Decompress on server when necessary for GC
More packing options
- No GC
Multi-DB GC (separate from pack)
ZODB Security model
- Simple access control as base (read/write/share)
- Extensible with server-side authorization extension
- As storage adapter that tracks authentication and authorization data
- Allows untrusted clients
Update event model
GUI apps need some sane way to be notified when objects change.
Variation is to allow dedicated listening processes that do things like update indexes.
Saner configuration defaults.