blob: 1045861f5260845245829589402f1c626a05a5cb [file] [log] [blame] [view]
Davide Pesaventoa0546db2020-04-01 19:18:04 -04001# ChronoSync: synchronization library for distributed realtime applications for NDN
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -07002
Davide Pesaventoa0546db2020-04-01 19:18:04 -04003![Language](https://img.shields.io/badge/C%2B%2B-14-blue.svg)
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)
Davide Pesaventoa0546db2020-04-01 19:18:04 -04005![Latest Version](https://img.shields.io/github/tag/named-data/ChronoSync.svg?color=darkkhaki&label=latest%20version)
Nick Gordondc885072017-12-21 14:18:49 -06006
Philipp Moll96b9a1d2021-02-26 22:13:55 +01007> DEPRECATION NOTICE: ChronoSync's design is outdated. We recommend using more recent sync protocols, such as [PSync](https://named-data.net/doc/PSync/current/index.html) or [StateVectorSync](https://named-data.github.io/StateVectorSync/).
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
Davide Pesaventoa0546db2020-04-01 19:18:04 -040022ChronoSync uses the [ndn-cxx](https://github.com/named-data/ndn-cxx) library.
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070023
Davide Pesaventoa0546db2020-04-01 19:18:04 -040024## Installation
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070025
26### Prerequisites
27
Davide Pesaventoa0546db2020-04-01 19:18:04 -040028* [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/current/INSTALL.html)
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070029
30### Build
31
32To build ChronoSync from the source:
33
34 ./waf configure
35 ./waf
36 sudo ./waf install
37
Yingdi Yue042f832015-02-09 14:52:59 -080038To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The
39command will disable parallel compilation.
40
Davide Pesaventoa0546db2020-04-01 19:18:04 -040041If configured with tests (`./waf configure --with-tests`), the above commands will also
42generate unit tests that can be run with `./build/unit-tests`.
43
44## Reporting bugs
45
46Please submit any bug reports or feature requests to the
47[ChronoSync issue tracker](https://redmine.named-data.net/projects/chronosync/issues).
48
49## Contributing
50
51We greatly appreciate contributions to the ChronoSync code base, provided that they are
52licensed under the GPL 3.0+ or a compatible license (see below).
53If you are new to the NDN software community, please read the
54[Contributor's Guide](https://github.com/named-data/.github/blob/master/CONTRIBUTING.md)
55to get started.
56
57## License
58
59ChronoSync is an open source project licensed under the GPL version 3.
60See [`COPYING.md`](COPYING.md) for more information.