Re: Updated dataflow semantics for RTT

Herman Bruyninckx <[email protected]> Mon, 28 Sep 2015 14:56:59 +0200 (CEST)
Newsgroups gmane.science.robotics.orocos.devel
Message-ID <alpine.DEB.2.11.1509281450130.30972@pma-15-011>
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-986400326-1443445027=:30972
Content-Type: TEXT/PLAIN; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

On Mon, 28 Sep 2015, S Roderick wrote:

>
> On Sep 28, 2015, at 08:44 AM, Herman Bruyninckx=20
> <[email protected]> wrote:
>
> On Mon, 28 Sep 2015, S Roderick wrote:
>
> On Sep 27, 2015, at 08:11 AM, Herman Bruyninckx
> <[email protected]> wrote:
>
> On Mon, 21 Sep 2015, Johannes Meyer wrote:
>
> Dear Orocos community,
> during the last few weeks we have been working on the concept and
> implementation of a major redesign of the Orocos
> RTT dataflow, that we would like to share and ask for your valuable fee=
dback.
> There was already a previous
> discussion on the mailing list about the topic earlier this year [1], a=
nd the
> following proposal tries to address
> all the issues mentioned there.
>
> With the version 2 of the Orocos toolchain some years ago, the previous=
 data
> flow architecture, which was based on a
> single data object and buffer shared between all ports participating at=
 the
> same connection, was replaced by a
> connection architecture based on data flow, where each pair of output a=
nd
> input ports (or streams) is connected
> through an individual channel, each having its own data object or buffe=
r.
> While there was a well substantiated
> motivation for this update and it solved some of the shortcomings in RT=
T
> version 1 [2], it also introduced some new,
> sometimes hidden, problems and broke other use cases. One example is an=
 input
> port with multiple connections, where
> due to the ambiguity in which channel to read from the result is someti=
mes
> unexpected to the user, who expects that
> each write overwrites previous samples in case of simple data connectio=
ns.
>
> We assembled a document (see attachment, or [3]) which introduces the v=
ersion
> 1 and version 2 data flow semantics
> for those who are not aware of the details, three example use cases and
> presents the new dataflow architecture we
> have in mind, which ideally works for a superset of use cases that are
> supported by RTT version 1 and 2.=C2=A0
>
> We do not want to go into details here, so only a short summary for tho=
se who
> do not want to read the full document:
> We propose to add two more boolean flags to the ConnPolicy struct that
> describes the type of connection between two
> ports: "shared" and "mandatory". Furthermore the existing "pull" flag, =
which
> was only meaningful for remote
> connections, now has a big influence for local connections.
>
> "push" vs. "pull"
>
>
> Thanks for this nice effort. I think it is really time to consider a ne=
xt
> generation of Orocos RTT...
>
> If you allow me to bring in my two cents... It's possible that you won'=
t like
> the
> message, or find it off-topic, but I think I should share it with you a=
nyway=E2=80=A6
>
> These are interesting ideas Herman, but=C2=A0you're right in that they'=
re somewhat
> off topic. For this discussion we are interested in the here and now - =
in
> evolutionary and incremental changes to a product=C2=A0that has served =
many of us
> fairly well.
>
> The evolution from the current "data flow architecture" to a "event str=
eam"
> _can_/_could_ be done in an incremental way...
> Policy by policy. (i.e., pull/push; read/write; buffer/port;...)=20
> Separation by separation. (i.e., component/activity/thread/OS; pub/sub =
to
> event stream;...)
> =C2=A0
> With all due respect, I think that your idea of "incremental" and mine =
are=20
> two very different things (and both are equally valid). It took us two =
full=20
> years to convert our system from RTT v1 to RTT v2. There is no way we w=
ould=20
> even consider moving to a RTT replacement without some serious review a=
nd up=20
> front discover and prototype use of a replacement system. So incrementa=
l for=20
> us is defined in months to years =E2=80=A6

Again I agree. But I see no reason why introducing less strict policies c=
an
not be done alongside keeping the existing ones...
Of course, it would result in a transition phase with even more conceptua=
l
complexity than what is there now already, but it would allow the kind of
comparative prototyping you have in mind.

My concrete suggestion for such incremental "revolution": add a "event
stream" to complement the "lock-free buffer", as a second realtime-ready
internal IPC. This development is worth the effort anyway, and I know of =
no
implementation that is realtime ready... (Building further on TLSF and
MQueue might be low hanging fruit. Might be...)
This boils down to _adding_ a feature, which is always simpler than
deprecating one. And _if_ it turns out that it can cover the use cases of
the lockfree buffer (and some others) equally well, one could deprecate
those, later one.

> Personally, I'm not so worried about "better" as I am worried
> about "good enough".
>
> I am mostly interested in "simple". Because that is what determines how
> much of the potential mind share a project actually gets.
> (Mind that I am not interested in "easy", which is the driver for ROS, =
and
> that serves another public well.)
> =C2=A0
> +1 on simple.
> S
>
>
--8323329-986400326-1443445027=:30972
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-- 
Orocos-Dev mailing list
[email protected]
http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev

--8323329-986400326-1443445027=:30972--