Re: First draft of "OROCOS II" proposal...

Christian Schlegel <[email protected]>
Newsgroups gmane.science.robotics.orocos.user
Organization FAW Ulm
Message-ID <[email protected]>
Anthony Mallet wrote:

> Christian Schlegel writes:
> | So I decided with Orocos::SmartSoft to hide the communication layer such
> | that the user space does not contain any CORBA details anymore and that one
> | can even exchange the underlying middleware.
>
> Note that we've been saying this from the very beginning of Orocos...
> But since I've been working with this idea in mind, a few doubts have
> shown up. Maybe you'll have answers :)

I try my best ...

> If you hide CORBA... why use CORBA at all? CORBA is already an
> abstraction of remote procedure calls and, to me, abstrating an
> abstration doesn't make much sense (even not talking about the
> overhead).

First of all, CORBA is completely independent of the operating system etc. You
do not have to cope with byte orders, marshalling etc. It is even available for
different programming languages and the interface description language (I at
least use the IDL for describing the to be transmitted part of a communication
object) is standard and powerful enough. So it is a good idea to build upon
widely accepted approaches.

The overhead can be neglected since the implementation can be done such that
patterns do not impose much additional load. Comparing the slight additional
load to what kind of overhead can be introduced by "wrongly" using CORBA or
trying to implement marshalling with RPC on your own is normally much higher. In
particular, the TAO people do know very well how to achieve efficient
implementations and I don't think it is a good idea to try to compete with that
large group of experts. Just take advantage of what they already developed !

Nevertheless, one could of course implement the patterns on top of RPC as well
and former versions of SmartSoft had been implemented on top of sockets for
example. But believe me, the TAO ORB is great !

Having an abstraction allows me to exchange the underlying communication
mechanism, the features used of CORBA etc. without bothering the SmartSoft user
with progress made at the lower levels. No component developer has to change
anything if I switch from oneway communication to AMI for example ...

>
> The CORBA approach is complex, that's true. If you hide it under a
> simpler layer... then you don't need all the complexity of CORBA, do you?
> If you can switch between different communication mechanisms
> transparently, then you're tight to the simplest of the mechanisms you
> would like to use..

Absolutely right ! CORBA provides much more than is needed in our robotic
applications for example. The danger is that you use that parts of CORBA which
are not adequate. But you can provide the knowledge of what parts are suited by
carefully selecting appropriate mechanisms and hiding them from the component
builder. So what is wrong if there are many many features which are not used ?
These do not influence us in any way. TAO has been selected because the goal of
that ORB is not only realtime, but efficiency ! And that can be experienced if
you compare it to other ORBs ...

> Maybe you'll answer: interoperability, standards, etc. But if you use
> RPC (or XML-RPC, or whatever), aren't you interoperable in the same way?
> Aren't these approaches standards too?

Yes, SOAP even works across middleware platforms. But then you really should not
care too much about efficiency. Those approaches are primarily good at providing
various levels of transparency. The TAO IDL compiler is optimized with respect
to providing very efficient marshalling mechanisms for example. There might be a
lot of applications where efficiency is not the big issue. In our applications,
it is (or still it is, perhaps at some time, computers are even faster ....)

> Thus I think that if one want to use CORBA, then one doesn't want to hide
> it, because CORBA was designed to provide a more powerful approach than
> existing ones, and it _is_ the abstraction already. This is complex, and
> that's the price... It doesn't make sense to use a complex and powerful
> infrastructure if it's hidden behind a simpler one...

I do not agree at all ! Why ? Patterns are in particular good in providing
approved solutions and the communication patterns are such an approved
solutions. The communication patterns provide a component approach where the
kind of interaction of components including the semantics of the interface
methods are exactly specified. Using a general middleware system does not answer
the question of how to ensure the semantic integrity of all the exposed
interface objects and their member functions. By the way, if you talk to people
trying to do object oriented design, they almost always worry about the lack of
semantic consistency of interface methods. In my view, it is completely right to
restrict a framework if it still provides what is needed by giving you support
in mastering the complexity of distributed applications. Using a complex and
powerful infrastructure gives me the good feeling that I know that I will always
find what is needed to implement the SmartSoft patterns. I also know that there
is a large community providing very good support and that I can rely on them.
Nevertheless, I also want to restrict the alternatives such that I can have
students, robotics people and software engineering experts at distributed places
contributing components such that they can work like plug-and-play. Only using
CORBA or other systems is not enough, the SmartSoft patterns already did a great
job in a variety of projects !

> I'm still convinced that the user space shouldn't contain any details on
> the communication layer, though :)

I always welcome any comments and questions and try to answer them as good as
possible. I of course do not claim that the "wrappers" I provide can be used or
make sense for _any_ application. It is just that there are at least a set of
applications where they already proved to be the right approach. So that gives
me the guarantee that the approach is feasible. One of the benefits of the
communication patterns is for example that you are always fully aware when
communication is involved. Since objects are always transmitted by value you
always know that accessing an attribute does not generate any hidden traffic.
Complete transparency which might be acceptable in business applications is not
wanted in robotics. Here you want to have some level of control on resources
without abandoning the advantages of transparency.

By the way, the patterns can be implemented on top of RPCs as well but building
robotic components on top of plain RPC calls is against my goal of complexity
management by decoupling.

Have a nice day :-))

Christian



--

---------------------------------------------------------------------
Christian Schlegel
FAW Ulm (Research Institute for Applied Knowledge Processing)
PO Box 2060
D-89010 Ulm
Germany

Tel. : ++49 (731) 501 8949
Fax  : ++49 (731) 501 999
email: [email protected]
WWW  : http://www.faw.uni-ulm.de/
---------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.