Framework Comparison » History » Version 29

S. Wrede, 07/04/2011 08:09 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 28 J. Moringen
|_.Aspect            |_.ROS                       |_.YARP                                    |_.XCF/AM                |_.RSB                       |
11 26 S. Wrede
| Pub/sub Topology   | 1:1                        | m:n                                      | 1:n, m:n over AM       | m:n                        |
12 26 S. Wrede
| Abstraction        | single level               | single level                             | single level           | hierarchies                |
13 26 S. Wrede
| Channel Identifier | Topic                      | none?                                    | name or URI(?)         | Scope                      |
14 26 S. Wrede
| Channel Scope      | Flat                       | Flat                                     | Flat                   | Hierarchical               |
15 26 S. Wrede
| Origin Filtering   | ?                          | no?                                      | not required for 1:n   | planned                    |
16 26 S. Wrede
| Content Filtering  | ?                          | no                                       | yes (via XPath)        | via extension, e.g., XPath |
17 26 S. Wrede
| Typing             | static,strong              | dynamic                                  | none                   | strong-ish                 |
18 26 S. Wrede
| IDL                | yes, proprietary           | no                                       | no                     | optional, standardized     |
19 26 S. Wrede
| QoS                | implicit                   | limited support, mixed with flow-control | limited, local queuing | explicit                   |
20 26 S. Wrede
| Introspection      | strong                     | nameserver, port admin protocol          | limited                | implicit by multicast      |
21 26 S. Wrede
| Centralized        | yes (master, param server) | yes (nameserver), direct connect. poss.  | yes, dispatcher        | no                         |
22 26 S. Wrede
| 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 25 S. Wrede
| *Aspect*                                | *ROS*           | *YARP*          | *XCF*      | *RSB*                        |  
53 25 S. Wrede
| Lock-in                                 | strong          | ?               | ?          | ?                            |
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 18 J. Moringen
59 18 J. Moringen
h3. Programming Language Support
60 18 J. Moringen
61 20 J. Moringen
| *Language*  | *ROS* | *YARP*   | *XCF*   | *RSB* | 
62 20 J. Moringen
| C           | ?     | partial? | no      | no    |
63 20 J. Moringen
| C++         | impl  | impl     | impl    | impl  |
64 22 J. Moringen
| Java        | impl? | ?        | impl    | impl  |
65 20 J. Moringen
| Python      | impl  | ?        | binding | impl  |
66 20 J. Moringen
| Common Lisp | impl  | ?        | binding | impl  |
67 20 J. Moringen
| Ruby        | ?     | ?        | no      | no    |
68 14 J. Wienke
69 27 S. Wrede
h3. Operating System Support
70 27 S. Wrede
71 15 J. Wienke
h2. Wishes
72 1 S. Wrede
73 1 S. Wrede
* We believe in the power of reflection and self-description, such that
74 1 S. Wrede
** a generic content-based subscription model, e.g., with path-based access such as XPath becomes feasible
75 1 S. Wrede
** messages can be generally understood by everyone even if parts are not accessible
76 29 S. Wrede
* We further believe in powerful representations, such that
77 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)
78 1 S. Wrede
* RSB shall provide better introspection features, both for programmatic access (e.g., for anomaly detection) but also for developers
79 1 S. Wrede
* Reduced framework lock-in