EP 10 — Public API and Backwards Compatibility Policy (original) (raw)

Günter Milde

Adam Turner

Discussions-To:

https://sourceforge.net/p/docutils/feature-requests/89/

Status:

Draft

Type:

Process

Created:

2025-04-22

Docutils-Version:

1.0

Abstract

This document suggests a definition of the public APIs provided by the Docutils project and the backwards compatibility policy.

Contents

Motivation

Docutils has a large user base and is used in production at several places (Python documentation, Linux kernel documentation, CMake documentation, readthedocs, ...). OTOH, Docutils has a version number below 1.0 (widely seen as an indicator of "beta" status of a project).

The current Docutils Project Policies section on version identifcation concentrates on the formal definition of the version specifier but leaves open what consists a "major change in the design or API".

The current backwards compatibility policy is a stub referencingPEP 387.

Rationale

Clearly defining how we will balance evolution with stability is important to both users and project developers.

People affected by changes in Docutils include:

Authors

writing or maintaining reStructuredText documents.

End-Users

of Docutils native front-end tools (optionally with 3rd-party drop-in extensions) or alternative tools using Docutils either as a library (Sphinx, …) or via the command line interface (build systems, Makefiles, scripts in other languages).

Developers

i.e. authors and maintainers of

A person may belong to more than one of these catgories.

Specification

Docutils public APIs are:

Exemptions:

Python objects, stylesheets and templates can explicitly "opt-out" of the public API with a docstring noting that the object is provisionalor internal.

All undocumented objects should be assumed to be internal. [2]

See also the API Reference Material for Client-Developers.

Backwards Compatibility

Beginning with version 1.0, Docutils will follow the rules ofSemantic Versioning. All incompatible changes to the public APIs require increasing the major part of the version specifier. Backwards compatible changes can be done in minor releases.

Security Implications

If required, critical bug fixes may change the public API without advance warning.

How to Teach This

Rejected Ideas

Open Issues

    * the change was announced in a release that occurred at least six months previously.  

By these rules, Docutils developers can announce, in release 5.1, for example, its plans to make a backward-incompatible change in release 6.0. Then, in 6.0, if it’s been at least six months since 5.1 was released, they can make that change.

References

This document is placed in the public domain or under the CC0-1.0-Universal license, whichever is more permissive.