[David, Alan: you may want to join the eros-arch list, if only temporarily. For instructions see http://www.eros-os.org/project/mailing-lists.html]
> Also, what are your thoughts on an interface definition language / and
> query interface style system?
I must preface this by saying that IDLs are something I don't know a lot about, and that much of my thoughts on what an EROS IDL needs to express are hazy. Therefore, I hope that people will help challenge these comments and use them as a seed for discussion. They relate to previous comments that I made to Alan Karp about practical limits on the number and variety of capability types per object.
But the more compelling reason that I haven't already adopted an IDL system is my discomfort with the expressiveness of the input languages. the Sun RPC system is procedure oriented; this is clearly not helpful enough. Most of the CORBA-like systems are object-oriented. Surprisingly, this is not helpful either. The following digression on design patterns may help shed light on why this is so.
EROS isn't really an object-oriented system, because the objects don't have inheritance. While it *is* an object based system, it isn't like most others. An EROS process can export any arbitrary set of interfaces, and these may or may not correspond to object interfaces in a simple way. Let me take a digression to describe the two common design patterns for interfaces to EROS processes.
In this pattern, there is a single conceptual object that has a set of operations. Different interfaces (represented by different capabilities) export different subsets of these operations. Note, however, that the operation codes (the number corresponding to the function being invoked) are not assigned on a per-interface basis. The read-only interface to a page uses the same function number for "read" as the read-write interface; it just doesn't export the operations that permit write authority.
The second design pattern is to export both an object and it's metaobject from a single process, or several instances of the same object. For example, the file system object conceptually exports both a set of filesystem related interfaces and also a file interface.
I'm not aware of any special difficulties that this causes.
An EROS process may start in either of the two design patterns above, and be forced to implement variant interfaces over time for reasons of backward compatibility. This complicates matters considerably.