Shout out to Zoneminder Project

For the first ten years of my open source life, I spent tens of thousands of hours pouring over hundreds of thousands of lines of source code across perhaps a dozen or fewer projects, mostly GCC, G++, GDB, and various other parts of the GNU toolchain. If there were a PhD in open source software, I was definitely specialist enough to have earned one. I was vaguely aware of the mountains of source code in the BSD distribution, and obviously Linux, but didn’t really pay much attention to that until I joined Red Hat.

For the ten plus years after that, I have barely succeeded in scratching the surface of the 10,000+ packages that can be easily installed without the need to study the source code. It is both a luxury to have available the resources that are represented by the 200+ million lines of source code packaged for a typical Linux distribution, but it is also overwhelming…how can one possibly know all there is to know? And yet, I find that when I need to look for something, it’s there. When I needed to control and monitor some PTZ network cameras, I looked for an open source solution and discovered a really wonderful package called Zoneminder.

From the website:

ZoneMinder is an integrated set of applications which provide a complete surveillance solution allowing capture, analysis, recording and monitoring of any CCTV or security cameras attached to a Linux based machine. […] A partial list is given in the Wiki and Support sections, please give feedback in the Forums if it works with yours. ZoneMinder also requires MySQL and PHP, and is enhanced by a webserver such as Apache.

The modularity of ZoneMinder–a hallmark of almost all great open source projects–delivers several benefits over traditional monolithic programs that pretend they are all one giant integrated applications. First and foremost, separate applications loosely coupled make for a naturally scalable solution. Each separate monitor spawns its own set of capture, analysis, recording, and monitoring tasks, which means that load spreads very evenly across modern multi-core processors. The loose coupling also makes it much easier to probe, query, or trigger events anywhere in the workflow, rather than dealing with some arbitrary, application-specific scripting language or having to tease apart data that’s been overly processed by the time you can get your hands on it. Nice!

What’s also nice is that Zoneminder integrates wonderfully with Axis cameras–the first IP cameras to my knowledge to integrate eCos, embedded Linux, and other open source software into their device and then expose that functionality to programmers and users as a feature of the camera. Together, IP cameras running embedded open source software and a video server running high-performance open source software shows that yet again that anywhere there is a need, open source can rise to the task. My explanation as to why is simple: there are so many great hands working to lift it up.