blob: e87cc14087b5e5b3bce465413ab71424c1f72c20 [file] [log] [blame]
Alex Gaynorf5415c82013-12-24 11:00:15 -08001API Stability
2=============
3
4From its first release, ``cryptography`` will have a strong API stability
5policy.
6
7What does this policy cover?
8----------------------------
9
10This policy includes any API or behavior which is documented in this
11documentation.
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
50In short, code which runs without warnings will always continue to work for a
51period of two releases.