RFC removing the XPrimitive2D (and related) UNO classes

Thorsten Behrens thb at libreoffice.org
Tue Apr 14 14:35:13 UTC 2020

Hi Tomaž,

Tomaž Vajngerl wrote:
> I'd call it a flaw in the dependency hierarchy, which means something is
> located at a wrong place.
Not necessarily. Sometimes it's the lesser evil (and there's always
other design constraints). Not saying this is the case here (haven't
looked in any detail if/how this can be disentangled).

> I know that this can be a "standard-issue" but mostly because a lot
> of times fixing the hierarchy is a lot of work and moving things
> around, but this doesn't mean breaking a circular dependency in such
> a way should be taken lightly or is a good thing.

> As for UNO - to me UNO API is for making the functionality available
> to extensions, macros, tests. If we use UNO just to circumvent a
> circular dependency, how is that anything but a misuse of UNO API?
It's the standard component model for LibreOffice, for better or for
worse. And it's fairly complete with stuff like factories, and more
subtle things like thread apartements.

So using UNO for a bit of fairly self-contained code, that can
usefully be employed by extensions (this "it is not perfect yet, you
cannot use it as-is" is a red herring really), and gives you a factory
that breaks the dependency chain is IMO not a bad thing. Hand-rolling
DLL loading to work around it would be.

> If we extend the UNO API from the point were it is not required for
> extension development, it is prone to be used for things that were
> never meant to be used externally and also YAGNI.
There's some truth to that. But it's very hard to draw lines in the
sand here; there's historically been extensions trying to integrate
_very_ intricately even with document views.

The discussion at hand is a different one though: should we
deliberately _remove_ UNO API, despite there being no technical need,
because we _think_ extension authors wouldn't/shouldn't use it?

(the icing of the cake is of course doing that, and then noticing now
you need to code something like the component factory yourself to get
dependency inversion working)


-- Thorsten
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1032 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20200414/b2e1a214/attachment.sig>

More information about the LibreOffice mailing list