Instructing a robot by demonstration is considered robot programming, as is the implementation of a software library for robotics. Advanced robotic systems are expected to interact, collaborate, and cooperate with persons in different environments (production assistant, robots co-working with persons, cognitive factory, domestic services, service robots, etc.), and they need to be able to perform a multitude of different tasks (multi-purpose systems). Robot programming was often related to bare-metal programming and could be done only by highly skilled programming experts. This approach neither scaled with respect to the complexity challenge nor allowed its application domains to easily get access to and make use of robotics technology. Although a large number of open-source software packages for robotic systems have become available worldwide, available software integration frameworks have still not achieved the status of robotics commodities.