The goal of identifying user-roles is to be able to categorize different tooling scenarios, and what types of users will be interested in specific features. Tools designed for role type may not be appropriate for other roles. For example, a GUI for recipe editing may not be helpful for an application developer that's looking to remote debug their application on a target. On the other hand, a simple press-button build GUI may not be interesting for a seasoned OE hacker.

The application developer's main concern is developing and testing any given application on a target system. This person does not care nor want to learn much about the internal details of the build system or package metadata. The best possible case is that these systems are transparent and the developer is able to easily build and deploy applications to the target device.

Distro developer's concern is to compose packages and configurations into a working system. The distro developer has deep knowledge of packages available in Linux, and how sets of packages work well together. Additionally the distro developer is not afraid to work deeply within the build system to make it better, and to produce better, more maintainable package metadata and target systems.

The package developer is often a mix of the previous two role types. Often they have some knowledge of the build system and applications and build tools used to create those applications. They typically act as a bridge between pure application developers and the resulting target system that's produced. Package developers write recipes, debug applications, and debug build problems.