Why Cerberus uses an external scheduler and not internal one like CruiseControl?
Cerberus was developed as a stateless continuous building tool. In this context it means that Cerberus won’t consume RAM all the time. For example, CruiseControl requires about 120 Megabites of RAM even if it has nothing to do. If you have a dedicated server just for running Continuous Integration tool, then probably you would not care about it. But if you like to use your development computer for building projects, then probably you would like to avoid wasting your computer’s resources like RAM and CPU cycles. In that kindof situation stateless nature of Cerberus is appropriate. Contrary to CruiseControl, Cerberus process will not be running most of the time. Every now and then Cerberus would be activated by an external scheduler (or subversion hook, or something else) to check if your sources the software repository have changed. Time to check this is usually small, so Cerberus process will not require any resources for too long. It is a really smart and nifty technique.