Unfortunately the lack of documentation for the ZODB does not reflect its maturity, robustness or feature set. The documentation is scattered. Most of the information is outdated. Many best practices have been learned over the past 10 years. There has not yet been a concerted effort to generate and maintain ZODB documentation. This initiative is set on fixing the first step, generating documentation. The following topical overview is a draft of what material may be covered:
- Introduction to ZODB.
What it is. Maybe some bits about the NoSQL craze, how the ZODB has been doing that for more than 10 years. When is the ZODB a good fit for your app? - Your first ZODB application.
A short chapter dealing with installation and running the first app. - A more complex application.
A bit more involved explanation of how it works and a more useful sample application. - Basic indexing and searching.
The Catalog and indexes. I might use the repoze stuff, which is somewhat simpler. - A more in-depth look at the ZODB internals.
A little more information about how the ZODB works. At least enough stuff to understand the later chapters about storages and debugging. - ZODB Storages.
Details about the FS storage and discussion of RelStorage and maybe DirectoryStorage. - Other indexing and searching strategies.
Other catalog implementations, third party indexes and using external indexing solutions, like Solr. - Advanced ZODB.
Evolving objects and other problems...not really sure about this one yet. - The debugging FAQ: frequent problems and suggested solutions.
General debugging strategies and then a FAQ with common problems. - Scaling.
The ZODB cache, ZEO and replication services. - Maintenance.
Packing, backups, etc.
Update: Jim Fulton has volunteered to technically review the book!
Individuals and organizations can contribute and will be recognized for their contribution in the following ways:
- A printed version available on Amazon will have their name and/or logo's in the book.
- The ZODB website will provide links to their website.
- Their contribution will be documented in the main ZODB documentation and will permanently reside in the documentation.
- $20-149, Individual Name
- $150-399, Company Name
- $400-999, Company Name + Logo + URL; link on ZODB.ORG
- $1000-2499, Company Name + .5 page "spread"; link on ZODB.ORG
- $2500-, Company Name + full page "spread"; link on ZODB.ORG
- Provide a modern unique logo/design for the ZODB project
- We hope to flush out and clarify the meaning of all public interfaces and methods in ZODB source docstrings.
- A Creative Commons licensed PDF will be available.
- Put the new book online at zodb.org
- Possibly provide a hard copy published on Amazon.
The next steps:
- Register the paypal account to take contributions.
- Send email to various mailing lists and companies using ZODB soliciting donations
- Get Carlos writing!
Some topic ideas:
ReplyDelete- Standalone ZODB (using it without Zope 3/Zope 2, just barebone ZODB)
- ZEORaid
Not a topic, but one more:
ReplyDeleteConflict resolution and what's behind that.
I suggested a few topics in https://mail.zope.org/pipermail/zodb-dev/2010-May/013311.html but they are already covered.
ReplyDeleteI only wish the book would focus exclusively on zodb since I do not use zope or plone and these systems are sufficiently documented.
We are using ZODB with Django in our company. We are the developers of the django-zodb (http://triveos.github.com/django-zodb/) and make a small donation to the project (our company is small and we do not have revenue yet).
A topic that I'd like to see in the book is techniques to debug errors that occur on transaction commit: this kind of errors is a PITA to debug because when the exception triggers the bad code has been already executed and is thus hard to find. For instance if I attach a function object to a persistent object all goes fine until the transaction is committed, and a "TypeError: can't pickle function objects" exception is raised.
ReplyDeleteYou know what would be nice is if you guys did something like optilude did for his laptop so we can see how close to goal you are. I think he used ChipIn http://www.martinaspeli.net/
ReplyDeleteThanks for the feedback.
ReplyDeleteRegarding scope:
No talk of Zope, Plone, or any web application will be the focus of the ZODB book. At least that is my understanding. This will be focused purely on ZODB, persistent, transaction libraries.
Debugging/Tips n Tricks:
I think this is absolutely critical section. How to debug unexpected mutation of persistent objects. How to debug transaction failures. There are many others.
Regarding donations:
We are trying to reuse the infrastructure we have as a company to reduce overhead for taking donations.
Solicitation to all experienced developers:
If you are a experienced developer drop me an email. I will add you to this blog and you can write about your ZODB experiences. Post recipes. And help contribute. Hopefully your post will be inspiring or pulled into the book as a whole (and credit you for the work ;).
Please add a title to this post, feed validators are complaining ...
ReplyDeleteIf the objective is to raise awareness and establish legitimacy among the minds of the NoSQL friendly who are not aware of ZODB or Python object databases, perhaps a brief mention of "other implementations" of the ZODB concept might be worth noting.
ReplyDeleteThere is at least one other - Durus, a ZODB work-a-like. Durus is a Python object database modelled after ZODB but minus some of its complexity. IMO that Durus was even written is a testament to ZODB.
http://www.mems-exchange.org/software/durus/