blob: 006dbe2e14fa5f050c9c35e6adb7f631b3741e18 [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)
Davide Pesavento54bf15a2022-07-26 03:23:32 -04005![Language](https://img.shields.io/badge/C%2B%2B-17-blue)
Davide Pesavento22eeb292021-10-01 21:20:53 -04006![Latest version](https://img.shields.io/github/v/tag/named-data/ChronoSync?label=Latest%20version)
Nick Gordondc885072017-12-21 14:18:49 -06007
Davide Pesavento85601032023-02-14 03:02:02 -05008> DEPRECATION NOTICE: ChronoSync's design is outdated. We recommend using more recent sync protocols, such as [PSync](https://github.com/named-data/PSync) or [StateVectorSync](https://named-data.github.io/StateVectorSync/).
Philipp Moll96b9a1d2021-02-26 22:13:55 +01009
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 Pesavento85601032023-02-14 03:02:02 -050029* [ndn-cxx and its dependencies](https://docs.named-data.net/ndn-cxx/current/INSTALL.html)
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070030
31### Build
32
Davide Pesavento85601032023-02-14 03:02:02 -050033To build ChronoSync from source:
Alexander Afanasyev7c97cfa2014-07-02 12:10:13 -070034
35 ./waf configure
36 ./waf
37 sudo ./waf install
38
Davide Pesavento2ff10562023-02-19 20:14:06 -050039To build on memory constrained systems, please use `./waf -j1` instead of `./waf`. This
40will disable parallel compilation.
Yingdi Yue042f832015-02-09 14:52:59 -080041
Davide Pesaventoa0546db2020-04-01 19:18:04 -040042If configured with tests (`./waf configure --with-tests`), the above commands will also
Davide Pesavento2ff10562023-02-19 20:14:06 -050043build a suite of unit tests that can be run with `./build/unit-tests`.
Davide Pesaventoa0546db2020-04-01 19:18:04 -040044
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
Davide Pesavento2ff10562023-02-19 20:14:06 -050052Contributions to ChronoSync are greatly appreciated and can be made through our
53[Gerrit code review site](https://gerrit.named-data.net/).
Davide Pesavento85601032023-02-14 03:02:02 -050054If you are new to the NDN software community, please read our [Contributor's Guide](
55https://github.com/named-data/.github/blob/main/CONTRIBUTING.md) to get started.
Davide Pesaventoa0546db2020-04-01 19:18:04 -040056
57## License
58
Davide Pesavento85601032023-02-14 03:02:02 -050059ChronoSync is free software distributed under the GNU General Public License version 3.
60See [`COPYING.md`](COPYING.md) for details.