[ZODB-Dev] SpatialIndex
Nitro
nitro at dr-code.org
Mon Jun 28 16:27:06 EDT 2010
Am 28.06.2010, 20:31 Uhr, schrieb Shane Hathaway <shane at hathawaymix.org>:
> Around here, Python packages are how we communicate code. Think of a
> released package as a well-refined email. If you choose not to release
> packages, you are really choosing not to communicate through the
> established channels, so many people will not hear you. If you want the
> largest possible audience to hear you, you should release packages, just
> like you should use version control and bug trackers.
The communication failed for me. I don't want to be communicated code.
That's a technical detail I am not interested in. What I want to be
communicated is "which package is important? which package is reliable?
what's the standard solution?". The packaging system does not deal with
this level of information. It allows to download and install files in a
complicated way, that's all. The best I get is a "score" on PyPI.
So I've "heard" all the packages and their authors on why their package is
great. Just imagine what will happen if the moderate package count of < 50
zodb packages raises to 250. Do you want to listen to each one one of
these "communication packages" before actually getting started on your
real work?
Whereas a communication channel like this message list is much more
effective for this thing. E.g. Laurence told me Standalone ZCatalog is
basically a left over from older days. I can get a vague impression of
this of the last release date on the package page, but I still don't know
about the "new" or the standard solution. Just give me the bread, don't
make me figure out which flour there is and which kind of flour I need.
A standard library signals "This is the preferred way to do it. Look here
if you need reliable stuff. This is the standard solution.". I'll trust it
and take it. If I want to contribute something I'll contribute it to the
standard library as I know my efforts are not in vain. My code is
compatible with other people's code using the standard library.
E.g. the C++ STL made communication between coders much easier, finally
everybody is using std::vector and friends so I can understand code at a
glance and don't have to delve into the peculiarities of how everybody
rolls his own vector, list or array class. This also increased
interoperability between libraries.
Btw, I use different vcs, bug trackers and also package my things. I just
highly prefer staying away from any "package system". Give me a single
file including everything, I'll install it and it will just work. Make me
resolve all the conflicts and dependency issues of a .rpm file and I might
get cranky :-)
> The packaging system works a lot better than you think it does. You owe
> it to yourself to learn Buildout, which solves the package versioning
> problem you ran into. In my experience, the ecosystem of packages we
> have now is actually a good deal better than the Python standard library.
I did not run into a package versioning problem. Different packages were
outright broken. The .eggs were missing some meta-files and installed dlls
into the wrong places on windows. The ratio of broken packages I
encountered is probably around 10%. But these 10% take up 90% of my time.
A lot of these problems could have been detected and resolved sooner if
the packages had more users. The more users, the less serious problems.
You get more users per package by not spreading users over similar
packages.
The current "healthy ecosystem" is neither healthy nor a system. It's a
pile of random packages with no semantic meaning. Some good in there, some
crap. Very hard for me to find my way through it. Not organized by
criteria I am interested in.
I do not gain a lot from buildout. Almost all recipes are geared towards
plone/zope/web development. Neither of which I am involved in. In fact I
have my own build system based on SCons which also use to build C++
libraries, docs and more.
ZODB is a general python object database with a much wider audience than
just plone. It suits desktop applications just as well as applications
you'd normally use twisted and pickle for. Forcing all those zope
dependencies like buildout on people does not add to the attractiveness of
ZODB for users outside zope. Having indices only in plone does also not
make sense. Many applications would benefit from keyword, field,
full-text, spatial, younameit indices. Yet extracting individual packages
from zope/plone is impossible due to the slew of dependencies. While I can
accept a dependency like zope.interface I don't accept a lot of the
others. It really prevents ZODB from living up to its full potential in
non-plone applications.
-Matthias
More information about the ZODB-Dev
mailing list