So, although this will not be a GSOC task, I'd like to answer some of
the questions for archival purposes.
On Tue, 2014-03-11 at 12:53 +0100, Michael Stahl wrote:
that is the part of the idea proposal that i'm not sure about currently:
just using this "ixion" library for Writer formulas would put us in a
similar situation like what we currently are with text edition
components, where Writer has its own core and everything else uses
EditEngine instead; this duplication creates additional maintenance burden.
of course there are a lot of formulas (ODF part 2 is hundreds of pages),
and to me it appears quite sub-optimal to have multiple implementations
of all that.
there is already a "formula" module which Eike claims is not just used
by Calc but also by some Report(Builder/Designer/whatever) application,
which means it would probably be possible to use this from Writer too.
the problem is that apparently "formula" only contains the code to parse
and tokenize formulas; the actual evaluation is still in Calc's core and
tied to Calc's internals.
so i would welcome some input on what the architecture should look like
here:
1) is it possible to somehow abstract the formula evaluation
implementations from Calc internals (suppose it's mostly about
addressing/accessing the cells?) such that it could be used from
Writer too?
Possible? Yes, in the sense that anything is possible given enough
time. But IMO probably not realistic and perhaps its risk outweighs its
potential benefit. Calc's current formula interpreter code is so tied
to Calc's own internal model not just from functionality point of view
but also performance optimization point of view. Ripping that out and
abstracting it for other apps to use would probably be not worth the
disruption it would bring. Even the current sc/formula split just to
make the parser part of the formula engine available for other parts of
the code base has made the handling of formula engine a bit more awkward
inside Calc, to say the least.
2) would it be a good long-term plan to migrate Calc to ixion too so we
eventually end up with just one formula evaluation engine?
This was the initial thinking behind the inception of ixion. But 4
years has passed, and the likelihood of ixion replacing Calc's formula
engine has diminished. The possibility is still there, but let's say
that won't be happening in the next 5 years.
3) or is it unrealistic to ever share the formula evaluation part?
I'd say yes. It's unrealistic.
So, if I were to implement this feature, I would still consider using
ixion despite the downside of duplication you've already cited. The
reality is that we do have to duplicate functionality sometimes for many
reasons even though we all know that it's something to be frowned upon.
At least with ixion you'll get formula parser, interpreter, A1 style
cell address handler and lightweight dependency tracking "for free"
right now. And although I don't think ixion is ready for heavy-lifting
formula calculation uses, it should work well enough for light-weight
uses such as Writer table's formula handling.
Anyway, since we won't be working on this feature anytime soon, we can
shelve this discussion for now, I suppose.
Kohei
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.