blob: 7ba1d4266ab0851706a31cf1f797a7c53e49f4d5 [file] [log] [blame]
Alex Stapletonc5fffd32014-03-18 15:29:00 +00001API stability
Alex Gaynorf5415c82013-12-24 11:00:15 -08002=============
3
4From its first release, ``cryptography`` will have a strong API stability
5policy.
6
7What does this policy cover?
8----------------------------
9
Alex Stapleton63b3de22014-02-08 09:43:16 +000010This policy includes any API or behavior that is documented in this
Alex Gaynorf5415c82013-12-24 11:00:15 -080011documentation.
12
13What does "stable" mean?
14------------------------
15
16* Public APIs will not be removed or renamed without providing a compatibility
17 alias.
18* The behavior of existing APIs will not change.
19
20What doesn't this policy cover?
21-------------------------------
22
23* We may add new features, things like the result of ``dir(obj))`` or the
24 contents of ``obj.__dict__`` may change.
Alex Gaynord43134a2013-12-24 11:03:16 -080025* Objects are not guaranteed to be pickleable, and pickled objects from one
Alex Gaynorf5415c82013-12-24 11:00:15 -080026 version of ``cryptography`` may not be loadable in future versions.
Alex Gaynor6cf1e692013-12-24 11:02:54 -080027* Development versions of ``cryptography``. Before a feature is in a release,
28 it is not covered by this policy and may change.
Alex Gaynorf5415c82013-12-24 11:00:15 -080029
30Security
31~~~~~~~~
32
Alex Gaynor1c9e57b2013-12-24 12:47:45 -080033One exception to our API stability policy is for security. We will violate this
34policy as necessary in order to resolve a security issue or harden
35``cryptography`` against a possible attack.
Alex Gaynorf5415c82013-12-24 11:00:15 -080036
37Deprecation
38-----------
39
40From time to time we will want to change the behavior of an API or remove it
41entirely. In that case, here's how the process will work:
42
43* In ``cryptography X.Y`` the feature exists.
44* In ``cryptography X.Y+1`` using that feature will emit a
45 ``PendingDeprecationWarning``.
46* In ``cryptography X.Y+2`` using that feature will emit a
47 ``DeprecationWarning``.
48* In ``cryptography X.Y+3`` the feature will be removed or changed.
49
Alex Stapleton63b3de22014-02-08 09:43:16 +000050In short, code that runs without warnings will always continue to work for a
Alex Gaynorf5415c82013-12-24 11:00:15 -080051period of two releases.
Alex Gaynor511098c2017-03-22 22:56:15 -040052
53From time to time, we may decide to deprecate an API that is particularly
54widely used. In these cases, we may decide to provide an extended deprecation
55period, at our discretion.