

<!--#include virtual="/doctype.html" -->
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <link href="/css/ooo.css" rel="stylesheet" type="text/css">
    
<title>Important things to know about this mailing list</title>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">

    
    <script src="https://www.apachecon.com/event-images/snippet.js"></script>
  </head>
  <body>
    <!--#include virtual="/brand.html" -->
    <div id="topbara">
      <!--#include virtual="/topnav.html" -->
      <div id="breadcrumbsa"><a href="/">home</a>&nbsp;&raquo;&nbsp;<a href="/api/">api</a></div>
    </div>
    <div id="clear"></div>
      <!--#include virtual="/api/leftnav.html" -->
      
    <div id="content">
      
      
<h2>Important things to know about the API and the dev mailing list</h2>

<pre>
This is a reminder of important things to know about the API and the
dev@openoffice.apache.org mailing list.

*** ====================================================================
*** Contents
*** --------------------------------------------------------------------

    1. Appropriate Mailing List
    2. SDK + Developers Guide
    3. Form of your Messages
    4. Support Questions
    5. Reporting Defects
    6. Contributions
    7. Newsletter


*** ====================================================================
*** 1. Appropriate Mailing List
*** --------------------------------------------------------------------

Not all questions are really API issues.  That said the former projects of
OOo are now collapsed to the Apache OpenOffice project.

dev@openoffice.apache.org is always appropriate.

http://udk.openoffice.org
    for questions about UNO bridges and language bindings
    including StarBASIC/OOoBASIC

http://framework.openoffice.org/scripting/
    for questions about the scripting framework

http://xml.openoffice.org
    for questions regarding our XML file formats


*** ====================================================================
*** 2. SDK + Developers Guide
*** --------------------------------------------------------------------

Please install the SDK from the OOo download area and read at least the
chapters First Steps and the chapter your question is about of the
Developers Guide.  This is a list of volunteers, not a support forum.
We like to help you, but we cannot do the footwork for you.

An online version of the Developers Guide can be found here:
http://api.openoffice.org/DevelopersGuide/DevelopersGuide.html


*** ====================================================================
*** 3. Form of your Messages
*** --------------------------------------------------------------------

Please use an appropriate form for your messages:
- quote as much as is necessary to make context understandable, NOT more
- do NOT put a full quote below your message
- do NOT use HTML mails
- do NOT attach documents
- do NOT ask NEW questions in reply to existing threads

By breaking these rules, do not wonder if your question remains
unanswered, most likely even unseen due to mail filters.

If you have additional data, like a document or a longer source code,
please provide us a link where we can download these.  You might upload
such documents to the file area:

http://api.openoffice.org/servlets/ProjectDownloadList

As far as I know, everybody can do that, you might need an
OpenOffice.org account. As the responsible project lead, I just have to
approve the files to get published.  But keep in mind: the more a
volunteer has to read to grab your question, the lesser the change for
an answer.


*** ====================================================================
*** 4. Support Questions
*** --------------------------------------------------------------------

Please keep in mind that we developers cannot always answer specific
questions or even implement features for your application.  This is NOT
a support forum in the sense of guaranteed help.  If we have a solution
in mind, we will help you.  But if it costs us too much time, and it is
a specific problem, we might not be able to spend the time on your issue.

On the other hand, we try to answer all questions.  And we need the
support of other community members.

But even as somebody who has only questions yet, you can already
contribute to OOo:  If you had a question and it was answered to your
satisfaction it would be great if you post a summary in our standardized
form:

http://api.openoffice.org/SDK/snippets/index.html

This avoids using up the time of the volunteers to answer the same
questions over and over again.  Thanks for your contribution!

If your question is related to your application code, please include a
minimalistic version of your source code with your question.  And please
add all important information.  This includes mostly the concrete
component which you are using, the platform, version of OOo and OOo SDK
your programming language.  There might be a big difference, if your
problem is with a Text object in OOo/Writer or a Text object in a
OOo/Draw shape. But keep your information as short as possible.  Do not
post complete programs!  The better you cut it down, to the issue, the
higher the  change for an volunteer who picks your question up and answers.

IMPORTANT: Please avoid sending mails personally to the project developers, 
unless you are explicitly asked to do so.  We do not offer direct support
by personal email.


*** ====================================================================
*** 5. Reporting Defects
*** --------------------------------------------------------------------

If you are pretty sure that you found a defect in either the
documentation or implementation, please file this issue on OOos IssueZilla:

https://www.openoffice.org/project_issues.html

Implementation bugs which do not only occur by API usage can be reported
directly to the appropriate project (like sw, sd, sc or framework), API
specification an documentation issues or missing interfaces you can
file to the API project.  StarBASIC/OOoBASIC issues actually belong to
the UDK project.  If you choose the wrong project, your issue might be
delayed.

Please do not misuse IssueZilla as a support tool.  It is not and your
issue will simply be rejected.

*** ====================================================================
*** 6. Contributions
*** --------------------------------------------------------------------

There are plenty possibilities of contributions to OOo, even for
"absolute beginners".  Here some ideas:

- Read the documentation and report issues if you find any
    (-> 5. Reporting Defects)

- Use the applications and API and report issues if you find any
    (-> 5. Reporting Defects)

- Summarize answers which were given to your questions
    (-> 4. Support questions)

- Contribute your larger API examples to our example collection
    (http://api.openoffice.org/SDK/example_collection.html)

If you want to provide us with source code or documentation, we need a
copyright assignment:

http://www.openoffice.org/contributing.html

Please read this document to learn about how and why.


</pre>

      
    </div>
    <!--#include virtual="/footer.html" -->
  </body>
</html>
