diff --git a/changelog.rst b/changelog.rst
new file mode 100644
index 0000000..f402bbe
--- /dev/null
+++ b/changelog.rst
@@ -0,0 +1,61 @@
+Changes
+=======
+
+Since version 0.1
+-----------------
+
+- **Signature**
+
+  + New ``SignatureSha256WithEcdsa`` signature type for Elliptic Curve Digital Signature Algorithm (ECDSA)
+
+Since CCNx 0.7.2
+----------------
+
+- **General**
+
+  + XML-based ccnb packet encoding is replaced by TLV encoding
+
+- **Name**
+
+  + The name encoding is changed from binary XML to TLV format
+  + The discussions on naming conventions and the use of special markers inside NameComponents are removed from packet specification, and will be covered by a separate technical document
+  + Deprecated zero-length name component
+
+- **Interest Packet**
+
+  + ``Nonce`` is changed from optional to required
+  + ``PublisherPublicKeyDigest`` is replaced by ``PublisherPublicKeyLocator``
+  + ``AnswerOriginKind`` is simplified from 4bits to a 1-bit ``MustBeFresh``
+  + ``FaceID`` has been removed
+  + ``InterestLifetime`` changes the unit to the number of milliseconds
+  + Removed Bloom Filter from Exclude
+  + Changed default semantics of staleness
+
+    Specifically, NDN-TLV Interest without any selectors will bring any data that matches the name, and only when ``MustBeFresh`` selector is enabled it will try to honor freshness, specified in Data packets.
+    With Binary XML encoded Interests, the default behavior was to bring "fresh" data and return "stale" data only when ``AnswerOriginKind`` was set to 3.
+
+    Application developers must be aware of this change, reexamine the Interest expression code, and enable ``MustBeFresh`` selector when necessary.
+
+- **Data Packet**
+
+  + The structure of Data packet is changed:
+
+    * ``Name``, ``MetaInfo``, ``Content``, ``Signature{SignatureInfo, SignatureValue}``
+
+  + ``SignedInfo`` is renamed to ``MetaInfo`` and its content is changed
+  + ``PublisherPublicKeyDigest`` and ``ExtOpt`` are removed.
+  + ``Timestamp`` is removed
+  + ``KeyLocator`` is moved to be inside the ``Signature`` (``SignatureInfo``) block
+  + Three content types, ENCR, GONE, and NACK are removed
+  + ``FreshnessSeconds`` is renamed to ``FreshnessPeriod`` and is expressed in units of milliseconds
+
+- **Signature**
+
+  + ``Signature`` is moved to the end of Data packet.
+  + ``KeyLocator`` is moved to be a part of the ``SignatureInfo`` block, if it is applicable for the specific signature type.
+
+    The rationale for the move is to make Signature (sequence of ``SignatureInfo`` and ``SignatureValue`` TLVs) self-contained and self-sufficient.
+
+  + Signature type (or signing method information) is expressed as an assigned integer value (with no assumed default), rather than OID.
+  + Added support for hash-only "signature"
+  + The current specification does not define Merkle Hash Tree Aggregated Signatures, but it is expected that such (or similar) signatures will be defined in future version of this specification
