Architecture Refactor Suggestion: Bigger reorganization

Inge Wallin inge at lysator.liu.se
Mon Oct 22 20:38:02 BST 2012


On Monday, October 22, 2012 20:49:05 Sven Langkamp wrote:
> On Mon, Oct 22, 2012 at 8:08 PM, Inge Wallin <inge at lysator.liu.se> wrote:
> > On Monday, October 22, 2012 19:49:21 Sven Langkamp wrote:

...

> > > 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.
> > 
> > While I see your point, how would you handle calligra active that has one
> > interface for three applications at once?
> 
> Calligra Active is a special case. It would likely sit on the the top level
> with the other applications and like to their core libraries. I think it's
> better to have one exception than completely changing all the others.

Ok, that makes sense.

> > And how would you handle Words and Author that share core functionality?
> 
> Maybe an extra folder wordprocessing and in that folder Words and Author as
> seperate uis for the wordprocessing core.

This is not so nice.  We also have the same problem with Karbon and Flow: I.e. 
they work on the same document type. I expect more of these when we get more 
applications that are fit to a specific purpose.  How about a simplified kids 
office ui, for instance?

Here is a third problem with your proposed outline: how about the current 
libs/widgets?  That would fit perfectly as ui/desktop/libs/widgets/ in my 
proposal but I don't really see where you would fit it in your app-oriented 
approach.

In general I think that we should make horizontal slices (layers in a layered 
approach) rather than vertical (i.e. app-oriented). The reason for that is 
that it is easier to find common components to put in libraries with such a 
model. I believe an app-oriented approach will be littered with special cases 
and difficult to find libraries. The disadvantage that you mention, i.e. paths 
in commits will be less specific is a minor one. If it really is important you 
could probably split it in two different commits in many cases (not all, of 
course).



More information about the calligra-devel mailing list