Fwd: The first alpha version of "Common DesktopInfrastructure" is released
Sebastian Sauer
mail at dipe.org
Thu Sep 6 00:47:43 BST 2007
George Staikos wrote:
>
> Hi everyone,
>
> Daisuke has asked for some feedback on his proposal. I think the
> KDE community in general should provide feedback.
Some comments that slipped into my mind while reading the
http://www.smg.co.jp/opensource/CommonDesktopInfrastructure/products/Architecture
Design Document.pdf without looking at the sourcecode;
> 1.3.2 Non-Functional Requirements
> (3) It is unnecessary to change the specification of the existing component
technologies.
> 2.1 Since realizing the protocol conversion without changing the existing
component technologies is required, protocol conversion parts are realized in
the exterior of the existing components.
I am not sure I understand this point. If it does mean, that each application
needs to have additional code, it's a blocker for any kind of adoption since;
1. It puts the work to implement and even more important to maintain the
additional code on to the shoulder of each application that would like to
implement such functionality.
2. I doubt that developers will make this a high priority and that means that
as long as nobody does provide implementations for _all_ applications we have
the very same situation like now with the difference, that there are already
a wide range of applications that implement DBus while there is no
application that does implement the "Common Desktop Infrastructur" (yet?).
IIRC at least OpenOffice.org already sayed that they will stick with UNO and
don't support DBus any time soon. So, why should they change there mind here
with this protocol specialy taken into account that DBus is more widly used
(yet)?
3. Even if someone cames up with implementations for all applications it's
totaly another question if the patches got accepted since additional code
means additional maintaining-work.
4. Why should someone choose those protocol rather then e.g. DBus direct?
If I got that point wrong then it would be at least great to explicit name,
that it does not mean any additional work for application-developers since
that's a very important point imho.
> 2.1 Converting RPC Protocol
> The caller protocol converts into the callee protocol via conversion to
abstract protocol.
I am not sure there what that may mean. Do we have then a roundtrip of e.g.
DBus<=>Abstract Protocol<=>UNO ? and if yes, why not just have DBus<=>UNO?
Guess I just fail here to see what the abstract protocol does provide in
addition since those protocol would also need bridges to other protocols, or?
> 2.1.1
> So, only synchronous call is adopted as the common RPC protocol of Common
Desktop Infrastructure this time.
> However, when remarkable performance deterioration occures by adopting
synchronous function call, it is
> necessary to change common RPC protocol to asynchronous function call.
Therefore, it is necessary to verify
> performance in advance.
This can be also a problem since that means, that the caller either blocks
till the callee decides to response or have to wait for a timeout. Any try to
work around this means again additional work for application-developers like
putting the whole thing into an own thread and additional work is something a
lot of people don't like ;)
Regarding performance, I like to provide a sample here. KWord 2.0 does come
with a python-script (using Kross, heh) that does IPC-connect with
OpenOffice.org. While this should be at least theoretical faster then RPC
(specialy taken into account, that RPC could also mean _real_ remote as in
over the internet or another slow connection), it is still very slow if
expensive operations are done like letting OpenOffice.org read e.g. a huge
non-ISO MSOOXML-document and to pass it on to KWord as e.g. ISO-OpenDocument.
Also UNO itself is network-aware what may mean, that even those
IPC-connection is done over an ISDN-connection. In any case blocking is very
dirty here since how to provide feedback to the user about what is going on
at the moment and how much of the work was already done?
DBus does take this already into account and allows to choose if the call
should be done sync or asynch and therefore saves each application-developer
the work for additional code.
> 2.2.3
> When RPC Routing Service of a Component wasn't started, it is necessary to
activate it.
and what happens if this fails cause e.g. the application isn't running or
cause the application is running without a "listener" that waits for such
requests? e.g. iirc OpenOffice.org does per default not startup
the "UNO-server" (or UNO-listener however you like to name it) since most
users just don't need it and therefore it's not needed to increase the
Openoffice.org startup-time even more. Seems QtDBus is doing something
similar to this.
> 2.7 Code generator
> the threshold of initial introduction can be lowered.
Code generation can be a good thing but it also has it's downside: missing
flexibility. So, it's not that easy to create things on demand aka
on-the-fly. Both, QtDBus with it's QDBusAbstractAdaptor and the dirty way to
manipulate the Qt-metasystem on the fly as well as the very flexible but damn
complicated UNO, do take this into account and are allowing both ways.
More information about the kde-core-devel
mailing list