I"m putting together a checklist of review items for selecting a particular Python library, and would appreciate some feedback.
The idea is to have a list of items (beyond the core focus of the library) to help make decisions, especially when there might be multiple alternatives with various tradeoffs. Here's my initial cut of the list:
= Python Library Evaluation Checklist =
* Python versions supported - oldest, latest * Python 3 support - native or via 2to3 ? * External library dependencies (beyond standard library) * Maintenance and activity status
* Are there unit tests ? * Is is documented ? * Are there docstrings ? * Part of a larger library * Part of a another framework * Use of C extensions * Compatibility with threads and/or multiprocessing
* Unicode compatibility ? * Licensing and distribution terms ? * Packaged or source install ? * Installable with pip ? * Installable with easy_install ? * Listed in the Cheese Shop * Supported platforms
* Platform restrictions
Michael Pittaro wrote:
> = Python Library Evaluation Checklist =
> * Part of a larger library
> * Part of a another framework
Seems like an obvious addition to the above:
* Which other applications use it?
In case of non-pure Python extensions it may be useful to know if there
are ready-made binary versions for the platforms you care about. If
there are not, it may indicate that the platform is under serviced.
I would extend the maintenance and activity status to mention how old
the library is, list number of active developers, if there is more than
one entity behind the developers, and how large a portion of the
developers are being paid to work on it. Some of this information may
not always be available, but it can be helpful in determining long term
viability and bias of a project.
It could also be helpful in determining how many of the active
developers have other projects they have contributed significantly into
in the past, or are contributing in currently. There are some people who
are widely respected for their work. So if you use one library and are
happy with, and find another library by the same author(s), it counts
like a strong point in favor.
On 11/08/2011 04:07 PM, Michael Pittaro wrote:
> I"m putting together a checklist of review items for selecting a
> particular Python library, and would appreciate some feedback.
Some things I look for when evaluating a project:
*) What's the user community like? Is there an active mailing list or
forum? Are the folks there helping each other, or are they all whining
or begging the developer for help and fixes?
*) Is there a public bug tracking system, and is somebody actually doing
something with the bugs that are filed?
*) Where does the project stand in google search results compared to
other roughly equivalent projects. If there are a million hits for
project X, and 100,000 for project Y, that gives you an indication of
relative uptake, which, if taken with a very large block of salt, can be
a good indication of the strength of the project.
*) Is there an ecosystem developed around it -- plugins, add ons,
These are more applicable as you scale up to projects and frameworks,
but they are still valid for large or popular libraries (sql alchemy,