Changes needed for "LibreOffice 4"
Lubos Lunak
l.lunak at suse.cz
Fri Jul 20 08:20:57 PDT 2012
On Thursday 19 of July 2012, Michael Meeks wrote:
> * 4.0 - when to call it that ? (Kendy)
> + extension downloads
> + some quite popular PDF import 3m downloads
> + mysql - 330k
> + spellcheck dicts - 300k
> + renaming com::sun::star a problem here,
> + instead perhaps announce rolling flag-day (Caolan's plan)
> + http://wiki.documentfoundation.org/Development/LibreOffice4
> + too much to do in one six-month section
> + top of agenda for next week.
I think one of the first things that need to be done is actually saying
what "LibreOffice 4" means. Looking at the wiki page linked above, apparently
that's not clear at all.
I see 3 reasons for why we should have LibreOffice 4 (not necessarily
exclusive):
a) for marketing reasons - we want to be like Firefox, we want to match AOOi
(who AFAIK might go to 4.0 somewhen soon), or similar completely
non-technical reasons
b) we do significant user-visible changes, such as UI rework, or something
that make the new LO version quite different from the previous ones
c) we break backwards compatibility
As a) is not technical at all, there's not much point in discussing it on a
development list. If that needs to be done, we stamp "4" on it and it's done.
Option b) is actually rather similar to a) in that if it's decided to be
done, we just do it and that's it, it just will be more work. I'm not aware
of anything significant in this area that'd warrant this, so I think we can
ignore this one (correct me if I'm wrong).
Option c) can mean either stopping supporting some file formats, or breaking
API/ABI compatibility. For file formats we want to do this with binfilter
AFAIK, nothing else, and this is a lot like b) as well in that it's just done
and that's it. Breaking API/ABI compatibility for LibreOffice means breaking
(only) extensions, which depending on the changes may need recompiling,
adjusting or complete overhaul.
Now, if you look at
http://wiki.documentfoundation.org/Development/LibreOffice4 , a lot of the
stuff there does not belong to the page at all, as it has absolutely nothing
to do with any of the above:
- "get rid of ASCII graphics noise (//=================== etc)" is actually an
EasyHack that just should be created as such, and can be done at any time
without affecting anything else. There are a number of items in the list like
this.
- "de-UNO-ize the ODF import and export filters." is a purely internal matter
that does not affect anything outside of LO core (or am I wrong here?) and as
such it can be done at any time. Again, nothing to do with LibreOffice 4
(unless we want to use "4.0" as an excuse if things go wrong). There are
several more like that.
So, as long as we decide to do c) when switching to LO4 (which AFAIK we plan
to do, even if c) alone is not the reason), the page first needs to be
cleaned up to contain only items that actually do have something to do with
LibreOffice4.
And after all this is done, it should be easier to actually talk about LO4,
because we'll know what the talk is actually about. As for the technical
details (i.e. c) ), we'll need to decide how to handle the breakages it'll
cause for extensions. Note that as extensions use only URE (right?), affected
code is actually relatively small (AFAIK sal/, salhelper/, cppu/,
cppuhelper/, udkapi/ and offapi/, not sure about the last one). I see roughly
several ways:
1) We say we don't care about backwards compatibility, and keep possibly
breaking it every release. Extensions will need to check they run with
exactly the same version they were built for.
+ easy for us
- more work for extension developers (#ifdef's , they'll either support just
newest LO, or need to provide several versions)
2) We break compatibility once for 4.0 and keep it again afterwards. IOW like
we've done so far.
+ extensions will need to be updated once and then it'll stay the same for
them
- we need to manage to do this between 3.<last> and 4.0 , which may be quite
some work and risks the KDE4.0 fate and the bad options (release too late,
release too buggy, get stuck with stable 3.x and never stable 4.x); I have
some experience with this from the KDE times and, unless we find out we don't
actually have much work in front of us, we probably don't want to go there
3) = 1)+2) - we break it at 4.0, keep going with 1) until we're confident
enough we can manage 2) again
+ easy for us (we just should end up with decently designed APIs for
extensions, or we may need to do this again)
- more work for extension developer, until we enter 2)
4) We do 2), but we smooth it out with a transition period (backwards
compatibility wrappers). I believe that a number of the LO4 changes can be
done in a compatible way with just a little more work (I have quite some
experience there from the KDE times too). For example, the
com::sun::star::* -> uno:: change is probably doable in 3.x by introducing
the new names that would map to old ones. This would allow us to test this
already in LO core without affecting extensions. Another example, if we
change rtl::OUString, we may rename and change it for LO4 and keep the old
one for backwards compatibility. In short, this is 3) where we put more work
into not breaking extensions.
+ extensions will need to be updated once, or possibly even not at all
- may need some extra work (although it's a question of how much)
- possibly some code duplication (although the old code may be later removed,
so this may be just having a time overlap with the new/old code)
- if LO4 needs to be out soon for whatever reason, we may not have the time
I'm not going to say which solution would be the best, because it depends on
what we expect from "LibreOffice4" (how much we are actually going to change,
how much we care about extensions, etc.). So for that, we should first decide
on what "LibreOffice4" will mean.
Summary:
- it needs to be said what we expect from "LibreOffice4"
- the wiki page with technical tasks needs to be cleaned up
- we need to decide how to deal with the fact that LO4 will break backwards
compatibility
--
Lubos Lunak
l.lunak at suse.cz
More information about the LibreOffice
mailing list