[Rock-dev] Proposal: Rock Apps

Sylvain Joyeux sylvain.joyeux at dfki.de
Thu Oct 13 11:26:35 CEST 2011


On 10/12/2011 08:00 PM, Alexander Duda wrote:
> First of all why do we need dependencies between the "Apps"?
> ->   Most of the stuff insight the package is going to be ruby therefore
> I have the feeling this will end up in a real mess if one app depends on
> multiple other apps (How can a developer ensure that he is not breaking
> dependent Apps?)
The idea behind dependencies is to share "common" stuff like models and 
log convertion/sanity scripts. The main target being to have a "core 
rock" app that defines common models, data services and log 
convertion/sanity checks.

You will obviously have the exact same issues than with anything that 
has dependencies. Component developers must not break interfaces, 
library developers must not break APIs, app developers will need to make 
sure that changes to what they "export" (models, log convertion and 
sanity checks) stay backward compatible.

> ->   The calibration example is for me something which definitely should
> go to the orogen module of the sensor or the thing which shall be
> calibrated and not in its own app.
Except that calibration is usually a multi-device thing, or a 
device-generic one (e.g.: any camera), and require more information 
about the system (e.g.: configuration files, transformer configuration, ...)

What I personally want to push with apps is a "functional view" of Rock, 
which is IMO orthogonal from the "component view" we have. In ROS, this 
is done with stacks. However, stacks don't do the trick for me as they 
apply on both the "software package" and "system functional" aspects.

> ->   If each app is self contained we do not have to announce it to the
> software stack. Autoproj knows about them anyway if someone wants to
> list them. Or we could even install them to install/apps
Apps do not have to be installed. In my mind, we *will* have 
dependencies between apps (read further for more). Now, whether they 
should be explicit or implicit, I don't know.

> Second:
> Why is there a need for migration scripts in an App folder?
> ->  this should go to the type definition (orogen task) or everyone else
> using the type/ task is not getting the migration script.
I don't agree. Type migration is a very "system-wide" concern. When you 
add a migration for base/Time, you actually affect *every type* that is 
using base/Time somehow.

My idea behind the proposal was to have only a few places where these 
"system-wide" files were placed (when thinking about it, I thought that 
a typical developer would have 2-3 apps installed on his system). The 
underlying idea was to have a "Rock app" where all rock-wide type 
convertion scripts would be added for Rock types.

This way of thinking is built upon my personal experience with Roby 
models. I started placing them in the component that defined them, but 
that ended up being totally unmanageable, as -- by definition -- Roby 
models have roots in system definition (data services, device models, 
generic compositions).

As we all noticed, scripts in component's scripts/ folder tend to 
require much more than "just the component" from the package. It ends up 
having people add unneeded dependencies between packages just so that 
their scripts work :(.

Moreover, as one of the main integration guy for iMoby, it is really 
painful to not have a place where I have an overview of what I run to 
double-check results, replay log files, ...

Finally, and more importantly, one (personal) goal for these apps is 
that people transition slowly to using the supervision even for their 
day-to-day scripts. That's possible only if done in a structure where it 
is manageable.

> Third:
> Why is there a need for a log folder?
> ->  the app folder is usual under a version control so why polluting its
> folder structure with log files which are not going to be committed?
This is not only "version control" structure but also runtime structure. 
The log/ directory is populated at runtime (and does not have to exist 
in the VCS)

> ->  Maybe we could add a default log path to the environment
I'd like to *not* add even more environment variables to the 
environment. When running a system (these days, using Roby), I 
personally very much like that I can know *for sure* where the log files 
are.

> Fourth:
> Why is a sanity check not a script?
> -> I would place it in scripts/sanity
Because sanity checks would follow the same "pattern" than log 
convertions. They are configuration files for a generic rock-log-sanity 
checker.
-- 
Sylvain Joyeux (Dr.Ing.)
Space & Security Robotics

!!! Achtung, neue Telefonnummer!!!

Standort Bremen:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Straße 5
28359 Bremen, Germany

Phone: +49 (0)421 178-454136
Fax:   +49 (0)421 218-454150
E-Mail: robotik at dfki.de

Weitere Informationen: http://www.dfki.de/robotik
-----------------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
(Vorsitzender) Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
USt-Id.Nr.:    DE 148646973
Steuernummer:  19/673/0060/3
-----------------------------------------------------------------------


More information about the Rock-dev mailing list