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.

If you are following Alex A's suggestion and installed his package of ccnx, you don't have to input the name prefix for your data manually. However, if you haven't installed his ccnx package, or your hub does not support prefix auto configuration, you'll have to manually input a routable prefix for your data.

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).

== Known Issues ==
1. When you switch to a new room, you'll temporarily see yourself in two nodes for a minute or so. It won't affect others, just yourself. Hopefully it's not so disturbing.
2. Sometimes you may not get the most up-to-date chat history.

== For those who wants (or is forced to) compile from source code ==

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 "sync" submodule
$ 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).

