docs: RELEASE NOTES for version 0.1.0 and update README
Change-Id: Ib9c7b14b5c7b4936a012345f36473971b581eb34
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index f6e97a1..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,6 +0,0 @@
-ndn-cxx v0.1 (2014-04-39)
-
-Initial release of the ndn-cxx library.
-
-The current set of features include:
-* <to be listed>
diff --git a/INSTALL.md b/INSTALL.md
deleted file mode 100644
index f563f56..0000000
--- a/INSTALL.md
+++ /dev/null
@@ -1,144 +0,0 @@
-ndn-cxx: NDN C++ library with eXperimental eXtensions
-=====================================================
-
-Supported platforms
--------------------
-
-ndn-cxx uses continuous integration testing and has been tested on the following platforms:
-
-* Ubuntu 12.04 (64 bit and 32 bit)
-* Ubuntu 13.10 (64 bit and 32 bit)
-* Mac OS X 10.8
-* Mac OS X 10.9
-
-
-Prerequisites
--------------
-
-### Required:
-
-* `python` >= 2.6
-* `libcrypto`
-* `libsqlite3`
-* `libcrypto++`
-* `pkg-config`
-* Boost libraries >= 1.48
-* OSX Security framework (on OSX platform only)
-
-Following are the detailed steps for each platform to install the prerequisites.
-
-* Mac OS X
-
- Install Xcode.
- In Xcode Preferences > Downloads, install "Command Line Tools".
-
- If using macports, dependencies can be installed using the following commands:
-
- sudo port install pkgconfig boost sqlite3 libcryptopp
-
-* Ubuntu 12.04, Ubuntu 13.10
-
- In a terminal, enter:
-
- sudo apt-get install build-essential
- sudo apt-get install libssl-dev libsqlite3-dev libcrypto++-dev
-
- # For Ubuntu 12.04
- sudo apt-get install libboost1.48-all-dev
-
- # For Ubuntu 13.10
- sudo apt-get install libboost-all-dev
-
-### Optional:
-
-To build tutorials, manpages, and API documentation the following
-dependencies need to be installed:
-
-* `doxygen`
-* `graphviz`
-* `python-sphinx`
-
-The following lists steps for common platforms to install these prerequisites:
-
-* On OS X 10.8 and 10.9 with macports:
-
- sudo port install doxygen graphviz py27-sphinx sphinx_select
- sudo port select sphinx py27-sphinx
-
-* On Ubuntu >= 12.04:
-
- sudo apt-get install doxygen graphviz python-sphinx
-
-
-Build
------
-
-(These are instructions to build ndn-cxx. To do development of ndn-cxx
-code and update the build system, see Development.)
-
-To build in a terminal, change directory to the ndn-cxx root. Enter:
-
- ./waf configure
- ./waf
- sudo ./waf install
-
-This builds and installs the following items:
-
-* `<LIBPATH>/libndn-cxx.a`: static NDN C++ library
-* `<LIBPATH>/pkgconfig/libndn-cxx.pc`: pkgconfig file storing all neccessary flags
- to build against the library. For example, if pkgconfig or pkgconf package is
- installed and `PKG_CONFIG_PATH` is configured properly (or `<LIBPATH>/pkgconfig` is a
- default path), `pkgconfig --libs --clflags libndn-cxx` will return all necessary
- compile and link flags for the library.
-* `<BINPATH>/tlvdump`: a simple tool to dump contents of TLV-formatted data
-* `<BINPATH>/ndncatchunks3`: a simplified equivalent to ndncatchunks2 in NDNx package
-* `<BINPATH>/ndnputchunks3`: a simplified equivalent to ndnputchunks2 in NDNx package
-* `<BINPATH>/ndnsec`: tool to manage NDN keys and certificates
-* `<BINPATH>/ndnsec-*`: convenience scripts for `ndnsec` tools
-
-If configured with tests: `./waf configure --with-tests`), the above commands will
-also produce:
-
-* `build/unit-tests`: A unit test binary for the library
-
-Documentation
--------------
-
-ndn-cxx tutorials and API documentation can be built using the following commands:
-
- # Full set of documentation (tutorials + API) in build/docs
- ./waf docs
-
- # Only tutorials in `build/docs`
- ./waf sphinx
-
- # Only API docs in `build/docs/doxygen`
- ./waf doxgyen
-
-
-Manpages are automatically created and installed during the normal build process
-(e.g., during `./waf` and `./waf install`), if `python-sphinx` module is detected during
-`./waf configure` stage. By default, manpages are installed into `${PREFIX}/share/man`
-(where default value for `PREFIX` is `/usr/local`). This location can be changed during
-`./waf configure` stage using `--prefix`, `--datarootdir`, or `--mandir` options.
-
-For more details, refer to `./waf --help`.
-
-
-
-
-Development Build
------------------
-
-The following is the suggested configure commands for development build.
-
- ./waf configure --debug --with-tests
- ./waf
- sudo ./waf install
-
-In the development build all compiler optimizations are disabled by default and all
-warnings are treated as error. The default behavior can be overridden by setting `CXXFLAGS`
-environment variable before running `./waf configure`:
-
- CXXFLAGS="-O1 -g3" ./waf configure --debug --with-tests
- ...
diff --git a/README.md b/README.md
index fc941b4..e31f355 100644
--- a/README.md
+++ b/README.md
@@ -13,18 +13,17 @@
* [ndn-tlv-ping - Ping Application For NDN](https://github.com/named-data/ndn-tlv-ping)
* [ndn-traffic - Traffic Generator For NDN](https://github.com/named-data/ndn-traffic)
-See the file INSTALL.md for build and install instructions.
+See the file [`docs/INSTALL.rst`](https://github.com/named-data/ndn-cxx/blob/master/INSTALL.rst)
+for build and install instructions.
Please submit any bugs or issues to the ndn-cxx issue tracker:
http://redmine.named-data.net/projects/ndn-cxx/issues
-
## More documentation
Extensive documentation of the library is available on the library's homepage:
http://www.named-data.net/doc/ndn-cxx/
-
## License
ndn-cxx is an open source project licensed under BSD license. For more information about
diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst
new file mode 100644
index 0000000..00ee757
--- /dev/null
+++ b/docs/INSTALL.rst
@@ -0,0 +1,179 @@
+Getting started with ndn-cxx
+============================
+
+Supported platforms
+-------------------
+
+ndn-cxx uses continuous integration and has been tested on the following
+platforms:
+
+- Ubuntu 12.04 (64-bit and 32-bit)
+- Ubuntu 13.10 (64-bit and 32-bit)
+- OS X 10.8
+- OS X 10.9
+
+ndn-cxx is known to work on the following platforms, although they are not officially
+supported:
+
+- Ubuntu 14.04
+- Fedora >= 20
+- FreeBSD >= 10.0
+- Raspberry Pi
+
+Prerequisites
+-------------
+
+Required:
+~~~~~~~~~
+
+- ``python`` >= 2.6
+- ``libcrypto``
+- ``libsqlite3``
+- ``libcrypto++``
+- ``pkg-config``
+- Boost libraries >= 1.48
+- OSX Security framework (on OSX platform only)
+
+Following are the detailed steps for each platform to install the compiler, all necessary
+development tools and libraries, and ndn-cxx prerequisites.
+
+- OS X
+
+ Install Xcode. In Xcode Preferences > Downloads, install "Command
+ Line Tools".
+
+ If using MacPorts, dependencies can be installed using the following
+ commands::
+
+ sudo port install pkgconfig boost sqlite3 libcryptopp
+
+- Ubuntu 12.04, Ubuntu 13.10
+
+ In a terminal, enter::
+
+ sudo apt-get install build-essential
+ sudo apt-get install libssl-dev libsqlite3-dev libcrypto++-dev
+
+ # For Ubuntu 12.04
+ sudo apt-get install libboost1.48-all-dev
+
+ # For Ubuntu 13.10
+ sudo apt-get install libboost-all-dev
+
+- Fedora >=20
+
+ In a terminal, enter::
+
+ sudo yum install gcc-g++ git
+ sudo yum install openssl-devel sqlite-devel cryptopp-devel boost-devel
+
+Optional:
+~~~~~~~~~
+
+To build tutorials, manpages, and API documentation the following
+dependencies need to be installed:
+
+- ``doxygen``
+- ``graphviz``
+- ``python-sphinx``
+
+The following lists steps for common platforms to install these
+prerequisites:
+
+- On OS X 10.8 and 10.9 with MacPorts::
+
+ sudo port install doxygen graphviz py27-sphinx sphinx_select
+ sudo port select sphinx py27-sphinx
+
+- On Ubuntu >= 12.04::
+
+ sudo apt-get install doxygen graphviz python-sphinx
+
+- On Fedora >= 20::
+
+ sudp yum install doxygen graphviz python-sphinx
+
+Build
+-----
+
+(These are instructions to build ndn-cxx. To do development of ndn-cxx
+code and update the build system, see Development.)
+
+To build in a terminal, change directory to the ndn-cxx root. Enter:
+
+::
+
+ ./waf configure
+ ./waf
+ sudo ./waf install
+
+This builds and installs the following items:
+
+- ``<LIBPATH>/libndn-cxx.a``: static NDN C++ library
+- ``<LIBPATH>/pkgconfig/libndn-cxx.pc``: pkgconfig file storing all
+ neccessary flags to build against the library. For example, if
+ pkgconfig or pkgconf package is installed and ``PKG_CONFIG_PATH`` is
+ configured properly (or ``<LIBPATH>/pkgconfig`` is a default path),
+ ``pkgconfig --libs --clflags libndn-cxx`` will return all necessary
+ compile and link flags for the library.
+- ``<BINPATH>/tlvdump``: a simple tool to dump contents of
+ TLV-formatted data
+- ``<BINPATH>/ndncatchunks3``: a simplified equivalent to ndncatchunks2
+ in NDNx package
+- ``<BINPATH>/ndnputchunks3``: a simplified equivalent to ndnputchunks2
+ in NDNx package
+- ``<BINPATH>/ndnsec``: tool to manage NDN keys and certificates
+- ``<BINPATH>/ndnsec-*``: convenience scripts for ``ndnsec`` tools
+
+If configured with tests: ``./waf configure --with-tests``), the above
+commands will also produce:
+
+- ``build/unit-tests``: A unit test binary for the library
+
+Documentation
+-------------
+
+ndn-cxx tutorials and API documentation can be built using the following
+commands:
+
+::
+
+ # Full set of documentation (tutorials + API) in build/docs
+ ./waf docs
+
+ # Only tutorials in `build/docs`
+ ./waf sphinx
+
+ # Only API docs in `build/docs/doxygen`
+ ./waf doxgyen
+
+Manpages are automatically created and installed during the normal build
+process (e.g., during ``./waf`` and ``./waf install``), if
+``python-sphinx`` module is detected during ``./waf configure`` stage.
+By default, manpages are installed into ``${PREFIX}/share/man`` (where
+default value for ``PREFIX`` is ``/usr/local``). This location can be
+changed during ``./waf configure`` stage using ``--prefix``,
+``--datarootdir``, or ``--mandir`` options.
+
+For more details, refer to ``./waf --help``.
+
+Development Build
+-----------------
+
+The following is the suggested configure commands for development build.
+
+::
+
+ ./waf configure --debug --with-tests
+ ./waf
+ sudo ./waf install
+
+In the development build all compiler optimizations are disabled by
+default and all warnings are treated as error. The default behavior can
+be overridden by setting ``CXXFLAGS`` environment variable before
+running ``./waf configure``:
+
+::
+
+ CXXFLAGS="-O1 -g3" ./waf configure --debug --with-tests
+ ...
diff --git a/docs/RELEASE_NOTES.rst b/docs/RELEASE_NOTES.rst
new file mode 100644
index 0000000..56548a7
--- /dev/null
+++ b/docs/RELEASE_NOTES.rst
@@ -0,0 +1,87 @@
+ndn-cxx v0.1.0 Release Notes
+============================
+
+Version 0.1.0 is the initial release of ndn-cxx, an NDN C++ library with eXperimental
+eXtensions.
+
+Originally based on `ndn-cpp library <https://github.com/named-data/ndn-cpp>`_ the ndn-cxx
+library adopts a slightly different design philosophy (extensive use of Boost libraries,
+use of Crypto++ library to support cryptographic operations) and includes a number of
+various extensions that can simplify writing NDN applications.
+
+The current features include:
+
+- **Base**
+
+ + Fully asynchronous, event-driven communication model implemented using `Boost.Asio
+ <http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio.html>`_
+ + Single-threaded, but thread-safe Face operations
+
+ A single Face object can be safely used in multiple threads to express Interests and
+ publish Data packets
+
+ + Explicit time management for NDN operations using `Boost.Chrono
+ <http://www.boost.org/doc/libs/1_48_0/doc/html/chrono.html>`_
+ + Simplified and extended `NDN API <doxygen/annotated.html>`_
+ + Extensive set of unit-tests based on `Boost.Test framework
+ <http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html>`_
+
+ - Continuous integration using an in-house installation of Jenkins build bots and the
+ hosted `travis-ci <https://travis-ci.org/named-data/ndn-cxx>`_ continuous
+ integration service compiles and verifies correctness of the library for each commit
+
+- **Wire format**
+
+ + Full support of `NDN-TLV packet format v0.1 <http://named-data.net/doc/NDN-TLV/0.1/>`_
+ + Pure C++ implementation of wire encoding/decoding with simple access to wire format
+ of all NDN packet abstractions via ``wireEncode`` and ``wireDecode`` methods
+
+ In many cases, NDN packet abstractions are just "indices" to the wire format
+
+ + Optimized wire format encoding/decoding
+
+- **Communication with the forwarder**
+
+ + Enable connecting to local forwarder via UNIX and TCP transports and to remote
+ forwarders using TCP transport
+ + Full support for communication with `Named Data Networking Forwarding Daemon (NFD)
+ <https://github.com/named-data/NFD>`_
+
+ - Full support for `NFD management protocols
+ <http://redmine.named-data.net/projects/nfd/wiki/Management>`_ to NFD status
+ information, create and manage NFD Faces, receive NFD Face status change
+ notifications, update StrategyChoice for namespaces, and manage routes in RIB
+ - Support for `LocalControlHeader
+ <http://redmine.named-data.net/projects/nfd/wiki/LocalControlHeader>`_ to implement
+ special NDN applications that need low-level control of NDN packet forwarding
+
+- **Security**
+
+ + Extensive set of security primitives, allowing implementation of truly secure NDN
+ applications in a simplified manner
+
+ - **KeyChain**: provides simple interfaces of packet signing, and key and certificate
+ management
+ - **ValidatorConfig**: validator that implements trust model defined in a configuration
+ file
+ - **CommandInterestGenerator** and **CommandInterestValidator**: convenient helpers to produce
+ and validate command interests, while preventing potential replay attacks
+
+ + Several implementations of trusted platform modules to securely manage private keys
+
+ - **SecTpmOsx**: TPM based on OSX KeyChain (OSX-specific)
+ - **SecTpmFile**: TPM that uses file-based access control to protect keys (cross-platform)
+
+ + Extensive set of security command-line tools to manage security identities and certificates
+
+ - Generating private/public keys
+ - Issuing certificates
+ - Exporting/importing identities
+ - Managing default security settings
+
+- **Miscellaneous tools**
+
+ + Scheduler to support delayed time operations
+ + NDN regular expressions
+ + Simple config file to alter various aspects of the library
+ + **tlvdump**: a simple tool to visualize TLV-encoded blocks
diff --git a/docs/index.rst b/docs/index.rst
index 1e73bdf..2c611c9 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,13 +1,50 @@
-NDN C++ library with eXperimental eXtensions
-============================================
+ndn-cxx: NDN C++ library with eXperimental eXtensions
+=====================================================
-`API documentation (doxygen) <doxygen/annotated.html>`_
+ndn-cxx is a C++ library, implementing Named Data Networking (NDN) primitives that can be
+used to implement various NDN applications. The library is currently being used as part of
+the following projects:
+
+- `NFD - NDN Forwarding Daemon <https://github.com/named-data/NFD>`__
+- `NLSR - Named-data Link-State Routing
+ protocol <https://github.com/named-data/NLSR>`__
+- `repo-ng - Next generation of NDN
+ repository <https://github.com/named-data/repo-ng>`__
+- `ChronoChat - Multi-user NDN chat
+ application <https://github.com/named-data/ChronoChat>`__
+- `ChronoSync - Sync library for multiuser realtime applications for
+ NDN <https://github.com/named-data/ChronoSync>`__
+- `ndn-tlv-ping - Ping Application For
+ NDN <https://github.com/named-data/ndn-tlv-ping>`__
+- `ndn-traffic - Traffic Generator For
+ NDN <https://github.com/named-data/ndn-traffic>`__
+
+Please submit any bugs or issues to the `ndn-cxx issue tracker
+<http://redmine.named-data.net/projects/ndn-cxx/issues>`__.
+
+ndn-cxx Documentation
+---------------------
+
+- `API documentation (doxygen) <doxygen/annotated.html>`_
.. toctree::
- code-style
+ RELEASE_NOTES
+ INSTALL
examples
tutorials/security-library
tutorials/utils-ndn-regex
tutorials/security-validator-config
manpages
- :maxdepth: 2
+ code-style
+ :maxdepth: 1
+
+License
+-------
+
+ndn-cxx is an open source project licensed under BSD license. For more
+information about the license, refer to
+`COPYING <https://github.com/named-data/ndn-cxx/blob/master/COPYING>`_.
+
+While the license does not require it, we really would appreciate it if
+others would share their contributions to the library if they are
+willing to do so under the same license.