blob: 9823805f8b82a080fed65a023ef40f02125fb9d9 [file] [log] [blame] [view]
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -07001ChronoSync: synchronization library for distributed realtime applications for NDN
2=================================================================================
3
Davide Pesaventoc2489b42017-10-28 17:19:08 -04004[![Build Status](https://travis-ci.org/named-data/ChronoSync.svg?branch=master)](https://travis-ci.org/named-data/ChronoSync)
5
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -07006In supporting many distributed applications, such as group text messaging, file sharing,
7and joint editing, a basic requirement is the efficient and robust synchronization of
8knowledge about the dataset such as text messages, changes to the shared folder, or
Davide Pesaventoc2489b42017-10-28 17:19:08 -04009document edits. This library implements the
10[ChronoSync protocol](https://named-data.net/wp-content/uploads/2014/03/chronosync-icnp2013.pdf),
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070011which exploits the features of the Named Data Networking architecture to efficiently
12synchronize the state of a dataset among a distributed group of users. Using appropriate
13naming rules, ChronoSync summarizes the state of a dataset in a condensed cryptographic
14digest form and exchange it among the distributed parties. Differences of the dataset can
15be inferred from the digests and disseminated efficiently to all parties. With the
16complete and up-to-date knowledge of the dataset changes, applications can decide whether
17or when to fetch which pieces of the data.
18
Alexander Afanasyev36eb3ed2017-01-11 12:35:58 -080019ChronoSync uses [ndn-cxx](https://github.com/named-data/ndn-cxx) library as NDN development
20library.
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070021
22ChronoSync is an open source project licensed under GPL 3.0 (see `COPYING.md` for more
23detail). We highly welcome all contributions to the ChronoSync code base, provided that
24they can licensed under GPL 3.0+ or other compatible license.
25
26Feedback
27--------
28
29Please submit any bugs or issues to the **ChronoSync** issue tracker:
30
Davide Pesaventoc2489b42017-10-28 17:19:08 -040031* https://redmine.named-data.net/projects/chronosync
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070032
33Installation instructions
34-------------------------
35
36### Prerequisites
37
38Required:
39
Davide Pesaventoc2489b42017-10-28 17:19:08 -040040* [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/)
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070041
42### Build
43
44To build ChronoSync from the source:
45
46 ./waf configure
47 ./waf
48 sudo ./waf install
49
Yingdi Yue042f832015-02-09 14:52:59 -080050To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The
51command will disable parallel compilation.
52
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070053If configured with tests: `./waf configure --with-tests`), the above commands will also
54generate unit tests in `./build/unit-tests`