blob: 8f027ade7cd7d69f130990fbc63392e9aefd53f8 [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 Pesavento22eeb292021-10-01 21:20:53 -04003[![CI](https://github.com/named-data/ChronoSync/actions/workflows/ci.yml/badge.svg)](https://github.com/named-data/ChronoSync/actions/workflows/ci.yml)
4[![Docs](https://github.com/named-data/ChronoSync/actions/workflows/docs.yml/badge.svg)](https://github.com/named-data/ChronoSync/actions/workflows/docs.yml)
5![Language](https://img.shields.io/badge/C%2B%2B-14-blue)
6![Latest version](https://img.shields.io/github/v/tag/named-data/ChronoSync?label=Latest%20version)
Nick Gordondc885072017-12-21 14:18:49 -06007
Philipp Moll96b9a1d2021-02-26 22:13:55 +01008> 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/).
9
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070010In supporting many distributed applications, such as group text messaging, file sharing,
11and joint editing, a basic requirement is the efficient and robust synchronization of
12knowledge about the dataset such as text messages, changes to the shared folder, or
Davide Pesaventoc2489b42017-10-28 17:19:08 -040013document edits. This library implements the
14[ChronoSync protocol](https://named-data.net/wp-content/uploads/2014/03/chronosync-icnp2013.pdf),
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070015which exploits the features of the Named Data Networking architecture to efficiently
16synchronize the state of a dataset among a distributed group of users. Using appropriate
17naming rules, ChronoSync summarizes the state of a dataset in a condensed cryptographic
18digest form and exchange it among the distributed parties. Differences of the dataset can
19be inferred from the digests and disseminated efficiently to all parties. With the
20complete and up-to-date knowledge of the dataset changes, applications can decide whether
21or when to fetch which pieces of the data.
22
Davide Pesaventoa0546db2020-04-01 19:18:04 -040023ChronoSync uses the [ndn-cxx](https://github.com/named-data/ndn-cxx) library.
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070024
Davide Pesaventoa0546db2020-04-01 19:18:04 -040025## Installation
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070026
27### Prerequisites
28
Davide Pesaventoa0546db2020-04-01 19:18:04 -040029* [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/current/INSTALL.html)
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070030
31### Build
32
33To build ChronoSync from the source:
34
35 ./waf configure
36 ./waf
37 sudo ./waf install
38
Yingdi Yue042f832015-02-09 14:52:59 -080039To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The
40command will disable parallel compilation.
41
Davide Pesaventoa0546db2020-04-01 19:18:04 -040042If configured with tests (`./waf configure --with-tests`), the above commands will also
43generate unit tests that can be run with `./build/unit-tests`.
44
45## Reporting bugs
46
47Please submit any bug reports or feature requests to the
48[ChronoSync issue tracker](https://redmine.named-data.net/projects/chronosync/issues).
49
50## Contributing
51
52We greatly appreciate contributions to the ChronoSync code base, provided that they are
53licensed under the GPL 3.0+ or a compatible license (see below).
54If you are new to the NDN software community, please read the
55[Contributor's Guide](https://github.com/named-data/.github/blob/master/CONTRIBUTING.md)
56to get started.
57
58## License
59
60ChronoSync is an open source project licensed under the GPL version 3.
61See [`COPYING.md`](COPYING.md) for more information.