The road to hell is paved with good intentions.

This is a series of articles about four regrettable decisions we made when we designed PyMongo, the standard Python driver for MongoDB. Each of these decisions made maintaining PyMongo painful for Bernie Hackett and me, and confused our users.

I describe the motivations behind these decisions and try to find the moral of the story: that is, some design principle that will guide you from the road to hell when you make choices for your own project.

The Regrettable Decisions: