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 | |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 7 | In supporting many distributed applications, such as group text messaging, file sharing, |
| 8 | and joint editing, a basic requirement is the efficient and robust synchronization of |
| 9 | 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] | 10 | document edits. This library implements the |
| 11 | [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] | 12 | which exploits the features of the Named Data Networking architecture to efficiently |
| 13 | synchronize the state of a dataset among a distributed group of users. Using appropriate |
| 14 | naming rules, ChronoSync summarizes the state of a dataset in a condensed cryptographic |
| 15 | digest form and exchange it among the distributed parties. Differences of the dataset can |
| 16 | be inferred from the digests and disseminated efficiently to all parties. With the |
| 17 | complete and up-to-date knowledge of the dataset changes, applications can decide whether |
| 18 | or when to fetch which pieces of the data. |
| 19 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame^] | 20 | 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] | 21 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame^] | 22 | ## Installation |
Alexander Afanasyev | 7c97cfa | 2014-07-02 12:10:13 -0700 | [diff] [blame] | 23 | |
| 24 | ### Prerequisites |
| 25 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame^] | 26 | * [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] | 27 | |
| 28 | ### Build |
| 29 | |
| 30 | To build ChronoSync from the source: |
| 31 | |
| 32 | ./waf configure |
| 33 | ./waf |
| 34 | sudo ./waf install |
| 35 | |
Yingdi Yu | e042f83 | 2015-02-09 14:52:59 -0800 | [diff] [blame] | 36 | To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The |
| 37 | command will disable parallel compilation. |
| 38 | |
Davide Pesavento | a0546db | 2020-04-01 19:18:04 -0400 | [diff] [blame^] | 39 | If configured with tests (`./waf configure --with-tests`), the above commands will also |
| 40 | generate unit tests that can be run with `./build/unit-tests`. |
| 41 | |
| 42 | ## Reporting bugs |
| 43 | |
| 44 | Please submit any bug reports or feature requests to the |
| 45 | [ChronoSync issue tracker](https://redmine.named-data.net/projects/chronosync/issues). |
| 46 | |
| 47 | ## Contributing |
| 48 | |
| 49 | We greatly appreciate contributions to the ChronoSync code base, provided that they are |
| 50 | licensed under the GPL 3.0+ or a compatible license (see below). |
| 51 | If you are new to the NDN software community, please read the |
| 52 | [Contributor's Guide](https://github.com/named-data/.github/blob/master/CONTRIBUTING.md) |
| 53 | to get started. |
| 54 | |
| 55 | ## License |
| 56 | |
| 57 | ChronoSync is an open source project licensed under the GPL version 3. |
| 58 | See [`COPYING.md`](COPYING.md) for more information. |