diff --git a/docs/extensiondev.rst b/docs/extensiondev.rst index 3319d229..70cfbeb7 100644 --- a/docs/extensiondev.rst +++ b/docs/extensiondev.rst @@ -277,6 +277,46 @@ The best Flask extensions are extensions that share common idioms for the API. And this can only work if collaboration happens early. +Approved Extensions +------------------- + +Flask also has the concept of approved extensions. Approved extensions +are tested as part of Flask itself to ensure extensions do not break on +new releases. These approved extensions are listed on the `Flask +Extension Registry`_ and marked appropriately. If you want your own +extension to be approved you have to follow these guidelines: + +1. An approved Flask extension must provide exactly one package or module + inside the `flaskext` namespace package. +2. It must ship a testsuite that can either be invoked with ``make test`` + or ``python setup.py test``. For testsuites invoked with ``make + test`` the extension has to ensure that all dependencies for the test + are installed automatically, in case of ``python setup.py test`` + dependencies for tests alone can be specified in the `setup.py` + file. The testsuite also has to be part of the distribution. +3. APIs of approved extensions will be checked for the following + behavioristics: + + - an approved extension has to support multiple applications + running in the same Python process. + - it must be possible to use the factory pattern for creating + applications. + +4. The license has to be BSD/MIT/WTFPL licensed unless a depending + library absolutely enforces GPL or another license. +5. The naming scheme for official extensions is *Flask-ExtensionName* or + *ExtensionName-Flask*. +6. Approved extensions must define all their dependencies in the + `setup.py` file unless a dependency cannot by met because it is not + available on PyPI. +7. The extension must have documentation that furthermore uses one of + the two Flask themes for Sphinx documentation. +8. The setup.py description (and thus the PyPI description) has to + link to the documentation, website (if there is one) and there + must be a link to automatically install the development version + (``PackageName==dev``). + + .. _Flask Extension Wizard: http://github.com/mitsuhiko/flask-extension-wizard .. _OAuth extension: http://packages.python.org/Flask-OAuth/