Format or protocol compatibility.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Mon, 28 Nov 2011 01:32:11 +0200
changeset 1112 91e7ec70a38e
parent 1111 e1a7f1896571
child 1113 c55780172a46
Format or protocol compatibility.
devel-versioning.rst
--- a/devel-versioning.rst	Mon Nov 28 01:11:03 2011 +0200
+++ b/devel-versioning.rst	Mon Nov 28 01:32:11 2011 +0200
@@ -346,6 +346,9 @@
 Forms of compatibility.
 =======================
 
+Source/binary compatibility.
+----------------------------
+
 Runtime or binary compatibility mean that binary can be swaped with another
 version without breaking normal program work.
 
@@ -359,11 +362,23 @@
  * Adding new method to abstract class take binary compatibility but break
    compilation (unimplement method error).
 
-File format compatibility.
+Format or protocol compatibility.
+---------------------------------
+
+File format or protocol backward compatibility mean that new program can use old
+format or protocol.
+
+In order to do that file format or protocol MUST store or provide some
+versioning information. Usually this done by:
 
-Protocol compatibility.
+ * Separate versioning field in data.
+ * New prefix or name in data.
+ * List of feature requirements, supported algorighm, etc.
 
+It is essential make code that detect unknown or possibly new format or protocol
+and stop working with them to avoid user data corruption.
 
+Forward compati
 
 Reference.
 ==========