aboutsummaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst54
1 files changed, 45 insertions, 9 deletions
diff --git a/README.rst b/README.rst
index 8ce1385..21ae529 100644
--- a/README.rst
+++ b/README.rst
@@ -1,8 +1,12 @@
Olm
===
-An implementation of the cryptographic ratchet described by
-https://github.com/trevp/axolotl/wiki, written in C++11 and exposed as a C API
+An implementation of the Double Ratchet cryptographic ratchet described by
+https://github.com/trevp/double_ratchet/wiki, written in C and C++11 and
+exposed as a C API.
+
+The specification of the Olm ratchet can be found in docs/olm.rst or
+https://matrix.org/docs/spec/olm.html
Building
--------
@@ -11,20 +15,40 @@ To build olm as a shared library run:
.. code:: bash
- ./build_shared_library.py
+ make
To run the tests run:
.. code:: bash
- ./test.py
-
+ make test
To build the javascript bindings, install emscripten from http://kripken.github.io/emscripten-site/ and then run:
.. code:: bash
- javascript/build.py
+ make js
+
+Release process
+---------------
+
+.. code:: bash
+
+ # Bump version numbers in ``Makefile`` and ``javascript/package.json``
+ # Prepare changelog
+ git commit
+ make clean
+ make test
+ make js
+ npm pack javascript
+ VERSION=x.y.z
+ scp olm-$VERSION.tgz packages@ldc-prd-matrix-001:/sites/matrix/packages/npm/olm/
+ git tag $VERSION -s
+ git push --tags
+
+It's probably sensible to do the above on a release branch (``release-vx.y.z``
+by convention), and merge back to master once complete.
+
Design
------
@@ -32,6 +56,11 @@ Design
Olm is designed to be easy port to different platforms and to be easy
to write bindings for.
+It was originally implemented in C++, with a plain-C layer providing the public
+API. As development has progressed, it has become clear that C++ gives little
+advantage, and new functionality is being added in C, with C++ parts being
+rewritten as the need ariases.
+
Error Handling
~~~~~~~~~~~~~~
@@ -67,8 +96,15 @@ the ratchet. While this decreases the performance it makes it much easier
to compile the library for different architectures.
What's an olm?
-~~~~~~~~~~~~~~
+--------------
It's a really cool species of European troglodytic salamander.
-Matthew once tried to climb into a pool full of them in Postojnska Jama.
-http://www.postojnska-jama.eu/en/about-the-cave/meet-the-dragon-s-offspring/
+http://www.postojnska-jama.eu/en/come-and-visit-us/vivarium-proteus/
+
+Legal Notice
+------------
+
+The software may be subject to the U.S. export control laws and regulations
+and by downloading the software the user certifies that he/she/it is
+authorized to do so in accordance with those export control laws and
+regulations.