[ros-users] [Discourse.ros.org] [Next Generation ROS] Design By Contract

Asmodehn ros.discourse at gmail.com
Wed Aug 16 09:20:30 UTC 2017

Contracts aim is to enforce complex dynamic properties of a system.
Types aim is to enforce simple (usually) static properties of a system.

Therefore I am of this point of view : https://stackoverflow.com/a/5965869
Notice how the complexity increase from top left to bottom right.

So, before trying to do something complex (which means heavy maintenance, and likely to be unused until it is perfectly optimized), I would focus on the doable, lighter side of things.

I also agree with @gbiggs and would like first to see more strict enforced message types, before thinking about their combination in an IDL, how this would behave dynamically, and how to enforce some behavior and prevent others...
Right now the message field type is too ambiguous ("node N can subscribe to a message M with a field int, but actually there will ever be only even numbers there..." except the developer of N don't know that, unless he goes through the code of all nodes publishing M)

> This does not fit into this thread as well but what is the benefit of erlang VM integration?

Don't try to reinvent the wheel, reuse 30 years of expertise in distributed system programming. There are already a bunch of people working on these questions in a distributed setting, and some tools available : http://learnyousomeerlang.com/types-or-lack-thereof

By the way, isn't this thread some kind of [X-Y problem](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Which problem exactly are you planning to solve with DbC ?

[Visit Topic](https://discourse.ros.org/t/design-by-contract/2405/14) or reply to this email to respond.

More information about the ros-users mailing list