NeoOffice and Aqua

From NeoWiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 23:51, 20 October 2011 (edit)
Sardisson (Talk | contribs)
(So...is NeoOffice written in Java? - update ohloh stats for current values)
← Previous diff
Revision as of 23:53, 20 October 2011 (edit) (undo)
Sardisson (Talk | contribs)
(How is Java used in NeoOffice? - note about recent features also)
Next diff →
Line 95: Line 95:
As mentioned above, Java is mainly used to tap into the Mac OS X look-and-feel. What makes NeoOffice work isn't the Java language itself but rather the libraries that come with the virtual machine like Java 2D for drawing and AWT for menus. Those are actually already "native" in the Apple VM in the sense that Java 2D is really CoreGraphics/Quartz and AWT is really Carbon.[http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=4218#4218] As mentioned above, Java is mainly used to tap into the Mac OS X look-and-feel. What makes NeoOffice work isn't the Java language itself but rather the libraries that come with the virtual machine like Java 2D for drawing and AWT for menus. Those are actually already "native" in the Apple VM in the sense that Java 2D is really CoreGraphics/Quartz and AWT is really Carbon.[http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=4218#4218]
-The amount of Java used has also decreased over time.[http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=60734#60734] When NeoOffice was upgraded to the OpenOffice.org 1.1.2 codebase (NeoOffice/J 1.1 Alpha), text rendering switched from Java to the Mac OS X native ATSUI APIs since they are much more suited for complex text layout than Java is.[http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=3692#3692] Other features were never implemented in Java at all (for instance the Dock menu, which used Carbon in NeoOffice/J 1.1 and Cocoa in newer versions).+The amount of Java used has also decreased over time.[http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=60734#60734] When NeoOffice was upgraded to the OpenOffice.org 1.1.2 codebase (NeoOffice/J 1.1 Alpha), text rendering switched from Java to the Mac OS X native ATSUI APIs since they are much more suited for complex text layout than Java is.[http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=3692#3692] Other features were never implemented in Java at all (for instance the Dock menu, which used Carbon in NeoOffice/J 1.1 and Cocoa in newer versions, and most recent Mac OS X integration features, which are written in Cocoa/Objective-C).
=== Why aren't you working on a Cocoa version of an Aqua OpenOffice.org? === === Why aren't you working on a Cocoa version of an Aqua OpenOffice.org? ===

Revision as of 23:53, 20 October 2011

Frequently-asked questions about the design and development of NeoOffice, or "Everything You Don't Know About NeoOffice (and Should Read Before Posting on [Mac]Slash[Dot])"

Contents

Aquafication and Mac OS X Integration

Why doesn't NeoOffice look exactly like other Mac applications?

NeoOffice currently has a high level of "Aquafication"; that is, to a large degree NeoOffice does look like a normal Mac application. In addition, the NeoOffice project has focused on improving points of integration with Mac OS X, providing Mac-specific features requested by NeoOffice users.

NeoOffice 2.0 Aqua Beta was the first release of NeoOffice to include extensive "Aquafication". Discerning Mac users (are there any other kind?) may have noticed some things didn't look quite right, but over time the developers worked on polishing away most of the grey warts and adding new Mac features to match the new Aqua appearance.

Although some remnants of the Windows-centric OpenOffice.org UI remain, as resources, donor requests, and feasibility allow, the NeoOffice project continues to slowly make NeoOffice an even better Mac OS X application.

What are some Aquafication and Mac OS X integration breakthroughs?

As of February 2010:

  • Support for Mac OS X Services that modify the text selection (06/2010)
  • “Look Up in Dictionary” context menu item in Writer (02/2010)
  • Support for moving and renaming files while they are open (01/2010)
  • Native Mac OS X highlighting in Writer, Impress, Calc, and Draw (12/2009)
  • 512x512px application icon (12/2009)
  • Smoother text kerning (12/2009)
  • Support for changing the component that opens on launch (07/2009)
  • Support for reading data from NeoOffice by Mac OS X Services (11/2008)
  • Support for the Apple Remote in Impress (06/2008)
  • Support for magnify and swipe multitouch trackpad gestures (05/2008)
  • Native floating palettes (05/2008)
  • Media Browser for accessing media from iLife applications (05/2008)
  • Support for horizontal scrolling (04/2008)
  • Support for playing QuickTime video in documents on Mac OS X 10.4 and higher (03/2008)
  • Menus are available when no documents are open (03/2008)
  • Import of images from scanners and cameras using Image Capture (03/2008)
  • Command-clicking on window titlebar reveals the document path (03/2008)
  • Use of the system-wide grammar checker on Mac OS X 10.5 (03/2008)
  • Access to the Mac OS X Address Book as a data source (07/2007)
  • Use of the native Mac OS X spell-checker for supported languages (07/2007)
  • Support for the Quick Look feature of Mac OS X 10.5 (06/2007)
  • Support for changing the cursor blink rate using the standard Cocoa property (06/2007)
  • Widgets in the background now appear disabled, and the cursor no longer blinks in the background (05/2007)
  • Support for the "unsaved changes" indicator in the window close button (04/2007)
  • NeoOffice documents now appear in the Mac OS X "Recent Items" menu (03/2007)
  • Toolbar buttons are now Aqua beveled buttons (03/2007)
  • New Aqua icon set (02/2007)
  • Native Cocoa Open and Save dialogues (07/2006)
  • New document icons that fit better with the Aqua appearance (07/2006)
  • Disabled toolbar icons have the proper Mac OS X appearance (previously they were solid grey) (07/2006)
  • Numerous Aqua widgets (scroll bars, buttons, progress bars, etc.) (04/2006-07/2006)
  • Improved compatibility with voice dictation software (10/2005)
  • Ability to print embedded EPS files (09/2005)
  • Improved support for international keyboard layouts (09/2005)
  • Dock menu with items from the "Quickstart" service (also found in the NeoOffice menu) (06/2005)
  • No longer shows the "grey window" when closing the last document window, but the application remains open, just like normal Mac apps (05/2005)
  • Spotlight integration on Mac OS X 10.4 "Tiger" via NeoLight (05/2005)
  • Uses colors defined in the Appearance pane of System Preferences (04/2005)
  • Support for Indic languages (04/2005)
  • Support for Eudora, Entourage, and Mail as external mailer applications (03/2005)
  • AppleScript for drag-and-drop installation of help files for non-English languages (03/2005)
  • Drag & drop between NeoOffice and other applications (03/2005)
  • No longer exits when clicking the red "close" widget on the last document window (03/2005)
  • "About NeoOffice" and "Preferences" items in the "NeoOffice" menu (02/2005)
  • Localized interfaces for 40 languages (12/2004)
  • New Aqua application icon and splash screen (12/2004)
  • Optimized/smaller PDFs (12/2004)
  • Text drag & drop (12/2004)
  • Scroll-wheel support (11/2004)
  • Native menus now appear in the white bar at the top of the screen, just like any other Mac program (previously, they appeared at the top of the same window as the document) (11/2004)
  • Automatic notification of new patches and versions (11/2004)
  • Patches available as standard Mac OS X installer packages (09/2004)
  • Support for Macintosh file aliases in open and save dialogues (09/2004)

Stay tuned as new features continue to be added!

Technologies and Toolkits

What technologies are used in the Aquafication of NeoOffice?

Aqua is the "look and feel" developed by Apple for OS X. Apple provides three frameworks for developing applications with an Aqua user interface:

  • Carbon (sort-of Mac OS 9 compatibility mode, also used by Mozilla/Firefox)
  • Cocoa (new framework that was adapted from NeXT for Mac OS X)
  • Java (cross-platform language, includes JFC/Swing for native-looking UI elements)

NeoOffice (originally known as NeoOffice/J), currently uses a mix of Cocoa, Carbon and Java to provide the Aqua user interface and integration with Mac OS X technologies (NeoOffice/C, the original prototyping project, was an attempt to use Cocoa and Carbon).

So...is NeoOffice written in Java?

No.

NeoOffice is a Mac OS X native version of OpenOffice.org that uses small amounts of Java code for graphics drawing and configuration.

OpenOffice.org is written primarily in platform-agnostic C++. However, NeoOffice takes advantage of Mac OS X's advanced Java integration to tap into the Mac OS X look-and-feel. In other words, the little bits of Java in NeoOffice primarily have to do with operations that affect how the application appears to the user. The "guts" of the office suite are written in C++. (The code that makes up NeoOffice is 99% OpenOffice.org code shared among all OpenOffice.org platforms and 1% Mac OS X-specific code in Java, C++, C, and Objective-C. Ohloh.net shows that the NeoOffice-specific code is 84% C++, 6% XML, and 5% Objective-C.)

Thus NeoOffice will only run on Macintosh computers running Mac OS X—not on Mac OS 9, Windows, Linux, Darwin, or any other form of UNIX.

How is Java used in NeoOffice?

As mentioned above, Java is mainly used to tap into the Mac OS X look-and-feel. What makes NeoOffice work isn't the Java language itself but rather the libraries that come with the virtual machine like Java 2D for drawing and AWT for menus. Those are actually already "native" in the Apple VM in the sense that Java 2D is really CoreGraphics/Quartz and AWT is really Carbon.[1]

The amount of Java used has also decreased over time.[2] When NeoOffice was upgraded to the OpenOffice.org 1.1.2 codebase (NeoOffice/J 1.1 Alpha), text rendering switched from Java to the Mac OS X native ATSUI APIs since they are much more suited for complex text layout than Java is.[3] Other features were never implemented in Java at all (for instance the Dock menu, which used Carbon in NeoOffice/J 1.1 and Cocoa in newer versions, and most recent Mac OS X integration features, which are written in Cocoa/Objective-C).

Why aren't you working on a Cocoa version of an Aqua OpenOffice.org?

There are several reasons. OpenOffice.org is not built like a native Cocoa Mac application. Translating all of the event model, font management and display routines into "pure" Cocoa would be a great deal of work. On the other hand, Apple's Java implementation provides good access to Aqua features and is easier to meld with the underlying OpenOffice.org code. NeoOffice/C proved that a "pure" Cocoa implementation was not a viable solution in the short-to-medium-term; while it looked great after a lot of hacks, it was not stable enough for even casual use. For a more detailed explanation of the reasons behind these implementation choices, see this post from NeoOffice project co-founder and core engineer Ed Peterlin.

As it stands, NeoOffice is very stable and quite far along towards providing a fully-Aquafied user interface, and taking a different path now would meaning throwing a lot of good, stable, well-tested code in the trash. The downside to using Java is that is consumes (somewhat) more resources than a pure Cocoa implementation might. (You need more RAM than the minimum requirements for Mac OS X—but then Mac OS X benefits from having more RAM than its minimum requirements!—and RAM is cheap; adding RAM is the most cost-efficient way to speed up your Mac.) Apple's improvements in Java 1.4.2 over Java 1.3.1 have actually allowed NeoOffice 1.2 Alpha to reduce resource usage and improve performance.

Instead of clinging dogmatically to a single toolkit, NeoOffice developers "use the best tool to tackle whatever task [they] face" in the effort "bring a full-on enveloping Mac OS X experience to [OpenOffice.org]."[4]

Isn't Cocoa better than Java?

Aqua is aqua.

This question is most often asked by developers and power users. End users, on the other hand, tend to judge by the results. As one tester put it:

"If it looks like a duck, walks like a duck, and quacks like a duck, then to the end user it's a duck, and end users have made it pretty clear they want a duck; whether the duck drinks hot chocolate or coffee is irrelevant."

And, as John Gruber puts it, after quoting an Apple engineer posting to Carbon-Dev, "send [the second paragraph] to anyone who claims that only 'Cocoa apps' are 'truly native' Mac OS X apps."

Isn't Java slow?

The majority of NeoOffice is written in C++. Only those bits that facilitate an Aqua look in Mac OS X were customized to use Java. The reason is that Mac OS X Java looks terrific and hooks right into the native Aqua "blue-button" controls.

And by the way—Java isn't really that slow any more.

Why not use gtk or Qt or some other cross-platform toolkit?

See Why aren't you working on a Cocoa version of an Aqua OpenOffice.org? and Isn't Cocoa better than Java? :-) The short answer is that reworking the OpenOffice.org codebase to use another toolkit would take at least as much time and work as it has taken to get NeoOffice to the point where it is today (three years of nearly full-time work by 1.5 developers and additional work before that, and continual bug-fixing, stability, and performance work in the latter half of the first decade of the 2000s), with no guarantees that it would be as stable.

Moreover, in the case of gtk, the ports to Mac OS X are older versions of gtk and fairly incomplete. Even in the case of Qt, which has a modern and complete Mac OS X port of the toolkit, the existing OpenOffice.org work on "using Qt" would not benefit a native, non-X11 Aqua version of OpenOffice.org at all. The Qt/KDE OpenOffice.org (Native Widget Framework effort) is not a "native Qt" implementation of vcl (OpenOffice.org's cross-platform windowing toolkit and abstraction layer). All of the underlying font handling, drawing, etc., is still done using X11; it's only the widget drawing that is using Qt's equivalent of the Mac OS X Appearance Manager.[5]

What about Intel-based Macs? Is there a Universal Binary?

See this FAQ (spring 2006) for a detailed explanation of MacIntel issues and the latest developments. (You can also see the early 2006 FAQ for historical information.)

Other Questions

Has NeoOffice replaced NeoOffice/C?

Yes.

What happened to NeoOffice/J?

In recognition of the fact that the "classic" CoreGraphics/Cocoa port (NeoOffice/C) was a dead-end and no longer under development, as well as the fact that the "/J" was very confusing to many users and pundits, the application known as NeoOffice/J was renamed simply NeoOffice beginning with the 1.2 Alpha release.

Is there a Development Roadmap?

The direction of the NeoOffice project is typically discussed in the NeoOffice Development forum on trinity. Current plans are outlined in the Post NeoOffice 3.0.1 development planning topic.

Historical Roadmaps

The What's planned after NeoOffice 2.2.1? topic and this post about Mac OS X 10.5 described the 2007-2008 NeoOffice development plans.

The post-June 6, 2005 plans of NeoOffice's two primary developers for 2005-2006 were outlined in this topic. Tentative plans for post-NeoOffice 2.0 Aqua Beta included further polishing of the Aqua widgets and a community project to develop a set of Aqua "toolbar" icons, but no formal plans or roadmaps were announced.

Where can I learn more about NeoOffice?

For tips on using NeoOffice, see the Tips and Hints section of this Wiki.

I have another question about the design or development of NeoOffice; where can I get an answer?


This article in other languages: Français Deutsch Italiano Español Nederlands
Personal tools