Framework Comparison » History » Version 33

J. Wienke, 10/10/2011 01:40 PM

1 20 J. Moringen
h1. Framework Comparison
2 1 S. Wrede
3 16 J. Moringen
h2. Scope
4 1 S. Wrede
5 16 J. Moringen
Please note: We are comparing RSB against roscore (or even ros_comm?) not against ROS!
6 16 J. Moringen
and YARP_OS?
7 16 J. Moringen
8 1 S. Wrede
h2. Functional Differences
9 1 S. Wrede
10 33 J. Wienke
|_.Aspect            |_.ROS                       |_.YARP                                    |_.XCF/AM                |_.RSB                       |_.OpenRTM-aist |
11 33 J. Wienke
| Pub/sub Topology   | 1:1                        | m:n                                      | 1:n, m:n over AM       | m:n                        | 1:1           |
12 33 J. Wienke
| Abstraction        | single level               | single level                             | single level           | hierarchies                | single level  |
13 33 J. Wienke
| Channel Identifier | Topic                      | none?                                    | name or URI(?)         | Scope                      | ? |
14 33 J. Wienke
| Channel Scope      | Flat                       | Flat                                     | Flat                   | Hierarchical               | ? |
15 33 J. Wienke
| Origin Filtering   | ?                          | no?                                      | not required for 1:n   | planned                    | ? |
16 33 J. Wienke
| Content Filtering  | ?                          | no                                       | yes (via XPath)        | via extension, e.g., XPath | ? |
17 33 J. Wienke
| Typing             | static,strong              | dynamic                                  | none                   | strong-ish                 | strong |
18 33 J. Wienke
| IDL                | yes, proprietary           | no                                       | no                     | optional, standardized     | yes |
19 33 J. Wienke
| QoS                | implicit                   | limited support, mixed with flow-control | limited, local queuing | explicit                   | ? |
20 33 J. Wienke
| Introspection      | strong                     | nameserver, port admin protocol          | limited                | implicit by multicast      | though component model (interface as well as data)
21 33 J. Wienke
| Centralized        | yes (master, param server) | yes (nameserver), direct connect. poss.  | yes, dispatcher        | no                         | yes (broker) |
22 33 J. Wienke
| Event meta-data    | client level               | ?                                        | yes                    | yes                        | ? |
23 19 J. Moringen
24 19 J. Moringen
h3. Communication Patterns
25 1 S. Wrede
26 24 S. Wrede
| *Aspect*         | *ROS* | *YARP* | *XCF/AM*     | *RSB* | 
27 23 J. Wienke
| Pub-Sub          | yes   | yes    | yes          | yes   |
28 24 S. Wrede
| .. Push-receiver | yes   | ?      | yes          | yes   |
29 23 J. Wienke
| .. Pull-receiver | ?     | ?      | yes          | yes   |
30 23 J. Wienke
| Client-Server    | yes   | yes    | yes          | yes   |
31 1 S. Wrede
32 20 J. Moringen
33 17 J. Moringen
h3. RPC Features
34 17 J. Moringen
35 24 S. Wrede
| *Aspect*            | *ROS*                      | *YARP* | *XCF/AM* | *RSB*                          | 
36 24 S. Wrede
| Asynchronous RPC    | ?                          | ?      | ?        | yes                            | 
37 24 S. Wrede
| Parallel Pipelining | ?                          | ?      | ?        | yes                            | 
38 24 S. Wrede
| Dynamic Typing      | kind-of (schema in header) | yes    | yes      | no (for Protocol Buffers)      | 
39 24 S. Wrede
| Connection pooling  | manually configurable      | ?      | ?        | no pooling, but reuse          | 
40 24 S. Wrede
| Delayed return      | ?                          | ?      | ?        | no                             | 
41 24 S. Wrede
| Event-driven I/O    | ?                          | ?      | ?        | no (one thread per connection) |
42 16 J. Moringen
43 21 J. Moringen
_Criteria are based on http://msgpack.org/, explanations "here":http://wiki.msgpack.org/display/MSGPACK/Design+of+RPC#DesignofRPC-MessagePackRPCFeatureList ._
44 18 J. Moringen
45 18 J. Moringen
h2. Non-functional Properties
46 18 J. Moringen
47 18 J. Moringen
* Architecture
48 20 J. Moringen
* Dependencies
49 18 J. Moringen
50 18 J. Moringen
h3. Openness
51 18 J. Moringen
52 32 J. Wienke
| *Aspect*                                | *ROS*           | *YARP*          | *XCF*      | *RSB*                        | *OpenRTM-aist* |
53 32 J. Wienke
| Lock-in                                 | strong          | ?               | ?          | ?                            | component-model |
54 25 S. Wrede
| Use of standards/terminology            | partial         | almost none     | XML, XPath | partial                      |
55 25 S. Wrede
| Protocol Specification                  | yes, inaccurate | yes, inaccurate | no(?)      | yes, uses IDL                |
56 25 S. Wrede
| Source Code Documentation               | ?               | ?               | partial    | client-level nearly complete |
57 25 S. Wrede
| Project Layout/Source code organization | monolithic      | confusing       | confusing  | at least, we have a plan...  |
58 30 J. Wienke
| Transport Extensions                    | ?               | maybe           | no         | yes |
59 18 J. Moringen
60 18 J. Moringen
h3. Programming Language Support
61 18 J. Moringen
62 20 J. Moringen
| *Language*  | *ROS* | *YARP*   | *XCF*   | *RSB* | 
63 20 J. Moringen
| C           | ?     | partial? | no      | no    |
64 20 J. Moringen
| C++         | impl  | impl     | impl    | impl  |
65 22 J. Moringen
| Java        | impl? | ?        | impl    | impl  |
66 20 J. Moringen
| Python      | impl  | ?        | binding | impl  |
67 20 J. Moringen
| Common Lisp | impl  | ?        | binding | impl  |
68 20 J. Moringen
| Ruby        | ?     | ?        | no      | no    |
69 14 J. Wienke
70 27 S. Wrede
h3. Operating System Support
71 27 S. Wrede
72 31 S. Wrede
h2. Thoughts
73 31 S. Wrede
74 31 S. Wrede
* ZeroMQ
75 31 S. Wrede
** Socket-level Client API + rich configuration (however, not modeled explicitely)
76 31 S. Wrede
** Serialization is not considered
77 31 S. Wrede
78 15 J. Wienke
h2. Wishes
79 1 S. Wrede
80 1 S. Wrede
* We believe in the power of reflection and self-description, such that
81 1 S. Wrede
** a generic content-based subscription model, e.g., with path-based access such as XPath becomes feasible
82 1 S. Wrede
** messages can be generally understood by everyone even if parts are not accessible
83 29 S. Wrede
* We further believe in powerful representations, such that
84 29 S. Wrede
** component can be re-used without recompiliation if optional parts of message formats change or information is added (this may be a difference to ROS / LCM where every module has to be recompiled)
85 1 S. Wrede
* RSB shall provide better introspection features, both for programmatic access (e.g., for anomaly detection) but also for developers
86 1 S. Wrede
* Reduced framework lock-in