<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>OpenOffice.org 1.1 README</title>
</head>

<body>

<h2>Welcome</h2>

<p><i>Last updated: 2006-02-17</i></p>

<h2>OpenOffice.org 1.1 ReadMe</h2>

<p>For latest updates to this readme file, see <a href="readme.html">//welcome/readme.html</a>. We archived the
<a href="readme-10.html">Readme file for OpenOffice.org 1.0</a>.</p>
<br />

<h3>Dear User</h3>

<p>This file contains important information about this program. Please read this information very carefully before starting work.</p>

<p>The OpenOffice.org community, responsible for the development of this product, would like to invite you to participate as a community member. As a new
user, you can check out the <a href="../about_us/introduction.html">OpenOffice.org Introduction site</a> with helpful user information. Also read the
sections below of getting involved the OpenOffice.org project.</p>
<br />

<h3>Notes on Installation</h3>

<h4>System Requirements:</h4>

<ul type="circle">
  <li>Microsoft Windows 98, ME, NT (Service Pack 6 or higher), 2000 or XP</li>
  <li>Pentium compatible PC</li>
  <li>64 MB RAM</li>
  <li>250 MB (CJK version: 300 MB) available hard disk space</li>
  <li>800x600 resolution or higher, at least 256 colors</li>
</ul>

<p><b>Note:</b> Please be aware that administrator rights are needed for the installation process.</p>

<p><b>Note for Windows 98 users only:</b> If you choose to install Java during the OpenOffice.org installation program, the installer will ask you to reboot
your system. You should either ignore this message or open the OpenOffice.org installation program again after the reboot.</p>

<p>Difficulties starting OpenOffice.org (e.g. applications hang) as well as problems with the screen display are often caused by the graphics card driver.
If these problems occur, please update your graphics card driver or try using the graphics driver delivered with your operating system. Difficulties
displaying 3D objects can often be solved by deactivating the option "Use OpenGL" under 'Tools - Options - View - 3D view'.</p>

<p>You can install OpenOffice.org 1.1 along side of an older version of OpenOffice.org. If you later choose to deinstall the older version of OpenOffice.org,
you must call the installation program of the newer version and choose 'Repair'. This ensures that the new version is correctly registered in your system.
<br />Please note that copy and paste via clipboard between OpenOffice.org 1.0 and OpenOffice.org 1.1 might not work in OpenOffice.org format. If that
happens, choose 'Edit - Paste Special' and choose a format other than OpenOffice.org, or open the document in OpenOffice.org 1.1 directly.</p>

<p>Please make sure you have enough free memory in the temporary directory on your system and that read, write and run access rights have been granted.
Close all other programs before starting the installation.</p>

<h3>Network Installation: Error When Calling the OpenOffice.org Quickstarter</h3>

<p>If, when starting the system, problems should occur in calling the OpenOffice.org Quickstarter (e.g. invalid link), this is probably due to the fact
that the network drive on which the network installation is installed is not or not yet available.</p>

<p>In most cases, this happens when the network drives are logged in via a login script, thereby establishing the connection for the network drives parallel
to running the programs of the autostart group from which the Quickstarter is also started.</p>

<p>To avoid this problem, the network drive should be connected via the system's services. If this is not possible, the link used to call the Quickstarter
can be removed from the autostart group of the system, or the Quickstarter can already be disabled when installing the workstation installation. If the
system administrator already disabled the Quickstarter during installation of the network installation, then the Quickstarter cannot be selected by the user
in a later workstation installation.</p>

<h3>Important Accessibility Notes</h3>

<p>Due to a problem within the Java(TM) Access Bridge, you have to set the operating system locale to "English (United States)" or "(en-US)". Only this
setting enables you to work with programs like ZoomText. (Note: The program WindowEyes does not work with OpenOffice.org, because it does not support the
Java Accessibility API.)The Java(TM) Access Bridge installed with this early access version does not work properly with conventional Java applications.</p>

<h3>Ai Squared ZoomText 7.11</h3>

<p>If you want to use Ai Squared ZoomText with OpenOffice.org 1.1 , you need version 7.11 or higher. The date of the Ai Squared ZoomText download must be
after June 12, 2002 for it to contain all the necessary program enhancements.</p>

<h3>Changing the User Interface Font</h3>

<p>In OpenOffice.org you can change the font used for screen display and printing by replacing it with a different font installed on your system. This can
be done using the font replacement function. Choose Tools - Options - OpenOffice.org - Font Replacement to access this function.</p>

<p>To change the font of the OpenOffice.org user interface, you have to replace the default font "Andale Sans UI" with another font and mark the "always"
setting for this replacement.</p>

<p>Refer to the OpenOffice.org Help for a detailed explanation of the dialog.</p>

<h3>Shortcut Keys</h3>

<p>Only shortcut keys (key combinations) not used by the operating system can be used in OpenOffice.org. If a key combination in OpenOffice.org does not
work as described in the OpenOffice.org Help, check if that shortcut is already used by the operating system. To rectify such conflicts, you can change the
keys assigned by your operating system. Alternatively, you can change almost any key assignment in OpenOffice.org. For more information on this topic, refer
to the OpenOffice.org Help or the Help documentation of your operating system.</p>

<h3>Problems When Sending Documents as E-mails From OpenOffice.org</h3>

<p>When sending a document via 'File - Send - Document as E-mail' or 'Document as PDF Attachment' problems might occur (program crashes or hangs). This is
due to the Windows system file "MAPI" (Messaging Application Programming Interface) which causes problems in some file versions. Unfortunately, the problem
cannot be narrowed down to a certain version number. For more information please search in the <a href="http://www.microsoft.com">Microsoft Knowledge Base</a>
for the term "mapi dll".</p>

<h3>Using Info-ZIP</h3>

<p>OpenOffice.org uses Info-ZIP to create and unpack the OpenOffice.org installation, as well as for packing and unpacking the OpenOffice.org XML file
format. Info-ZIP programs (ZIP, UnZip and other utilities) are available free of charge and can be used in the source code and as an executable program.
They can be attained by visiting Anonymous FTP sites such as <a href="ftp.uu.net/pub/archiving/zip/">ftp.uu.net/pub/archiving/zip/</a>.</p>

<h3>Used / Modified Source Code</h3>

<p>Portions Copyright 1998, 1999 James Clark. Portions Copyright 1996, 1998 Netscape Communications Corporation.</p>
<br />

<h3>Getting Involved</h3>

<p>The OpenOffice.org Community would very much benefit from your active participation in the development of this important open source project.</p>

<p>As a User, you are already a valuable part of the suite's development process and we would like to encourage you to take an even more active role with a
view to being a long-term contributor to the Community. Please join and checkout the user page at: <a href="/">OpenOffice.org</a>.</p>

<h3>Registration</h3>

<p>Please take a little time to complete the minimal Product Registration process when you install the software. While registration is optional, we
encourage you to register, since the information enables the Community to make an even better software suite and address user needs directly. Through its
Privacy Policy, the OpenOffice.org Community takes every precaution to safeguard your personal data. If you missed the registration at installation, you
can return and register at any time at <a href="registration-site.html ">//welcome/registration-site.html</a>.</p>

<h3>User Survey</h3>

<p>There is also a User Survey located online which we encourage you to fill out. The User Survey results will help OpenOffice.org move more rapidly in
setting new standards for the creation of the next-generation office suite. Through its Privacy Policy, the OpenOffice.org Community takes every precaution
to safeguard your personal data.</p>

<h3>Report Bugs &amp; Issues</h3>

<p>The OpenOffice.org Web site hosts IssueZilla, our mechanism for reporting, tracking and solving bugs and issues. We encourage all users to feel entitled
and welcome to report issues that may arise on your particular platform. Energetic reporting of issues is one of the most important contributions that the
User Community can make to the ongoing development and improvement of the suite.</p>

<h3>Subscribe</h3>

<p>We have a few of the <a href="../mail_list.html">project mailing lists</a> to which you can subscribe to.</p>

<ul type="circle">
  <li>News: announce@openoffice.org <b>recommended to all users</b> (light traffic)</li>
  <li>User support: users@openoffice.apache.org <b>recommended to new users</b> (moderate traffic)</li>
  <li>Main user forum: users@openoffice.apache.org <b>Easy way to lurk on discussions</b> (heavy traffic)</li>
  <li>Marketing project:	marketing@openoffice.apache.org <b>beyond development</b> (getting heavy traffic)</li>
  <li>General code contributor list: dev@openoffice.apache.org (moderate/heavy traffic)</li>
  <li>Groupware:	groupware@whiteboard.openoffice.org (moderate traffic)</li>
</ul>


<h3>Join one or more Projects</h3>

<p>You can make major contributions to this important open source project even if you have limited software design or coding experience. Yes, you!</p>

<p>Our <a href="/projects/index.html">Projects page</a> lists those projects you can join. You will find projects ranging from
Localization, Porting and Groupware to some real core coding projects. If you are not a developer, try the QA,  Documentation, or the Marketing Project.
The OpenOffice.org Marketing Project is applying both guerrilla and traditional commercial techniques to marketing open source software, and we are doing
it across language and cultural barriers, so you can help just be spreading the word and telling a friend about this office suite.</p>

<h3>User Support</h3>

<p>We have a <a href="/support/">support section</a> that lists both free and for-fee support. Our free support includes the users mail
list. Because of spam, we prefer that you subscribe to post your query. You can read over archives, which include previous queries, and subscribe from our
<a href="../mail_list.html">Mail List page</a>.</p>

<h3>Way to Start</h3>

<p>The best way to start contributing is to subscribe to one or more of the mailing lists, lurk for a while, and gradually use the mail archives to
familiarize yourself with many of the topics covered since the OpenOffice.org source code was released back in October 2000. When you're comfortable, all
you need to do is make an email self-introduction and jump right in. If you are familiar with Open Source Projects, check out our To-Dos list and see if
there is anything you would like to help with at <a href="../dev_docs/todos.html">//dev_docs/todos.html</a>.</p>
<br />

<p>We hope you enjoy working with the new OpenOffice.org 1.1 and join us online.</p>

<p>The OpenOffice.org Community</p>

</body>
</html>
