blob: 7f526c4321ba6be49a4c2d55088f580188b52e2d [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
Nick Gordondc885072017-12-21 14:18:49 -06006If you are new to the NDN community of software generally, read the
7[Contributor's Guide](https://github.com/named-data/NFD/blob/master/CONTRIBUTING.md).
8
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -07009In supporting many distributed applications, such as group text messaging, file sharing,
10and joint editing, a basic requirement is the efficient and robust synchronization of
11knowledge about the dataset such as text messages, changes to the shared folder, or
Davide Pesaventoc2489b42017-10-28 17:19:08 -040012document edits. This library implements the
13[ChronoSync protocol](https://named-data.net/wp-content/uploads/2014/03/chronosync-icnp2013.pdf),
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070014which exploits the features of the Named Data Networking architecture to efficiently
15synchronize the state of a dataset among a distributed group of users. Using appropriate
16naming rules, ChronoSync summarizes the state of a dataset in a condensed cryptographic
17digest form and exchange it among the distributed parties. Differences of the dataset can
18be inferred from the digests and disseminated efficiently to all parties. With the
19complete and up-to-date knowledge of the dataset changes, applications can decide whether
20or when to fetch which pieces of the data.
21
Alexander Afanasyev36eb3ed2017-01-11 12:35:58 -080022ChronoSync uses [ndn-cxx](https://github.com/named-data/ndn-cxx) library as NDN development
23library.
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070024
25ChronoSync is an open source project licensed under GPL 3.0 (see `COPYING.md` for more
26detail). We highly welcome all contributions to the ChronoSync code base, provided that
27they can licensed under GPL 3.0+ or other compatible license.
28
29Feedback
30--------
31
32Please submit any bugs or issues to the **ChronoSync** issue tracker:
33
Davide Pesaventoc2489b42017-10-28 17:19:08 -040034* https://redmine.named-data.net/projects/chronosync
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070035
36Installation instructions
37-------------------------
38
39### Prerequisites
40
41Required:
42
Davide Pesaventoc2489b42017-10-28 17:19:08 -040043* [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/)
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070044
45### Build
46
47To build ChronoSync from the source:
48
49 ./waf configure
50 ./waf
51 sudo ./waf install
52
Yingdi Yue042f832015-02-09 14:52:59 -080053To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The
54command will disable parallel compilation.
55
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070056If configured with tests: `./waf configure --with-tests`), the above commands will also
57generate unit tests in `./build/unit-tests`