add CONTRIBUTING.md (#806)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14d7b21
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,83 @@
+This repository contains backports of the CPython `typing` module to earlier versions of
+Python. Therefore, code in this repo should follow CPython's style guidelines and
+contributors need to sign the PSF Contributor Agreement.
+
+# typing
+
+The `typing` module provided by this repository is a backport for Python versions that
+do not have `typing` in the standard library: Python 2.7 and 3.4. These versions are no
+longer officially supported by CPython, so there is little remaining interest in keeping
+the backport up to date. We will accept contributions backporting new features to
+`typing`, but we are no longer actively requiring Python 2 support for all
+contributions.
+
+# typing_extensions
+
+The `typing_extensions` module provides a way to access new features from the standard
+library `typing` module in older versions of Python. For example, Python 3.10 adds
+`typing.TypeGuard`, but users of older versions of Python can use `typing_extensions` to
+use `TypeGuard` in their code even if they are unable to upgrade to Python 3.10.
+
+If you contribute the runtime implementation of a new `typing` feature to CPython, you
+are encouraged to also implement the feature in `typing_extensions`. Because the runtime
+implementation of much of the infrastructure in the `typing` module has changed over
+time, this may require different code for some older Python versions.
+
+`typing_extensions` may also include experimental features that are not yet part of the
+standard library, so that users can experiment with them before they are added to the
+standard library. Such features should ideally already be specified in a PEP or draft
+PEP.
+
+`typing_extensions` still supports all Python versions supported by `typing`, down to
+Python 2.7 and 3.4. However, it is OK to omit support for Python versions that have
+reached end of life if doing so is too difficult or otherwise does not make sense. For
+example, `typing_extensions.AsyncGenerator` only exists on Python 3.6 and higher,
+because async generators were added to the language in 3.6.
+
+# Versioning scheme
+
+`typing_extensions` and `typing` are usually released together using the same version
+numbers. The version number indicates the version of the standard library `typing`
+module that is reflected in the backport. For example, `typing_extensions` version
+3.10.0.0 includes features from the Python 3.10.0 standard library's `typing` module. A
+new release that doesn't include any new standard library features would be called
+3.10.0.1.
+
+# Workflow for PyPI releases
+
+- Do this for both `typing` and `typing_extensions`
+
+- Run tests under all supported versions. As of April 2021 this includes 2.7, 3.4, 3.5,
+  3.6, 3.7, 3.8, 3.9.
+
+- On macOS, you can use `pyenv <https://github.com/pyenv/pyenv>`\_ to manage multiple
+  Python installations. Long story short:
+
+  - `xcode-select --install`
+  - `brew install pyenv`
+  - `echo 'eval "$(pyenv init -)"' >> ~/.bash_profile`
+  - Open a new shell
+  - `pyenv install 3.5.3`
+  - `pyenv install 3.4.6`
+  - (assuming you already have 2.7.13 and 3.6.1 from Homebrew)
+  - `pyenv global system 3.5.3 3.4.6`
+  - (or some more recent versions)
+
+- You can use `tox` to automate running tests.
+
+- Update the version number in `setup.py`.
+
+- Build the source and wheel distributions:
+
+  - `pip3 install -U setuptools wheel`
+  - `pip2 install -U setuptools wheel`
+  - `rm -rf dist/ build/`
+  - `python3 setup.py sdist bdist_wheel`
+  - `rm -rf build/` (Works around
+    `a Wheel bug <https://bitbucket.org/pypa/wheel/issues/147/bdist_wheel-should-start-by-cleaning-up>`\_)
+  - `python2 setup.py bdist_wheel`
+
+- Install the built distributions locally and test (if you were using `tox`, you already
+  tested the source distribution).
+
+- Make sure twine is up to date, then run `twine upload dist/*`.
diff --git a/README.md b/README.md
index 90b345c..a1df5e2 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
   [typing-sig](https://mail.python.org/mailman3/lists/typing-sig.python.org/)
   is more appropriate these days.
 
-- A copy of the `typing` module for older Python versions (2.7 and
+- A backport of the `typing` module for older Python versions (2.7 and
   3.4) is maintained here.  Note that the canonical source lives
   [upstream](https://github.com/python/cpython/blob/master/Lib/typing.py)
   in the CPython repo.
@@ -20,42 +20,8 @@
 Workflow
 --------
 
+* See [CONTRIBUTING.md](/CONTRIBUTING.md) for more.
+
 * The typing.py module and its unittests are edited in the `src`
   subdirectory of this repo. The `python2` subdirectory contains the
   Python 2 backport.
-
-Workflow for PyPI releases
---------------------------
-
-* Run tests under all supported versions. As of April 2021 this includes
-  2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9.
-
-* On macOS, you can use `pyenv <https://github.com/pyenv/pyenv>`_ to
-  manage multiple Python installations. Long story short:
-
-  * ``xcode-select --install``
-  * ``brew install pyenv``
-  * ``echo 'eval "$(pyenv init -)"' >> ~/.bash_profile``
-  * Open a new shell
-  * ``pyenv install 3.5.3``
-  * ``pyenv install 3.4.6``
-  * (assuming you already have 2.7.13 and 3.6.1 from Homebrew)
-  * ``pyenv global system 3.5.3 3.4.6``
-
-* You can use ``tox`` to automate running tests.
-
-* Update the version number in ``setup.py``.
-
-* Build the source and wheel distributions:
-
-  * ``pip3 install -U setuptools wheel``
-  * ``pip2 install -U setuptools wheel``
-  * ``rm -rf dist/ build/``
-  * ``python3 setup.py sdist bdist_wheel``
-  * ``rm -rf build/`` (Works around `a Wheel bug <https://bitbucket.org/pypa/wheel/issues/147/bdist_wheel-should-start-by-cleaning-up>`_)
-  * ``python2 setup.py bdist_wheel``
-
-* Install the built distributions locally and test (if you
-  were using ``tox``, you already tested the source distribution).
-
-* Make sure twine is up to date, then run ``twine upload dist/*``.