blob: 40dc3befb04e71e34fa5ebc16fe489c6da5a4176 [file] [log] [blame]
<html>
<head>
<title>API FAQ</title>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<h2>FAQ on OpenOffice.org API</h2>
<ul>
<li><a HREF="#languages">From which languages can I use the OpenOffice.org -API?</a>
<li><a HREF="#corba-idl">What is the difference between UNO IDL and CORBA?</a>
<li><a HREF="#api-spec-size">What's the "size" of the API specification?</a>
<li><a HREF="#documentation">How is the documentation of the API done?</a>
<li><a HREF="#api-impl-size">What is the "size" of the API implementation?</a>
<li><a HREF="#java-examples">Do you have any documentation or examples for Java programmers?</a>
<li><a HREF="#not-implemented">Why are there some interfaces in the OpenOffice.org -API which are not implemented in any OpenOffice.org component?</a>
<li><a HREF="#use-interfaces">How can I find out, if I actually can use a certain interface of the OpenOffice.org -API?</a>
<li><a HREF="#compound-docs">Are there interfaces to build compound documents like Microsoft's OLE?</a>
<li><a HREF="#conflict-solving">How is conflict resolved on design issues?</a>
<li><a HREF="#my-role">What is your role, Michael Hönnig?</a>
</ul>
<p><a NAME="languages"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>From which languages can I use the OpenOffice.org -API?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
OpenOffice.org implements the API with UNO (Universal Network Objects). Currently there are language bindings for Java and C++. You can implement your own language binding, and in fact we are actively looking for a volunteer to create a C language binding.
<p>Additionally UNO allows control from scripting languages and scripting environments (for example debuggers). Currently StarBASIC (VBA syntax compatible) can call on the API and there is a prototype written for Python integration.
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="corba-idl"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>What is the difference between UNO IDL and CORBA IDL?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
UNO IDL is based on CORBA IDL, but additionally it supports
<ul>
<img src="/branding/images/small_blue_bullet.gif">&nbsp;&nbsp;inheritance for exceptions and structures,<br><br>
<img src="/branding/images/small_blue_bullet.gif">&nbsp;&nbsp;assigned values for enums,<br><br>
<img src="/branding/images/small_blue_bullet.gif">&nbsp;&nbsp;a new stereotype "service"<br>(combines interfaces and properties).
</ul><br>
And currently it does not support:
<ul>
<img src="/branding/images/small_blue_bullet.gif">&nbsp;&nbsp;arrays as defined types<br><br>
<img src="/branding/images/small_blue_bullet.gif">&nbsp;&nbsp;unions
</ul>
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="api-spec-size"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>What is the "size" of the API specification?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
The API consists of about 2000 files, each specifying one type. A type in this respect can be a service, an interface, a struct, an exception, a constant group, or an enum. These files total in about 6 MB of data.
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="documentation"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>How is the documentation of the API done?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
A reference like documentation consists within the IDL files. The syntax of the documentation is based on JavaDoc with a few extensions to mark identifiers. We are currently developing a new generator for this syntax which will generate HTML documents directly from the IDLs.
<p> Our <a href="DevelopersGuide/DevelopersGuide.html">Developers Guide</a> describes the concepts of all components within OpenOffice.org which have
an API. It is the best resource to start learning about the API.
<p> Additionally we have a <a href="basic/man/tutorial/tutorial.pdf">tutorial</a> for StarBASIC programmers. It explains the basic concepts, shows some UML diagrams of the component structure and has plenty of documented examples of the API usage.
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="api-impl-size"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>What is the "size" of the API implementation?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td>
<td>
It's hard to impossible to find out. Currently the API implementation is just
a wrapper to a core API for the most parts. Only newer components directly
implement the API. Thus, there is really not much point in finding out how
much code implements the API - and it even makes less sense in the future.
Depending on the perspective, we probably can say: The whole OpenOffice.org
is an implementation of the API, especially because more and more features
are using the API of other components for integration.
</td>
</tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="java-examples"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>Do you have any documentation or examples for Java programmers?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
In the <a HREF="http://udk.OpenOffice.org">UDK project</a> you can find
documentation on the language binding for Java. There are some Java examples
in the <a HREF="http://soldc.sun.com/staroffice">StarOffice SDK</a> which
might be helpful for you. <p></p>
</td></tr></table>
<p><a NAME="not-implemented"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>Why are there some interfaces in the OpenOffice.org -API which are not implemented in any OpenOffice.org component?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
The OpenOffice.org -API is actually more like a specification than an API of a preexisting implementation. Thus there are at several reasons why there are interfaces without any implementation:<p></p>
<ol>
<ol>
<li>it could be an optional interface within all services where it is used, but no current implementation actually implements it,
<li>it could be an interface to make a concept orthogonal, but the dimension it addresses is not needed right now.
<li>it could be part of a recent design which is not implemented yet,
<li> its absence in any implementation could simply be a bug.
</ol>
</ol>
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="use-interfaces"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>How can I find out if I can use a certain interface of the OpenOffice.org -API?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
Check for a service which exports this interface, then check for a component which promises to supports this service. Keep optional interfaces in mind (mentioned in the export documentation of the service). If the component you're using still does not implement the interface, it's a bug. In the latter case, please report the bug to the owner of the component. If it's a specification bug, they will forward it to the owner of the specification.
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="compound-docs"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>Are there interfaces to build compound documents like Microsoft's OLE?</b></font>
<br>
<br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td><td>
Within StarOffice API there are no interfaces right now for building compound documents. Our idea is to use the Bonobo model for this purpose.
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
<p><a NAME="conflict-solving"></a><img SRC="/branding/images/q.gif"> <font COLOR="#003399"><b>How is conflict resolved on design issues?</b></font>
<br><br><table CELLPADDING=0 CELLSPACING=0 BORDER=0><tr><td VALIGN=TOP><img SRC="/branding/images/arrow.gif"></td>
<td>
To begin with, the API is positioned as being a specification which keeps a focus
on an orthogonal structure and reusability. On the other hand we tried to be
as similar to Java as possible. Usability from both sides, the implementation
and the use itself, is another important point. And here often we have to make
compromises - sometimes even because there is a preexisting implementation.
<p>If there are conflicts, we try to find consensus. Just listen to all arguments, give time to find new ones, before hastily make decisions. Try to find a solution everybody is comfortable with.
</td></tr></table>
<p><img SRC="/branding/images/dotted_line.gif"><img SRC="/branding/images/dotted_line.gif">
</body>
</html>