[ZODB-Dev] Spatial indices / zodb standard library
Nitro
nitro at dr-code.org
Wed Jun 16 14:00:30 EDT 2010
Am 16.06.2010, 17:55 Uhr, schrieb Jim Fulton <jim at zope.com>:
> On Wed, Jun 16, 2010 at 11:45 AM, Nitro <nitro at dr-code.org> wrote:
> ...
>> Would it make sense to add a default spatial index to ZODB?
>
> No.
>
> Which isn't to say that a spatial wouldn't be a good idea. It just
> doesn't need to be part of ZODB. While it isn't an urgent priority,
> in the future, I want to make ZODB smaller.
>
> We have a packaging system. We don't need no stink'n batteries
> included. :)
I agree with you about separating ZODB and an indexing package on the
technical level.
I was more referring to the semantical level. What I miss a bit in the
zodb/zope/plone world is a focus on certain packages. Usually there are
1-10 packages for a given task maintained by different people. In most of
the cases this is a plain waste of resources. Time could often be better
spent by picking a good default package and then collaborating together to
improve it.
Imo this also applies to ZODB. During my current zodb related work, I've
come across a number of useful or interesting packages:
- indexing: zcatalog, zcatalog standalone, IndexedCatalog
- spatial indexing: zgeo.spatialindex, Quadtree
- searching/relations: gocept.objectquery, dm.incrementalsearch ,
zc.relation, zc.relationship, gocept.reference
- storage history: zc.beforestorage, dm.historical, [zc.vault]
- schema evolution: repoze.evolution, zope.app.generations
- types: zc.blist, PersistentList, OOTreeSet, zc.queue
- there are probably more duplicates...
- many useful packages like zc.zodbgc which have no duplicate
Each time I have to go and read through all the documentation (if there is
any decent documentation) and then decide if I will use it or not. Often
the differences are minor. Sometimes I just stumble across the packages
just by accident. Sometimes stuff is out-of-date. Rather often the
packaging system breaks, because the .eggs are broken/outdated. Why do I
have to accidentally discover that there's a zc.zodbgc module to pack
cross reference databases if zodb core allows me to create cross
references? What indexing package do I choose? Is that package now for
zope, plone or zodb?
In my opinion it would make sense to have a ZODB core package and then a
second package which installs all the commonly used modules. Just like
python is not very useful without the standard library. I know the modules
in pythons standard library are good, tested and maintained. Many people
use them, I can find docs and help.
The zodb standard library should have a default package for
indexing/searching. One for basic data types like lists, sets and trees.
One for managing history, ... .
The zodb standard library should then be endorsed by this list/maintainers
so everybody knows where the focus is. And so I knows who's working on
which things, so I can possibly collaborate with people. The excessive use
of packages (on the semantic level) splits a small developer community
into even smaller pieces and makes collaboration hard to impossible. Imo
this is also one of the reasons for zodb's weak documentation.
For a start the standard library could be a package which pulls all
commonly useful, up-to-date 3rd party packages into one place.
Please don't take this as a bashing of any sorts, after all I am still
using ZODB. I just wanted to show you my thoughts after a few weeks in the
zodb/plone universe and hope they can be used in a constructive way.
-Matthias
More information about the ZODB-Dev
mailing list