diff --git a/docs/RELEASE-NOTES.rst b/docs/RELEASE-NOTES.rst
index a08af27..e0af4c5 100644
--- a/docs/RELEASE-NOTES.rst
+++ b/docs/RELEASE-NOTES.rst
@@ -1,6 +1,101 @@
 Release Notes
 =============
 
+NLSR version 0.2.0 (changes since version 0.1.0)
+++++++++++++++++++++++++++++++++++++++++++++++++
+
+Release date: April 30, 2015
+
+**Build**:
+
+- The code now requires C++11. The minimum supported gcc version is 4.6, as earlier versions do not have proper support for C++11 features. (:issue:`1930`)
+
+- Require OpenSSL (:issue:`2375`)
+
+**New features**:
+
+- Add nlsrc command-line tool (:issue:`1834`)
+
+- Advertise/Withdraw name prefixes at runtime (:issue:`1834`)
+
+- Assign zero cost to hyperbolic direct neighbors (:issue:`1975`)
+
+- Only hyperbolic costs are adjusted before registering (:issue:`1974`)
+
+- Add ability to specify different logging levels (:issue:`1935`)
+
+- Add LSDB dataset publishers (:issue:`2280`)
+
+- Add LSDB dataset tlv abstractions (:issue:`2280`)
+
+- Allow zero cost neighbors for hyperbolic routing table calculation (:issue:`1982`)
+
+- Faces are now created with canonical Face URI (:issue:`1911`)
+
+- Add configurable router event intervals (:issue:`2071`)
+
+- Add router-dead-interval configuration setting (:issue:`1878`)
+
+- Add log formatting specified by log4cxx configuration file (:issue:`1950`)
+
+- Face URIs in configuration file are checked for validity on load (:issue:`2070`)
+
+- Configuration variables with default values are now optional (:issue:`1949`)
+
+- Recalculate routing table after face destroy event (:issue:`2635`)
+
+- Add Travis-CI build script
+
+**Code changes**:
+
+- Change adjacency status from uint32_t to enum (:issue:`1946`)
+
+- Remove scheduler from NLSR class (:issue:`1981`)
+
+- Change hyperbolic cost adjustment factor from 100 to 1000 (:issue:`1974`)
+
+- Remove use of outdated namespace ``ndn::Tlv`` (:issue:`2079`)
+
+- Remove use of deprecated ``ndn::nfd::Controller(Face&)`` constructor (:issue:`2133`)
+
+- Routing update publishing is abstracted to SyncLogicHandler (:issue:`2289`)
+
+- Make ConfParameter variable types consistent with min and max values (:issue:`2084`)
+
+- Replace LSA string literals with constants (:issue:`2310`)
+
+- Subscribe to FaceMonitor notifications using connect (:issue:`2350`)
+
+- Log exceptions thrown in event loop
+
+- Change ``ndn::ptr_lib::shared_ptr`` to ``std::shared_ptr`` (:issue:`2110`)
+
+- Avoid deprecated ``ndn::Name::set`` method (:issue:`2505`)
+
+- Update waf to version 1.8.8-dev
+
+- Add sorting tiebreaker to NexthopList (:issue:`2715`)
+
+- Update Jenkins-CI build scripts
+
+**Bug fixes**:
+
+- Fix python3 build error (:issue:`1956`)
+
+- Fix typos in nlsr.conf security section (:issue:`1985`)
+
+- Stop SyncLogicHandler from fetching a router’s own LSAs (:issue:`2005`)
+
+- Fix Name LSA comparison which could cause incorrect advertised names to be removed (:issue:`2029`)
+
+- Fix issue where more faces than max-faces-per-prefix could be applied to a prefix (:issue:`2018`)
+
+- Stop LSDB from retrieving and out of date LSA when a new one is detected (:issue:`1987`)
+
+- Correct mistakes in documentation
+
+- Correct bitmask used to copy Name LSA sequence number (:issue:`2323`)
+
 NLSR version 0.1.0 (initial release)
 ++++++++++++++++++++++++++++++++++++
 
diff --git a/docs/conf.py b/docs/conf.py
index 7314c6d..a02e3c8 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -18,7 +18,7 @@
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
+sys.path.insert(0, os.path.abspath('.'))
 
 # -- General configuration ------------------------------------------------
 
@@ -30,6 +30,7 @@
 # ones.
 extensions = [
     'sphinx.ext.todo',
+    'redmine_issue',
 ]
 
 def addExtensionIfExists(extension):
@@ -249,3 +250,5 @@
 if os.getenv('GOOGLE_ANALYTICS', None):
     googleanalytics_id = os.environ['GOOGLE_ANALYTICS']
     googleanalytics_enabled = True
+
+redmine_project_url = "http://redmine.named-data.net/"
diff --git a/docs/redmine_issue.py b/docs/redmine_issue.py
new file mode 100644
index 0000000..e80c036
--- /dev/null
+++ b/docs/redmine_issue.py
@@ -0,0 +1,70 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+# Based on http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html
+
+"""Integration of Sphinx with Redmine.
+"""
+
+from docutils import nodes, utils
+from docutils.parsers.rst.roles import set_classes
+
+def redmine_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
+    """Link to a Redmine issue.
+
+    Returns 2 part tuple containing list of nodes to insert into the
+    document and a list of system messages.  Both are allowed to be
+    empty.
+
+    :param name: The role name used in the document.
+    :param rawtext: The entire markup snippet, with role.
+    :param text: The text marked with the role.
+    :param lineno: The line number where rawtext appears in the input.
+    :param inliner: The inliner instance that called us.
+    :param options: Directive options for customization.
+    :param content: The directive content for customization.
+    """
+    try:
+        issue_num = int(text)
+        if issue_num <= 0:
+            raise ValueError
+    except ValueError:
+        msg = inliner.reporter.error(
+            'Redmine issue number must be a number greater than or equal to 1; '
+            '"%s" is invalid.' % text, line=lineno)
+        prb = inliner.problematic(rawtext, rawtext, msg)
+        return [prb], [msg]
+    app = inliner.document.settings.env.app
+    node = make_link_node(rawtext, app, 'issues', str(issue_num), options)
+    return [node], []
+
+def make_link_node(rawtext, app, type, slug, options):
+    """Create a link to a Redmine resource.
+
+    :param rawtext: Text being replaced with link node.
+    :param app: Sphinx application context
+    :param type: Link type (issue, changeset, etc.)
+    :param slug: ID of the thing to link to
+    :param options: Options dictionary passed to role func.
+    """
+    #
+    try:
+        base = app.config.redmine_project_url
+        if not base:
+            raise AttributeError
+    except AttributeError, err:
+        raise ValueError('redmine_project_url configuration value is not set (%s)' % str(err))
+    #
+    slash = '/' if base[-1] != '/' else ''
+    ref = base + slash + type + '/' + slug + '/'
+    set_classes(options)
+    node = nodes.reference(rawtext, 'Issue #' + utils.unescape(slug), refuri=ref,
+                           **options)
+    return node
+
+def setup(app):
+    """Install the plugin.
+
+    :param app: Sphinx application context.
+    """
+    app.add_role('issue', redmine_role)
+    app.add_config_value('redmine_project_url', None, 'env')
+    return
\ No newline at end of file
diff --git a/wscript b/wscript
index 0dbf533..c4a2d5c 100644
--- a/wscript
+++ b/wscript
@@ -20,7 +20,7 @@
 NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
 """
 
-VERSION = '0.1.0'
+VERSION = '0.2.0'
 APPNAME = "nlsr"
 BUGREPORT = "http://redmine.named-data.net/projects/nlsr"
 URL = "http://named-data.net/doc/NLSR/"
