Modernizing the CFEngine project
2020-02-04, 16:00–16:50, B.2.009

Mark Burgess released the initial version of CFEngine in 1993. It's been used, and developed by people all around the world since then. It's a large C codebase, with a lot of history. In the last few years, we've been taking important steps to prepare the codebase for the future. We are making it more modular, reusable, safe, and maintainable.


This talk will touch on various aspects of maintaining a large open source code base. Modularity, code quality / style, contribution guidelines, collaboration. We are using parts of the codebase to develop new projects, like a new syntax checker for CFEngine policy language, and invite developers to use our codebase in their software.

We will also show some modern technologies used for code analysis and testing. We are using Jenkins, Travis, Codecov, LGTM / GitHub CodeQL, ASAN, valgrind, in our CI setup. These tools help us uncover memory leaks, bugs, security issues, regressions, etc. in an efficient way. We will focus on how easy it is to introduce these tools, even to large projects with several dependencies.

The speakers are working on the CFEngine project full time, employed by Northern.tech, the company behind Mender.io and CFEngine.