aboutsummaryrefslogtreecommitdiffstats
path: root/doc/roadmap.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/roadmap.rst')
-rw-r--r--doc/roadmap.rst58
1 files changed, 58 insertions, 0 deletions
diff --git a/doc/roadmap.rst b/doc/roadmap.rst
new file mode 100644
index 000000000..76ab81f07
--- /dev/null
+++ b/doc/roadmap.rst
@@ -0,0 +1,58 @@
+
+Botan Development Roadmap
+========================================
+
+Branch Stucture
+----------------------------------------
+
+Stability of branches is indicated by even or odd minor version numbers. The
+minor number of the primary trunk is always odd and devel releases and
+snapshots are made directly from it. Every once in a while a new even-numbered
+branch is forked. All development continues on the main trunk, with fixes and
+occasionally small features backported to the stable branch. Stability of API
+and ABI is very important in the stable branches, whereas in trunk ABI changes
+happen with no warning, and API changes are made whenever it would serve the
+ends of justice.
+
+Current Status
+----------------------------------------
+
+Currently (as of 2015-07-03) trunk is numbered 1.11 and is written in C++11,
+unlike earlier versions which used C++98. In due time a new stable 2.0 branch
+will be made off of trunk and afterwards trunk will be renumbered as 2.1. The
+2.0 releases will be maintained with security and bug fixes at least until a
+new 2.2 stable branch is created and likely for some time afterwards. In the
+last decade the length of time between new stable trees being created has been
+between 23 and 41 months, suggesting a support lifetime of 2-4 years for 2.0.x.
+
+The 1.10 stable tree is, well, stable. There isn't enough project time to
+backport all of the nice features from 1.11 (eg TLS v1.2, GCM, OCB, or
+McEliece) to 1.10, even where it could be done while maintaining API/ABI
+compat. The C++11 transition makes it especially hard for the 1.10/1.11
+split. So if 1.10 does what you want now it probably will next week, but it
+won't ever do much beyond that. If you want any feature or optimization or side
+channel resistance added in the last 4 years you have to use 1.11. 1.10 will
+continue to be maintained at the current level for at least a year after 2.0 is
+released.
+
+1.8 and all older versions are no longer maintained.
+
+Supported Targets
+----------------------------------------
+
+The primary supported targets, which are tested with every commit by
+continous integration, are GCC and Clang on Linux, Clang on OS X, and
+MSVC 2013 on Windows, all on some form of x86.
+
+Other processors, like ARM, MIPS, and POWER processors, and OSes, such
+as OpenBSD, MinGW, or iOS are occasionally tested on an ad-hoc basis,
+but breakage is somewhat more likely.
+
+Ongoing Issues
+----------------------------------------
+
+Some infrastructure, scripts and such still exists only on the machines of the
+primary developer.
+
+Documentation could always use help. Many things are completely undocumented,
+few things are documented well.