Hi,
I haven't seen any use cases for the app manager put forward, and it
might be useful discussing them to clarify what features and
requirements really are necessary for an App Manager v2.
Two quickly come to mind:
1. Anne is a roboticist working on a custom robot(s) at [home|work] and
wants to provide a way to both easily control its standard features
(i.e. teleop), but also provide a way to control its unique, custom
features (i.e. the onboard espresso machine). She has full control of
the hardware and software platform, and can install/upgrade software
packages as needed.
2. FooRobots Corp is mass producing a line of robots with identical
configuration and hardware capabilities that are being marketed at
people who are not roboticists. Customers can peer under the hood, but
that voids their warranty. It wants:
(a) To develop custom apps that allow customers to control the robot's
standard features and ship them on all robots by default via a standard,
immutable software image.
(b) To encourage third party developers to develop additional, custom
apps for its robots and provide a way for these to be easily installed
from its own app store.
There's probably a bunch of others. Anyone?
From these two perspectives, we can look at the goals and implementation
decisions at
<
http://ros.org/wiki/rocon_app_platform/Reviews/App%20Platform%20Proposal>
to see if they make sense. So:
- Platform_G00 to Platform_G04 and Platform_G06 seem fine in the context
of both use cases.
- Platform_G05 makes sense only for use case (2b) and only for the
deployment part. The dependency installation/upgrade part is in direct
conflict with (2a). A useful analogue here is phone apps - nearly all
developers work with only what the standard platform provides, without
being able to modify the system to e.g. install a system-wide 3rd party
library.
- Rapp_G00 is important in the context of both use cases, but mostly for
(2a).
- Rapp_G01 seems unnecessary in the context of Rapp_G00 for (1) and for
(2) is probably redundant.
- Rapp_G02 seems fine for both.
- Rapp_G03 is unnecessary for both (1) and (2)
- Rapp_G04 seems to have been truncated in editing.
- Platform_D05(a,b,c,d) is unnecessary for both (1) and (2).
- The others seem fine.
- Rapp_D03 and Rapp_D04 both seem to be unnecessary for (1) and (2).
- The others seem fine.
A few things see, missing:
- Similar to Platform_D00a, provide some default rapps for common
functionality (i.e. teleop) for the case of (1)
- Ensure that in developing rapps that provide a UI, that they can
follow the best practices and usability guidelines for the UI's platform
(i.e. no lowest common denominator approach to UI - probably making
Rapp_D00a redundant, also install, launch and use phone apps in the same
way as any other phone app, etc). This is useful for (1) but necessary
for (2).
- Provide a way for end users to operate rapp UI's without knowing
anything about ROS - necessary for (2)
- Provide hooks into app manager, but not necessarily a default
implementation, of a way to install new apps at run time. Runtime
installation is unnecessary for (1) and (2a), and (2b) will likely
entail a custom implementation anyway.
//Mike
--
Michael Gratton <
mic...@quuxo.com>
Quuxo Software <
http://quuxo.com/>