Hi Mox,
as you correctly outlined, XUL is the only _realistic_ approach, to get
a (nearly) native OOo on Mac OS X.
Main point probably is, that such an adoption introduces a new, high
sensitive dependency into OOo. I am 100% sure, that we would find bugs,
miss features, face incompatibilities and so on, if we go this way. We
probably would need _active_ help from the Mozilla community, to succeed
with this.
On the other hand, currently _no_ ISV etc. really has a chance of doing
inter application open source desktop programming, because of the
diversity of technologies to learn, e.g. GTK+, QT, XPCom, UNO, XUL, VCL,
OOo BASIC, JavaScript, C, C++, Bonobo, ..., not even mentioning the
thousands of interfaces.
And, there could be even more, just take a look at the overall
architecture of OOo and Mozilla ... :-)
Kay
Mox wrote:
Hi again...
A bit of a disclaimer first. I do not have any first hand knowledge on
OOo with Cocoa or any other combination. I have been just reading
NeoOffice forums and blogs about OOo, Cocoa, GTK, KDE etc etc.
However, I think that what I try to say is not without merits. On the
other hand, if there are mistakes, please correct them!
I can very well understand that for Mac, the idea of combining OOo and
Cocoa is intuitively the "right thing to do". And for many programs it
is. Cocoa is very nice way to port for apps like Abiword or for apps
that can be created more or less from the beginning.
But OOo is a HUGE program. It also has an architecture that is very much
oriented towards Windows and X11. It does NOT work well with Cocoa
programming concepts. See, for example, NeoOffice people's comments:
http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=3585#3585
<http://trinity.neooffice.org/modules.php?name=Forums&file=viewtopic&p=3585#3585>
I think the more or less only people, who have actually tried to make
Cocoa and OOo work together were Patrick and Ed from NeoOffice. They
worked on that for 1+ years and in the end, got a very fragile and very
unstable build called "flaming yeti". After working so much on it, they
decided (in 2003) that it was NOT a good way and then started using Java
for the UI.
....
The following numbers and percentages can be very wrong. I hope somebody
could correct them. But I'll try anyway....
For KDE(QT) and GTK, the theming in OOo 2.0 uses NWF, a.k.a. Native
Widget Framework, which does not actually use native widgets. It only
uses the same native theme resources (button pictures, configurations
etc) as the toolkit (QT/GTK) would use and then places those pictures on
top of the widgets of OOo.
For Mac, this does not work, because Apple does not allow look-a-likes.
Apple wants implementations to use the real native widgets. I don't know
exactly how NeoOffice does this currently, but there might be some
shortcuts when using Java.
So, to get Cocoa widgets working in OOo, a complete Cocoa toolkit must
be implemented in VCL module of OOo. This means replacing about 70-80%
of VCL! And as written previously it will be exceptionally difficult
work. This would be a Mac-only project.
What about alternatives?
Mac could use also QT 3 or QT 4. The QT toolkit already has a Mac native
implementation (using Carbon, QuickDraw and CoreGraphics). This would
mean replacing also about 70% of VCL, a little less, because NWF already
has some bits of code that woould help. This would also be a lot of
work, because it would have to fit into the existing VCL architecture.
However, QT is more compatible with that architecture and there also
could be linux developers that could help in the process (Like Jan
Solevsky). This would be a Mac&Linux joint project.
A more far-sighted plan, would be to use XUL (+Gecko) as the alternative
architecture for VCL. This would mean replacing about 90% of VCL. But it
would give a LOT more flexible architecture for all the platforms. See:
http://ooocon-arnes.kiberpipa.org/media/XUL_Gecko_Stephan_Schaefer/video.ogg
XUL already has platform support for Windows, Linux (GTK/KDE) and Mac.
It's been used in Mozilla Firefox and is actively developed all the
time. For Mac, the XUL used to use Carbon, but the current betas use
Cocoa with Quartz (via Cairo). XUL would have to be extended to support
all the widgets of OOo, but the basic ones are already in place.
Using XUL would be a joint project with many SUN people, linux people
(GTK/KDE), localisation people etc etc. It would affect many areas, but
also it would also make OOo easier to develop for very many people.
...
So with XUL, the question is not about: "Do we use Cocoa?". It is about
1) "Do we use the existing difficult VCL architecture and try implement
it directly with Cocoa?" (not using XUL)
or
2) "Do we improve the VCL architecture by integrating XUL and then get
the benefit of existing Cocoa stuff that comes with it? The rest of the
missing pieces can be coded with Cocoa (and XUL)" (using XUL)
...
If you have read this far, thanks a lot for your patience :)
Now, some comments...
On 10/3/05, *Eric Hoch* < [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Hi Mox,
Am Mon, 3 Oct 2005 22:42:13 +0300, schrieb Mox:
> On 10/3/05, eric.bachard <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
> To see how well XUL w/ Gecko integrates with Mac, just download
Firefox or
> Camino to your computer from mozilla.org....
^^^^^^
Sorry here you are wrong. Camino is a Cocoa based browser using the
Gecko Engine. It's not written in XUL. From www.caminobrowser.org
<http://www.caminobrowser.org>
Sorry, my mistake. Camino and Firefox are using more and more the same
infrastructure, but as you said, Camino uses Cocoa directly. Firefox, on
the other hand, uses Cocoa via XUL.
> Plus it would make localization and menu editing a matter of
changing a
> plain text file. And you can make the change and see the results
while
> running OOo!
Right, but same for real Cocoa/Objective C. Almost everything is in
a .plist file for your language and once this file is translated a
lot of work is done.
However, with XUL, there would be no need for platform specific
translations. All the platforms could use the same plain-text
localisation files (XML files?).
There could be some platform-specific custom menu-localisations though....
> The OOo XUL might have interested parties also outside Mac
community, so it
> wouldn't be just 3 person effort. At least Stefan Schäfer and
Michael Meeks
> (Novell) have shown interest.
There will always be some interest for any kinf of developing and
porting OOo to any GUI plattform out there, that is only natural.
The point here is that even when QT and other kits are available
for OS X and are OS X native the "real native feeling" only is
Coccoa/Objective-C. We advanced users and developers can life with
QT and other GUI kits but what about the long time Mac user? He
switched to OS X and now he has an OOo that uses XUL and the
feeling of native but not really native.
Firstly, Apple has officially said, that both Carbon and Cocoa equally
good alternatives. Which one of those two you use, should be a decision
based on what you need.
Secondly, QT is quite native; it uses Carbon and Quickdraw to do it's
stuff. The newer versions also make quite much effort to align with
Apple HIG ( i.e. UI guidelines).
XUL on the other hand uses Cocoa and Quartz. So the real Cocoa Widgets
are in use. Also XUL has seen many efforts to make the Mac port align
more to Apple HIG.
It is of course harder to get a QT or XUL app to be 100% same as a pure
Cocoa app. But it is not impossible. And I think for the most people,
getting a XUL application that is 98% similar to Cocoa available at the
same as windows and linux versions would be very nice thing in deed. The
rest 2% would then be fine tuning for OOo 3.0.x versions.
When you speak about toolkits such as QT and then think that just using
Cocoa will be the solution, you forget that OOo already has a toolkit
within itself: the VCL. For Mac people, that toolkit is probably worse
than what QT would be. And if you do not use VCL at all ( i.e. replace
everything), then every new change by non-Mac developers to VCL would
have to be re-implemented by Mac developers. So basically, you would
have to re-implement big parts of VCL for Mac in every major OOo
release. And it would be a lot of work to track & fix all the changes
that go into VCL.
With XUL, the changes that non-Mac developers make into menus,
localisation and many widget changes also, would automatically work in Mac.
> Getting OOo for Mac in shape with only X11 is already a huge
task. Adding
> Cocoa or something else on top of it makes the work 10 times
harder and time
> consuming. Where are the people who have time for it?
I hope that once the real Cocoa/Objective-C port is started we get
more developers involved and more interested users wanting a native
OOo even if there is a competer out there in Neo/J.
That is a nice hope. But at least in 2003 that did not happen (the
NeoOffice/C project). I would put my hopes in a larger cooperation with
the rest of the OOo developers (i.e. XUL).
> I think it's better to stick with X11, unless there is some
solution that
> gets us more people to work with it. I think Apple will provide
X11 in the
> future as well. And at least we will have X11 through fink or
opendarwin.
Where did Eric B write that he will dismiss the X11 port any time
soon. At least the 2.0.x series will we maintain for X11 and yes
there will always be a X11 via Darwinports, fink, XDarwin.org or
whererever you get it from.
Well, Tim Bray said so, when referring to the Eric B. presentation:
http://www.tbray.org/ongoing/When/200x/2005/10/01/Open-Office-Conference#p-1
<http://www.tbray.org/ongoing/When/200x/2005/10/01/Open-Office-Conference#p-1>
I'm glad to hear that X11 is not abandoned. I think Fink et al. would
not be able to provide OOo 2.0 if the [EMAIL PROTECTED] would not have made
such a nice big effort. So relying only on fink & darwinports may not
guarantee that OOo will have a X11 version.
Anyways, anything more native than X11 will anyways be more than 2 years
effort. Although, I guess NeoOffice/J 2.0 might be (optimistically)
available by the end of spring 2006...
Thanks,
Mox
--
Mox on G
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]