Like Stacks, Apps are a way for releasing ROS software. One analogy to think of is that Stacks are like libraries, whereas Apps are like executables.
Apps are very similar to Stacks in that they are both collections of ROS Packages. They both also have version numbers and can declare dependencies on other Stacks. There are some important differences between the two:
- Apps have a single entry-point
- Apps may declare additional UI-related resources, such as icons
- You cannot declare a dependency on an App. Apps are leaves in the dependency tree.
Another reason for the distinction between Apps and Stacks is cleanliness. Often code needed to run or demonstrate a Stack must include extra dependencies, such as GUI tools and robot configurations (e.g. simulators). Apps themselves should also have no API, whereas Stacks are entirely API.
Apps are easy to create by hand. An app is simply a directory descended from ROS_ROOT, ROS_PACKAGE_PATH, or ROS_STACK_PATH (see ROS Environment Variables) that has a app.xml file in it. Any Packages in this directory are considered to be part of the App.
Apps are still under active development.