<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>New to OpenOffice.org ?</title>
<style type="text/css">
  /* <![CDATA[ */
  /*-------------------- Exceptions on standard css -----------------------*/
  @import "home.css";
  @import "styles.css";
  @import "exceptions.css";
  /* ]]> */
  </style>
</head>
<body>
<div style="clear: both; positition: relativ; margin: 20px 12px 0 0; float: right; height: 20px;">
<form id="cse-search-box-header" action="http://www.google.com/search" method="get">
   <div>
       <input type="hidden" name="domains" value="ooo-site.apache.org"/>
       <input type="hidden" name="sitesearch" value="ooo-site.apache.org"/>
   </div>
   <div style="width: 185px">
    <input name="resultsPerPage" value="40" type="hidden"/> 
    <input name="q" id="query" alt="search" type="text" style="float: left; width: 115px; border: 1px solid #06338b; padding: 2px;"/> 
    <input name="Button" value="Search" type="submit" style="height:24px; width: 55px; margin: 0 0 0 3px;"/>

   </div>
  </form>
</div>

<h2> <a name="00" id="00"></a>Welcome to OpenOffice.org</h2>
<p>&nbsp; </p>
<p> OpenOffice.org is both a <a href="//product/index.html">fully-featured office suite</a> compatible with leading office products, and a virtual community working through OpenOffice.org's numerous <a href="//servlets/ProjectList">projects</a>. The community comes together at <a href="//">www.openoffice.org</a> to develop, support, and promote the use of OpenOffice.org. For information on joining the OpenOffice.org community, visit our <a href="introduction.html">Introduction</a> page. </p>
</hr>
<h3>The OpenOffice.org home page</h3>
<p>In addition to the navigation tabs across the top, on the left side are buttons that allow you to:</p>
<ul>
  <li><strong>download</strong> displays the <a href="/download/index.html">OpenOffice.org Downloads</a> page that enables you to download the stable release of OpenOffice.org. Includes step-by-step information to download, installation information, and additional resources including how to obtain OpenOffice.org on a CDROM. We also link to the features of OpenOffice.org 2.0.
  <li><strong>native language</strong> displays the OpenOffice.org community project areas <a href="/projects/native-lang.html">in languages other than English</a> providing information, resources, and assistance to users of OpenOffice.org. If your language is not listed here please contact the project leads on this page to find out more about OpenOffice.org in your language.
  <li><strong>new user</strong> displays this page.
</ul>
<p>In addition to the logos of OpenOffice.org's sponsor and primary contributor, and web host, the footer includes links to how to contact us, site map, development to do list, web site help and press room.
<p> <a href="#00">top</a>
<hr />
<h3>New to www.openoffice.org?</h3>
<p>At the top of every web page is a series of navigation tabs with links to:</p>
<p><strong>Home</strong> returns you to the site's home page as does the logo located in the top left corner.</p>
<p><strong>Download</strong> displays the <a href="/download/">Download Central</a> page that includes many ways to obtain different versions of OpenOffice.org. Includes links to download managers and site documentation.</p>
<p><strong>Support</strong> is a pool of free community and commercial support and training <a href="/support/index.html">resources</a> including FAQ, mailing lists, forums, documentation and books.</p>
<p><strong>Contributing</strong> displays ways that you can <a href="/contributing/index.html">participate</a> in the OpenOffice.org community.</p>
<p><strong>Projects</strong> lists the active <a href="/projects/accepted.html">Accepted</a>, <a href="/projects/native-lang.html">Native-Lang</a> and <a href="/projects/incubator.html">Incubator</a> community projects. Visit a project and subscribe to their mailing lists and see how you can contribute.</p>
<p><strong>My pages</strong> allows a registered user of the web site to <a href="//servlets/TLogin">login</a>. If you wish to join projects, submit issues, or show your support for a project consider <a href="//servlets/Join">registering</a> with the OpenOffice.org web site.</p>
<p><strong>About</strong> displays the <a href="http://about.openoffice.org/index.html">About Us</a> page including summary information and links about how the OpenOffice.org community project and OpenOffice.org the product.</p>
<a href="#00">top</a>
<hr />
<h3>Mail lists, and other useful things</h3>
<p><strong>Help</strong> Click the Support tab from any page for a list of free community and commercial support and training resources.</p>
<p><strong>Mailing Lists</strong> to talk to other users of OpenOffice.org are displayed on our <a href="//mail_list.html">General & Project Mailing Lists</a> page.</p>
<p>To <strong>Report a bug</strong> you need to be logged in. Click the My pages tab and login to display the <a href="http://qa.openoffice.org/issue_handling/pre_submission.html">File issue</a> link in the left navigation menu.</p>
<p>OpenOffice.org <strong>News</strong> is found in articles on the home page and newsletters posted to the Announce list that are later archived to the <a href="//editorial/">Articles, Interviews, Blogs, and Newsletters</a> page. Individual projects will also use various communications methods including their project mailing lists.</p>
<p><strong>FAQ</strong> are available for a number of general community project and specific topics. See our <a href="//faq.html">General Frequently Asked Questions</a> page.</p>
<p><strong>Licenses</strong> OpenOffice.org use the LGPL (GNU Lesser General Public License). See <a href="//license.html">Licenses</a> and <a href="//FAQs/faq-licensing.html">Licensing FAQ</a>.</p>
<p><strong>Guidelines for Participation</strong> are described in the <a href="http://about.openoffice.org/index.html">About Us</a> page and the <a href="//dev_docs/guidelines.html">Guidelines for Participation</a> page.</p>
<p>If you still haven't found what you want, try the <strong>Search</strong> box located in the top right of every page. The Advanced search allows you to narrow your search results to a particular area of the web site.</p>
<p><a href="#00">top</a></p>
<hr />
<p> $Revision: 1.14 $, $Date: 2008/09/18 22:07:51 $ </p>
</body>
</html>
