Architecture Refactor Suggestion: Bigger reorganization

Sven Langkamp sven.langkamp at gmail.com
Mon Oct 22 18:49:21 BST 2012


On Mon, Oct 22, 2012 at 9:30 AM, Inge Wallin <inge at lysator.liu.se> wrote:

> On Sunday, October 21, 2012 18:11:18 Yue Liu wrote:
> > 2012/10/21 Boudewijn Rempt <boud at valdyas.org>:
> > > On Sunday 21 October 2012 Oct, Yue Liu wrote:
> > >> Hi,
> > >>
> > >> Currently filters are loaded based on application's native mime-type.
> > >> And now we have multiple applications with same native format, such as
> > >> Karbon and Flow, Words and Authors. Applications with same native
> > >> format should have same set of format filters, but format filter codes
> > >> are sorted under application categories.
> > >>
> > >> So I suggest change it from current structure
> > >>
> > >> filters/xxx_app/[im,ex]port/xxx_filter
> > >
> > > It's even messier in some places, where the odf2html filter is embedded
> > > in the epub filter.
> > >
> > >> to
> > >>
> > >> filters/xxx2xxx
> > >
> > > I wouldn't mind that change, but then, for Krita, we moved all the
> > > filters to the Krita folter anyway.
> > >
> > >> And tell distributions package filters as one component, not with
> > >> apps, to avoid conflicts between same-format apps. At least Arch and
> > >> Chakra is already doing it this way.
> > >
> > > Fedora also did/does that already, which meant lots of bug reports
> since
> > > people only installed the app, not the filter component and then
> > > complained that they couldn't even open a simple jpeg in Krita!
> > >
> > > There's a complication here with the Tables filters: some of them link
> > > directly to Tables and actually don't go though an ODS intermediate.
> > > Those probably should be moved to the tables folder itself.
> >
> > We can keep the dependency on App and involve new mime-types for those
> > filters. Just like Friedrich suggested before:
> > http://mail.kde.org/pipermail/calligra-devel/2012-May/005041.html
> >
> > For example, if karbon filter depends on KarbonPart, we can make a
> > mime-type calligra/karbon.document and use it in the filter, so Flow
> > won't load this filter since karon.document is not supported by Flow.
> >
> > And we can place the codes of this kind of app-dependent filters under
> > app/filters/xxx2xxx, and place those general filters under
> > filters/xxx2xxx, when packaging, app-dependent filters are packaged
> > with apps, general filters are packaged as a single package and every
> > app depends on it.
>
> I think we need to make a bigger reorganization. There are two things that
> are
> currently a problem:
>
> 1. The applications themselves have more than one UI, e.g. Calligra
> Words/Sheets/Stage and Calligra Active.
>
> 2. Filters sometimes use application internals as the data model.
>
> So I suggest the following overall architecture:
>
> calligra
>   core
>     libs
>     words
>     sheets
>     stage
>     ...
>   ui (or view)
>     suite (or desktop)
>       libs
>       words
>       sheets
>       ....
>     active
>     ...
>   filters
>     libs
>     xxx2yyy
>     yyy2zzz
>     ...
>   tools
>     ...
>
> In the core/ directory the parts of the applications that are UI
> independent
> should reside. It should be basically loading, storage, saving (i.e. the
> document), painting, an API for data manipulation and all commands.
>
> All views under ui/ will of course link to core/*. The filters should be
> allowed to link to core/* for loading, storage model or saving.
>

I would prefer to have it at

app/
    core/
    uidesktop/
    uiactive/

The reason behind is that it's much better to keep everything in a single
folder. For example if I commit somthing in krita/image and krita/ui, the
commit message shows it as krita/, with the new structure it would show
calligra/. Considering how many problems the distributions have with a
seperate filter folder, I think it's better to keep it together.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20121022/6cad4ae6/attachment.htm>


More information about the calligra-devel mailing list