Chapter 2. Frequently Asked Questions

This is to answer your questions about ORBit and Corba

2.1. General Questions

2.1.1. What is CORBA?

CORBA stands for Common Object Request Broker Architecture, standardized by the Object Management Group (OMG). It consists of an Interface Definition Language (IDL), language bindings and protocols to allow interoperation between applications

  • written in different programming languages

  • running in different processes

  • developed for different operating systems

A more detailed answer to this question is available at http://www.omg.org/gettingstarted

2.1.2. What is ORBit?

ORBit is an implementation of CORBA, which is used (amongst other things) in the GNOME project. Active development is done for ORBit2, being a clean re-implementation from scratch. The old ORBit code is no longer maintained.

2.1.3. Why aren't you using ILU/MICO/TAO?

Most of GNOME is written in C, both for performance reasons, and because C++ still isn't as portable and widely available. So integration with CORBA should use the IDL C mapping, which rules out TAO and MICO. ILU was ruled out because the license appeared as too restrictive at the time for free software.

2.1.4. Is ORBit stable?

ORBit is used in pretty much any GNOME application, which gives quite some testing for the features used. Other features have seen little or no testing.

2.1.5. Does ORBit work with other ORBs?

Yes. This is one of the primary features of CORBA, and available through the Internet Inter-ORB Protocol (IIOP). There is one pitfall: ORBit has a proprietary security mechanism to authenticate clients. If interoperability is desired then you might have to figure out a work-around for this.

2.1.6. What license does ORBit get distributed with and how does it affect me?

The idl compiler is GNU Public licensed ( GPL). The libaries are Library GPL (L-GPL) licensed. The code generated from the idl compiler have no restriction. Bascially this means you can use ORBit in your own applications (including proprietary applications), the only restriction being that people whom you distribute your working code to must be able to update the ORBit libraries at will. If you wish to modify and distribute the ORBit idl compiler you have to distribute that modification under the GPL.

2.1.7. Why doesn't ORBit compile with my cc compiler ?

ORBit uses some of the extensions that gcc allows, including assignment to casts and void * pointer arithmetic. More current versions of ORBit will remove these and eventually it is likely the ORBit will compile with all ANSI C compilers.

You can always install gcc and use that. This will always work.

2.1.8. What is a language binding?

A language binding defines how to use the IDL operations in a programming language. There is a client-side mapping which explains how to call operations, and a server-side mapping which defines how to implement them. The client side mapping is largely implementation-independent.

On the server side, different 'object adapters' are provided by ORB vendors; only the 'Portable Object Adapter' (POA) implemented by ORBit allows portability between CORBA implementations.

2.1.9. What language bindings does ORBit provide?

At the moment only the C binding. Python and Perl bindings are being seriously talked about. Bindings (in various degrees of completeness) are also available for C++, Lisp, Pascal, Python, Ruby, and TCL; others are in-progress.

2.1.10. Does ORBit have DII and DSI?

Yes. Though beware that using DII and DSI in some cases requires the use of dynAny, which is not supported yet.

2.1.11. Does ORBit provide a naming service?

Yes. In addition, it is possible to use a third-party naming service, e.g. using the --ORBNamingIOR command line option. The 'Interoperable Naming' specification is not yet supported.

2.1.12. Can you encrypt a CORBA connection?

Yes, ORBit supports IIOP over SSL. the implementation is based on OpenSSL and support client and server side authentication. Frank O'Dwyer did initial work on this for ORBit.