The OpenLB project aims at setting up an open source implementation of lattice Boltzmann methods (LBM) in an object oriented framework. The code is written in C++ and intended to be used both by application programmers and by developers who may add their own particular dynamics. It supports advanced data structure that take into account complex geometries and parallel program executions. The programming concepts strongly rely on dynamic genericity via the use of object oriented interfaces as well as static genericity by means of templates. This design allows an efficient, straightforward and intuitive implementation of LBM. It is cross-verified for software quality by several reviewers and is presented along with a user guide. To the knowledge of the authors, the OpenLB project is the first attempt to produce a generic platform for LB programming and to share it with the community via a system of open source contributions.