[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: The embedding thing ....
From: weis <weis () stud ! uni-frankfurt ! de>
Date: 1999-09-30 16:23:40
[Download RAW message or body]
Hi,
I think that there are some errors in the current discussion:
a) konqui <-> koffice
That is like comparing apples and eggs. Both have different demands:
koffice has MANY plugins, uses this broken and damn slow QPicture
hack. If you have 100 formulas, you can not have 100 widgets. That
is too slow and KWord can not handle it very well.
The QPicture approach means transfering lots of data between processes
and eats memory. So please stop saying: Konqui works -> koffice must,
too, unless you have more precise arguments.
b) CORBA and XML
Nonsense! Creating a GUI is one thig. But a GUI lives, has to be
updated, pixmaps of ColorButtons changed, bookmark menus extended etc.
Canossa uses XML only to arrange the actions in mens, toolbars and
submenus. XML in Canossa does NOT talk about menuitems, button,
comboboxes etc. That is up to QAction. When you use CORBA and XML
then you need a complete IDl wrapper for Toolbar and Menubar, otherwise
you can never modify anything.
c) CORBA and shared libs
Makes no sense: When you use shared libs, you kill the ability to
distribute components (nobody needs/uses that anyway) and you can
not link in a Java interpreter that easily since you would have to
merge Qt and Motif. You can not link in some GTK stuff for the
same reason. So there is no benefit in describing the interface
for shared lib components in CORBA. It is only bloaty.
d) Large data
Imagine an image filter which has to work on a 4MB QImage.
Shared libs wont help. You still have to put the image in
something that you can describe in IDL and that is for shure not
a QImage. of course you can try to hack that in cuteidl, but these
problems appear with all kind of classes with much data and you
can not always play with the language binding.
e) Stability
Crashing a distributed system correctly is a kind of art.
When one component fails it should free/stop/kill all related
components. But our CORBA stuff does not do that. if some KWord
that embedded a KSpread crashed, then it may happen that KSpread
survives or crashes. If the KSpread server is shared than it
should NOT crash, if it is not shared then it MUST stop :-(
But still we dont have that under control very well. Putting
stuff in a shared lib helps, since the shared libs crash with
the rest of the application. Remember the KDE0.x problems
with kioslaves eating all CPU time. Some nasty CORBA servers
may do the same after some partial crash.
f) Speed
Compare embedding in canosse and koffice and then we are done on
the topic.
g) Printing
Passing around a QPainter in Canossa is a cool thing. Currently
we pass around QPicture which is not supported in Java currently :-)
the QPicture approach is bad as I showed above.
h) Static XML GUI
As i already said: QActions can modify the menu items, or their
widgets inside of toolbars at any time. No XML us used to describe
the appearance of actions. XMl describes only ther order in the
menus/toolbars.
i) Interoperability
As outlined above this is currently with CORBA not the case. QPicture
and focus handling make it hard to use another language/toolkit.
And until now nobody ever wanted to implement a OpenParts binding
in TCL or whatever. So I think we dont need to shoot ourselfs
in the legs for a feature that actually nobody is using in practice.
j) Distributed KOffice
Only people who are ill in the brain distribute koffice
components on different servers :-) So we dont need that
k) KOffice embedding sucks.
Yes, it does. It does since 1 year or so and nobody fixed it.
And as a matter of fact nobody really uses it. So it seems unlikely
that it will become fixed in the next few days. If it had been that
easy, why did nobody try it with success before ? And nobody can
say that there are no attempts.
l) Easy to use APIs
Bad APi -> nobody learns it -> no code -> Does not matter how powerful
the API is since no code uses it :-)
This is OpenSource. We can not force people to learn OpenParts and
for understandable reasons almost nobody did.
I could add more, but I am tired.
Let me sum up what I want:
I want a pragmatic approach. I dont care about technical visions and
interoperability and all that cool stuff. I dreamed this dream much too
long. The OpenParts/KOM/CORBA stuff is developed since over 1 year
and mico even longer. In contrast it took me 5 nights to write
canossa and convert KSpread to it. And it took me two more
nights to convert kofficelibs and convert KSpread again to the
new kofficelibs (done last night).
Lets face it: The 5 day work impressed many developers more than
the result of over 1 year with CORBA is able to do.
There is a lot you can do with CORBA, but lets concentrate what
99% of the people need:
1) fast embedding ->Canossa
2) easy APi for hacking ->Canossa
3) fast printing ->Canossa
4) embedding lots of formulas without the MS-Word effect ->Canossa
5) want up to date GUI APIs and not some wrapper that is not
up to date ->Canossa
6) System-Reliability: Apps may crash but the system may not.
But as outlined above crashing distributed systems is a problem
->Canossa
What people currently dont seem to need (they only like to know that
they could if they ever wanted to):
1) Interoperability with other fancy languages ->CORBA
2) Distributing an office app over several machines ->CORBA
3) Embedding components of other fancy GUI toolkits ->CORBA
See what I mean? The pros of CORBA are technically interesting
but actually nobody seems to make use of it. After more than
one year nobody every used it, so what ?
I think canossa is the way to go. We keep CORBA for scripting
of course and for communicating with shared servers like
kmail, konqui etc. Even components like KSpread etc.
keep their CORBA interface for scripting.
But when it comes to the constructions of a GUI then pure
C++ and KDE/Qt is superior by far.
Please mind this difference:
a) Scripting and remote control etc: CORBA is the way to go
b) GUIs: Qt/KDE + C++
You can not say wether CORBA or pure C++ is the best. It depends
on what you do. So why not use the best of both worlds as outlined
above ?
Bye
Torben
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic