Chronos is a multiparty chat application that demostrates our work on sync (high level idea is similar to ccnx sync, but the design is slightly different).

Chronos will have binary package for Mac OS X 10.7 and 10.8 hopefully by the time of the next retreat. However, it's too much work to do binary packaging for different flavors of Linux, so Linux users will have to compile by their own.

Note that after you click to close Chronos, it will be running on your system tray. To restore it to normal size window, you have to click on the system tray icon (normally on the upper right corner of your screen). Clicking on the dock won't work for now and is still on the to-do list (because I'm using qt for gui, not the native Cocoa framework).

You need pkg-config, protobuf, boost, and qt to compile this app. All of them can be installed through macports.
The following command should do it:
$ sudo port install pkg-config protobuf-cpp boost qt4-mac 

To compile this app:
1. in the top directory, check out the "retreat" branch and also the "sync" submodule
$ git checkout -b retreat origin/retreat
$ git submodule update --init

2. go to sync directory, do:
$ ./waf configure
$ ./waf
$ sudo ./waf install

3. back to the top directory, set up environment for pkg-config, make sure libsync.pc is searchable, this is mine:
$ export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

4. compile Chronos:
$ qmake
$ make

Congratulations! Chronos.app is ready to use (on a Mac).

To run the app, you should provide your nick and the chatroom you want to join, and also the prefix for your data (this should be auto-discovered by retreat time). For example, if you are using spurs.ucla.edu as your testbed hub, you should use "/ndn/ucla.edu" as your prefix.

