<html>
<head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>Press FAQ Mac OS X Port 1.1.2</title>
</head>
<body>
<div class='Acta1'>
  <h2>FAQ for OpenOffice.org 1.1.2 for Mac OS X (X11)</h2>
  <p><em>Last updated 2004-06-28 by Dan Williams and Terry Teague</em></p>
  <h4><a name="top"></a>Sections</h4>
  <dl>
    <dt><a href="#genquestions"><strong>General Questions</strong></a></dt>
    <br>
    <dd><a href="#q1">What is OpenOffice.org 1.1.2?</a></dd>
    <dd><a href="#q2">What are we announcing today?</a></dd>
    <dd><a href="#q3">Who can / should use this software?</a></dd>
    <dd><a href="#q4">What can the OpenOffice.org 1.1.2 for Mac OS X (X11) release do today?</a></dd>
    <dd><a href="#q6">What does the (X11) mean?</a></dd>
    <dd><a href="#q8">How can I help the OpenOffice.org Mac OS X/Darwin porting team?</a></dd>
    <dd><a href="#q9">What are the limitations of the OpenOffice.org 1.1.2 for Mac OS X (X11)?</a></dd>
    <dd><a href="#q10">When will a fully native Aqua version be available?</a></dd>
    <dd><a href="#q11">Will OpenOffice.org 1.0 run on OS 9 and earlier operating systems?</a></dd>
    <dd><a href="#q12">What support is offered with the OpenOffice.org 1.1.2 for Mac OS X (X11)?</a></dd>
    <dd><a href="#q13">What are the objectives of OpenOffice.org?</a></dd>
    <dd><a href="#q14">Why is OpenOffice.org significant?</a></dd>
    <dd><a href="#q15">What role has Sun Microsystems, Inc., had in the Mac OS X/Darwin port so far?</a></dd>
    <dd><a href="#q16">What is Apple Computer, Inc.'s involvement with the project?</a></dd>
    <dd><a href="#q17">What prevents someone from moving from Microsoft Office v.X to OpenOffice.org on Mac OS X?</a></dd>
    <dd><a href="#q18">What is the difference between Sun's StarOffice 6.0 [tm] and OpenOffice.org 1.0?</a></dd>
    <dd><a href="#q19">Will there ever be a StarOffice for Mac OS X?</a></dd>
    <dd><a href="#q20">Where can I get more information about OpenOffice.org?</a></dd>
    <br>
    <dt><a href="#devquestions"><strong>Developer Questions</strong></a></dt>
    <br>
    <dd><a href="#q21">From a developer's standpoint, what needs to be done with OpenOffice.org on Mac OS X/Darwin?</a></dd>
    <dd><a href="#q22">What is the state of the build on Mac OS X/Darwin?</a></dd>
    <dd><a href="#q23">What tools are used to build OpenOffice.org on Mac OS X/Darwin?</a></dd>
    <dd><a href="#q24">If I want to help or contribute patches, whom should I contact?</a></dd>
    <dd><a href="#q25">What kind of hardware does a developer need to work on the OS X OpenOffice.org port?</a></dd>
  </dl>
  <hr>
  <h3><a name="genquestions">General Questions</a></h3>
  <!-- ---------------------------------- -->
  <p><a name="q1"><strong>Question:</strong></a> What is OpenOffice.org 1.1.2?</p>
  <p class='indent'><strong>Answer:</strong> OpenOffice.org 1.1.2 is a full-featured office productivity suite that provides a near drop-in replacement for Microsoft Office. Users report that little or no training is required for people migrating from other office suites - everything works the way people expect. OpenOffice.org 1.1.2 loads much more quickly than previous versions and is more feature complete; it is also available in numerous languages. (Check the <a href="/projects/native-lang.html">Native-Language Projects</a> for more information.)</p>
  <p class='indent'>The free office productivity software suite features key desktop applications - including word processor, spreadsheet, presentation and drawing programs - in more than 30 supported languages. In addition, OpenOffice.org 1.1 works transparently with a variety of file formats, enabling users to exchange documents freely with users of other office suites, such as Microsoft Office and StarOffice [tm] 6.0 software. OpenOffice.org 1.1.2 software is stable and runs natively on multiple platforms, including Mac OS X, Linux, PPC Linux, Solaris [tm], Windows and many other flavors of Unix.</p>
  <p class='indent'>OpenOffice.org 1.1.2 is the culmination of more than 3 years of collaborative effort by members of the OpenOffice.org community, which is comprised of Sun employees, volunteers, CollabNet, and end users, all working to create the best international office suite that will run on all major platforms.</p>
  <p class='indent'>Written in C++ and with documented APIs licensed under the LGPL and SISSL Open Source licenses, OpenOffice.org allows any knowledgeable developer to benefit from the source. And, because the file format for OpenOffice.org is XML, interoperability is easy, making future development and adoption more certain.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q2"><strong>Question:</strong></a> What are we announcing today?</p>
  <p class='indent'><strong>Answer:</strong> Today, OpenOffice.org and the OpenOffice.org Mac OS X/Darwin porting team announce the end-user release of OpenOffice.org 1.1.2 for Mac OS X (X11), available for immediate download.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q3"><strong>Question:</strong></a> Who can / should use this software?</p>
  <p class='indent'>Answer: The release announced today brings OpenOffice.org 1.1.2 to all users running Apple's Mac OS X v10.2 or higher operating system . Mac users can now download OpenOffice.org 1.1.2 for Mac OS X (X11) and begin deploying this free office suite for day-to-day use as near total replacement for Microsoft Office on their Mac OS X-based computers.</p>
  <p class='indent'>OpenOffice.org 1.1.2 for Mac OS X (X11) offers Mac users the same open file formats, unlimited language portability and cross-platform compatibility enjoyed by users across all the other supported platforms, including Linux, Windows, Solaris and FreeBSD. Users can 'OPEN' and 'SAVE AS' MS Office file formats and will enjoy the confidence of permanent file access granted by OpenOffice.org 1.1.2 for Mac OS X (X11)'s use the international standard XML file format specification.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q4"><strong>Question:</strong></a> What can the OpenOffice.org 1.1.2 for Mac OS X (X11) release do today?</p>
  <p class='indent'><strong>Answer:</strong> All four main components of the OpenOffice.org suite, Writer, Draw, Calc, and Impress, may be used productively to create, save, load, print, present, and manipulate all common types of documents. OpenOffice.org offers compatibility with Microsoft Office file formats, allowing any Microsoft Office file to be opened and manipulated natively.</p>
  <p class='indent'>Features include:
  <ul>
    <li>Full international language and keyboard support for editing, display, and printing
    <li>Clear, smooth font antialiasing for professional-looking documents
    <li>Tight integration with the Mac OS X Printing System, including USB &amp; Rendezvous shared printers
    <li>Seamless integration with the Mac OS X Finder, through the Start OpenOffice.org launcher application
    <li>Easy-to-use "Print to PDF" support
    <li>Mozilla address book connectivity
    <li>Audio support (Mac OS X only)
    <li>Automatic World Wide Web hyperlink handling, using normal Mac OS X applications
  </ul>
  <p class='indent'></p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q6"><strong>Question:</strong></a> What does the (X11) mean?</p>
  <p class='indent'><strong>Answer:</strong> The X Window System, version X11R6, is a set of libraries and programs that implement core components of a Graphical User Interface. As a Unix standard, the XWindow system is consequently able to run on Apple's Mac OS X and its Darwin core, providing the base for OpenOffice.org 1.1.2 for Mac OS X (X11). The XWindow System is hugely popular with Unix and Linux operating systems, and that support was leveraged to create the version of OpenOffice.org for Mac OS X and Darwin released today. While applications that leverage the XWindow System do not have the Aqua look and feel that Mac users are accustomed to, they are just as functional as any other Mac OS program. This release is designed to function with both Apple's X11 product and releases from the volunteer XFree86 project.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q8"><strong>Question:</strong></a> How can I help the OpenOffice.org Mac OS X/Darwin porting team?</p>
  <p class='indent'><strong>Answer:</strong> Get involved! Join the OpenOffice.org Community and participate in development; all are welcome. Even if you don't have programming experience, your help would be greatly appreciated. There is much to be done on the Mac OS X/Darwin port, including finishing missing implementations, creating better graphics for the Mac port, fixing bugs, working on documentation, evangelizing OpenOffice.org, and testing. To join the project and project mailing lists, see <a href="/project/porting/mac/">http://porting.openoffice.org/mac/</a> and join the team!</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q9"><strong>Question:</strong></a> What are the limitations of the OpenOffice.org 1.1.2 for Mac OS X (X11)?</p>
  <p class='indent'><strong>Answer:</strong> This is full end-user release. It is believed that no bugs beyond the minor ones mentioned as "known issues" exist, or were not found in the intensive testing period leading up to this release. However, if bugs are found and reported, they will be worked on and hopefully fixed. Some features, like embedable internet plugins, Java applets, and some OLE objects will never work with the X11 release. Also, a fully native Aqua interface version is not available at this time as it is currently under heavy development. The Mac OS X/Darwin porting team hopes that interested developers will join up with the team to finish the missing parts of the Mac OS X and Darwin ports, most importantly the Aqua interface.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q10"><strong>Question:</strong></a> When will a fully native Aqua version be available?</p>
  <p class='indent'><strong>Answer:</strong> The Quartz/Aqua build represents a substantial amount of work on the OpenOffice.org user interface, and there is much still to be done. The more developers the Mac OS X/Darwin port of OpenOffice.org attracts, the faster progress will be. At this point, there is no estimated time of completion for the Aqua native interface due the amount of work yet to be done and the number of contributing developers. Our <a HREF="/project/porting/mac/timeline.html">timeline for development</a> offers an estimate of project course with the current resources available to us. As always, these delivery dates can be moved up with increased involvement from the community.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q11"><strong>Question:</strong></a> Will OpenOffice.org 1.1.2 run on OS 9 and earlier operating systems?</p>
  <p class='indent'><strong>Answer:</strong> No, it will not. The current Macintosh porting effort for OpenOffice.org is targeting Mac OS X v10.2 and higher. There is no porting team working on support for older operating systems. Because of the technical differences between OS X and older operating systems and how they are used in the porting code, older Mac OS releases are essentially a different operating system for the purposes of the OpenOffice.org source code. Supporting OS 9 and earlier releases would require a second porting team to start from scratch. There are no plans to create an OS 9 porting team at this time.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q12"><strong>Question:</strong></a> What support is offered with the OpenOffice.org 1.1.2 for Mac OS X (X11)?</p>
  <p class='indent'><strong>Answer:</strong> See the <a href="http://porting.openoffice.org/mac/support.html">Mac suppor</a>t page. That support is free and provided by community members. Vendors may, however, re-package this release and sell it with support to the extent allowed under the LGPL and SISSL licenses. If informal support is desired, get involved with OpenOffice.org and help the project out! There are a number of OpenOffice.org mailing lists to which questions, problems, and issues can be posted. These can be found at <a href="mail_list.html">Mail Lists</a>. </p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q13"><strong>Question:</strong></a> What are the objectives of OpenOffice.org?</p>
  <p class='indent'><strong>Answer:</strong> The objectives of OpenOffice.org are to:
  <ul>
    <li> Provide a free open source office suite in many languages and on many platforms;</li>
    <li> Provide open access to the source code;</li>
    <li> Establish open productivity XML-based file formats and language-independent component APIs;</li>
    <li> Enable innovation, which will build the next generation of open network productivity services.</li>
  </ul>
  <p class='indent'></p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q14"></a><strong>Question:</strong> Why is OpenOffice.org significant?</p>
  <p class='indent'><strong>Answer:</strong> It is important for many reasons:
  <ul>
    <li> Total cost of ownership is favorable, the office suite is free!;</li>
    <li> Open file formats give continuous file compatibility over time and compatibility with files generated with other suites;</li>
    <li> Multi lingual, Multi platform - every one can standardize on it and it is ideal for anyone in an environment using mixed operating systems;</li>
    <li> Stability and features are strong and getting stronger;</li>
    <li> Ease of use - Training is not an issue, anyone who had used an office suite will find OpenOffice.org intuitive;</li>
    <li> Future modules and developments are positive:</li>
    <li> A future groupware project, working on developing functionality sufficient to make OpenOffice.org a complete replacement for Microsoft office plus MS Exchange server;</li>
    <li> XMerge (plug-in Java based framework for converting documents between formats for hand held devices). Allows you to view, edit and format the original document within your handheld. Not feasible without XML.</li>
  </ul>
  <p class='indent'></p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q15"><strong>Question:</strong></a> What role has Sun Microsystems, Inc., had in the Mac OS X/Darwin port so far?</p>
  <p class='indent'><strong>Answer:</strong> Sun has been extremely helpful in support of all the porting projects, including the Mac OS X/Darwin port. In addition to actually releasing the OpenOffice.org source code under license to the community in the first place, Sun engineers have contributed code, assistance, and support to the Mac OS X/Darwin porting team.</p>
  <p class='indent'> Sun continues to sponsor and support the innovation in the OpenOffice.org community and remains a strong supporter for the use of open standards in the industry. It is critical for all of Sun's customers that there be open, viable, cutting-edge office productivity software available to run in the heterogeneous network and across all platforms. OpenOffice.org makes it possible. Through open standards and by expanding the market for product implementations based on open standards Sun can lead through hardware and related services. Sun believes 'innovation happens elsewhere' and the OpenOffice.org community has shown true creativity and innovation both in development and marketing of OpenOffice.org.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q16"><strong>Question:</strong></a> What is Apple Computer, Inc.'s involvement with the project?</p>
  <p class='indent'><strong>Answer:</strong> Apple Computer, Inc. is generally very supportive of Open Source development, including projects such as the Mac OS X/Darwin port of OpenOffice.org, but has no formal relationship with OpenOffice.org or the Mac OS X/Darwin porting team.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q17"><strong>Question:</strong></a> What prevents someone from moving from Microsoft Office v.X to OpenOffice.org on Mac OS X?</p>
  <p class='indent'><strong>Answer:</strong> The OpenOffice.org Mac OS X/Darwin porting team members have actually been using OpenOffice.org for all their office-suite needs since October 2002. With the release of OpenOffice.org 1.1.2 for Mac OS X (X11), the port is completely ready for prime-time. Still, more developers are needed and welcomed to help the port move along and begin to look and behave like a native Mac OS X application.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q18"><strong>Question:</strong></a> What is the difference between Sun's StarOffice 7.0 [tm] and OpenOffice.org 1.1?</p>
  <p class='indent'><strong>Answer:</strong> OpenOffice.org 1.1, which shares the same code base as Sun's StarOffice 7.0 [tm] software is - like StarOffice - a full-featured office suite that provides a near drop-in replacement for Microsoft Office. OpenOffice.org 1.0 offers software freedom, enabling a free market for service and support, while the Sun-branded product, StarOffice 6.0 software, offers fee-based support and training, along with deployment and migration services.</p>
  <p class='indent'>StarOffice 7.0 [tm] includes some proprietary code in the form of third-party licensed technology, which is not available in OpenOffice.org. Examples of this third-party technology include:
  <ul>
    <li>Certain fonts (including, especially, Asian language fonts)
    <li>Dieckmann spell checker (OpenOffice.org has a community developed open source spellchecker)
    <li>The database component (Adabas D)
    <li>Certain file filters
    <li>Extensive clip art gallery
  </ul>
  <p class='indent'>OpenOffice.org 1.1.2 is available in many different languages with new language ports being added continuously. The suite has been ported to other operating system platforms, including Linux (both Intel and PPC), Solaris, Windows, and FreeBSD, with other ports continuously in development.
  <p class='indent'></p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q19"><strong>Question:</strong></a> Will there ever be a StarOffice for Mac OS X?</p>
  <p class='indent'><strong>Answer:</strong> Sun Microsystems has no current plans to bring the StarOffice suite to Mac OS X. However, Sun contributed much of the base and core technologies for the current Mac OS X/Darwin port, and the Mac OS X/Darwin porting team is working hard to finish it. Sun continues to provide support to the OpenOffice.org community, and therefore the Mac OS X/Darwin porting project.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q20"><strong>Question:</strong></a> Where can I get more information about OpenOffice.org?</p>
  <p class='indent'><strong>Answer:</strong> The OpenOffice.org website (<a href="/">/</a>) is the best location for up-to-date information on OpenOffice.org. For more information about the Mac OS X/Darwin port, check out <a href="/project/porting/mac">http://porting.openoffice.org/mac/</a>.</p>
  <a href="#top">Top</a>
  <hr>
  <h3><a name="devquestions">Developer Questions</a></h3>
  <p><a name="q21"><strong>Question:</strong></a> From a developer's standpoint, what needs to be done with OpenOffice.org on Mac OS X/Darwin?</p>
  <p class='indent'><strong>Answer:</strong> There are a number of modules and functions of OpenOffice.org for Mac OS X/Darwin that either are incomplete in implementation or completely lacking implementation. For example, the Aqua interface implementation is largely incomplete. Other features like Drag &amp; Drop, and full-screen graphics are incomplete for the Quartz/Aqua native version, and only mostly supported in the X11 graphics version. Developers are greatly encouraged to join the porting team at OpenOffice.org and help fill in the missing pieces.</p>
  <p class='indent'> See the roadmap at <a href="/project/porting/mac/timeline.html">http://porting.openoffice.org/mac/timeline.html</a> for more detailed information on what still needs to be completed.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q22"><strong>Question:</strong></a> What is the state of the build on Mac OS X/Darwin?</p>
  <p class='indent'><strong>Answer:</strong> OpenOffice.org 1.1.2 builds fully and creates an install set for the X11<br>
    graphics version. The Quartz/Aqua graphics version is based on an older version of the OpenOffice.org source code, does not build completely and many functions are missing. Much more work must be done to bring the Quartz/Aqua version up to par with the X11 version.n.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q23"><strong>Question:</strong></a> What tools are used to build OpenOffice.org on Mac OS X/Darwin?</p>
  <p class='indent'>Answer: The build process involves heavy use of shell scripts and makefiles, relying on Apple's developer tools, the Mac OS X/Darwin BSD layer, and other open source development software, such as the Java and X11 development environments. The compiler currently in use is Apple's version of gcc 3.3, and all debugging must be done with gdb or similar debuggers.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q24"><strong>Question:</strong></a> If I want to help or contribute patches, whom should I contact?</p>
  <p class='indent'><strong>Answer:</strong> The best thing to do is to join up with the Porting project of OpenOffice.org (<a href="/project/porting/index.html">http://porting.openoffice.org</a>) and subscribe to the mailing lists there. The current Mac OS X/Darwin development team reads those lists and responds to questions posted there. For patches over 10 lines of code, the author must have signed the Joint Copyright Agreement (JCA) and filed it with the OpenOffice.org project. Then the changes can be submitted to a Mac OS X/Darwin committer, the general procedure of which is normal for most open source projects.</p>
  <a href="#top">Top</a>
  <hr>
  <p><a name="q25"><strong>Question:</strong></a> What kind of hardware does a developer need to work on the OS X OpenOffice.org port?</p>
  <p class='indent'><strong>Answer:</strong> The best you can get your hands on. OpenOffice.org is a large and complex project. To get reasonable performance while building and debugging, developers should probably have a G4-based Macintosh running Mac OS X v10.2 or higher. It is recommended that the machine have at least 300 MB of RAM and 3GB of free hard disk space to perform a build. Developers can probably work on the port with older hardware but it will require quite a bit of patience. Still, a full compile of the source code takes about 8 - 12 hours on fast machines (Dual 1.25GHz+).</p>
  <a href="#top">Top</a>
  <hr>
</div>
</body>
</html>
