If you need to adjust the sources of Reg, Dectate or Importscan and
test them together with Morepath, they’re available in the src
directory. You can edit them and test changes in the Morepath project
directly.

We have Travis continuous integration installed on Morepath’s github
repository and it runs the same tox tests after each checkin.

First you should install all Python versions which you want to
test. The versions which are not installed will be skipped. You should
at least install Python 3.5 which is required by flake8, coverage and
doctests and Python 2.7 for testing Morepath with Python 2.

In some cases we have to make changes that break compatibility and
break user code. We mark these in CHANGES.txt (CHANGES)
using breaking change, deprecated or removed.

These entries should explain the change, and also tell the user what
to do to upgrade their code. Do include an before/after code example
as that makes it much easier, even if it’s a simple import change.

We like to keep things moving and reserve the right to introduce
breaking changes. When we do make a breaking change it should be
marked clearly in CHANGES.txt (CHANGES) with a Breaking
change marker.

If it is not a great burden we use deprecations. Morepath in this case
retains the old APIs but issues a deprecation warning. See
Upgrading to a new Morepath version for the notes for end-users concerning this. Here is
the deprecation procedure for developers:

Add a Deprecated entry in CHANGES.txt that describes what
to do, as in a breaking change.

Issue a deprecation warning in the code that is deprecated.

Put a **Deprecated** entry in the docstring of whatever got
deprecated with a brief comment on what to do.

Put an issue labeled removedeprecation in the tracker for one
release milestone after the upcoming release that states we should
remove the deprecation. Create the milestone if needed.

This way we don’t maintain deprecated code and their warnings
indefinitely – one release later we remove the backwards
compatibility code and deprecation warnings.

Once we go and remove code, we repeat the information on what to do
in a new Removed* entry in CHANGES.txt; treat it just like
Breaking change and recycle the text written for the previous
Deprecated entry for the stuff we’re now removing.