blob: 30b38167bb662505b5d29ea0165f39000b198931 [file] [log] [blame]
Design Guide
============
Make the obvious way the right way
----------------------------------
A developer coming to a new-to-them project should be able to quickly learn the
correct way to interact with a project's code, and the "path of least
resistance" should also be the correct way to make changes to a project.
Build on the shoulders of giants
---------------------------------
Another way of saying this is: "Avoid reinventing the wheel".
If there is (acceptably licensed and maintained) code out available out there
that could be used to accomplish a task, consider using it.
External Dependencies
---------------------
Upstream code changes over time, and you should design your projects to be able
to deal with this change.
Lifecycle
"""""""""
Testing against new versions
''''''''''''''''''''''''''''
You should embrace tools that allow you to test against upgraded dependencies.
One example of a tool that lets you do this easily is ``tox``, which can handle
running a unit test suite against multiple versions of the Python language.