A design pattern for adding near real time collaboration to your project
Piggyback your application's undo/redo framework to allow users to collaborate in near real time on the same project. I will present in detail the design I used to add this feature to FontForge which is already around 400KLOC of C code. Leveraging the undo framework helps to minimize the impact on the code base at large, with few additional function calls required and an easy path to stubbing out the feature if a build doesn't desire it. It is very important to minimize the footprint of the collaboration code for acceptance into an open source project where everybody might not be so keen on the feature.
Another major advantage of this design is that a strong multi operation undo/redo system in an application is useful to all, not just those who care about collaboration.
I'll have real code^TM in the talk from FontForge which uses ZeroMQ to handle the nasty low level network stuff.