Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 1 | # ChronoSync: synchronization library for distributed realtime applications for NDN |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 2 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 3 |  |
Davide Pesavento | c2489b4 | 2017-10-28 17:19:08 -0400 | [diff] [blame] | 4 | [](https://travis-ci.org/named-data/ChronoSync) |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 5 |  |
Nick Gordon | dc88507 | 2017-12-21 14:18:49 -0600 | [diff] [blame] | 6 | |
Philipp Moll | 96b9a1d | 2021-02-26 22:13:55 +0100 | [diff] [blame^] | 7 | > 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 Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 9 | In supporting many distributed applications, such as group text messaging, file sharing, |
| 10 | and joint editing, a basic requirement is the efficient and robust synchronization of |
| 11 | knowledge about the dataset such as text messages, changes to the shared folder, or |
Davide Pesavento | c2489b4 | 2017-10-28 17:19:08 -0400 | [diff] [blame] | 12 | document edits. This library implements the |
| 13 | [ChronoSync protocol](https://named-data.net/wp-content/uploads/2014/03/chronosync-icnp2013.pdf), |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 14 | which exploits the features of the Named Data Networking architecture to efficiently |
| 15 | synchronize the state of a dataset among a distributed group of users. Using appropriate |
| 16 | naming rules, ChronoSync summarizes the state of a dataset in a condensed cryptographic |
| 17 | digest form and exchange it among the distributed parties. Differences of the dataset can |
| 18 | be inferred from the digests and disseminated efficiently to all parties. With the |
| 19 | complete and up-to-date knowledge of the dataset changes, applications can decide whether |
| 20 | or when to fetch which pieces of the data. |
| 21 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 22 | ChronoSync uses the [ndn-cxx](https://github.com/named-data/ndn-cxx) library. |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 23 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 24 | ## Installation |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 25 | |
| 26 | ### Prerequisites |
| 27 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 28 | * [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/current/INSTALL.html) |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 29 | |
| 30 | ### Build |
| 31 | |
| 32 | To build ChronoSync from the source: |
| 33 | |
| 34 | ./waf configure |
| 35 | ./waf |
| 36 | sudo ./waf install |
| 37 | |
Yingdi Yu | e042f83 | 2015-02-09 14:52:59 -0800 | [diff] [blame] | 38 | To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The |
| 39 | command will disable parallel compilation. |
| 40 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame] | 41 | If configured with tests (`./waf configure --with-tests`), the above commands will also |
| 42 | generate unit tests that can be run with `./build/unit-tests`. |
| 43 | |
| 44 | ## Reporting bugs |
| 45 | |
| 46 | Please 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 | |
| 51 | We greatly appreciate contributions to the ChronoSync code base, provided that they are |
| 52 | licensed under the GPL 3.0+ or a compatible license (see below). |
| 53 | If 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) |
| 55 | to get started. |
| 56 | |
| 57 | ## License |
| 58 | |
| 59 | ChronoSync is an open source project licensed under the GPL version 3. |
| 60 | See [`COPYING.md`](COPYING.md) for more information. |