splitting qt4 into pieces

Sune Vuorela debian at pusling.com
Tue Feb 12 00:02:27 UTC 2008


Hi!

This is going to be a long email, so let us start with a executive summary:
split off libqtdbus and libqtscript from libqt4-core and rename libqt4-core
keep libqt4-gui
rework libqt4-sql entirely to make it plugin based
split -dev package.


And the real report:

several times, different requests for splitting qt4 into pieces have been 
made.
I find many of them kind of reasonable - and especially when qt4 becomes more 
and more popular.


A couple of example use cases:

John have found it quite easy to write a small network service using qt. He 
would like to deploy it on some small device, so he would like to only have 
around what he actually needs: libQtCore && libQtNetwork.  With current 
packaging, he also needs to install dbus, a xml parser and other similar 
thintgs

Brian wants to have a set of cross platform command line utilities, so he 
writes a set of utils using qt. He only uses QtCore, as he needs no network, 
no Xml, no anything.

Joanne does small graphical apps, like a image viewer and text viewer. In 
order to have her programs installed, only parts of qt that is needed is 
QtCore and QtGui. no Xml, no openGL, no SVG, ...


But enough bullshit. let us look at some numbers:

libQtCore is used by all packages - and have a set of external dependencies.
libQtCore is 1.5M big

libQtXml has the same set of external dependencies as libQtCore and is 350K 
big. No need to split this out unless we care for 350K

libQtNetwork has the same set of external dependencies as libQtCore and is 575 
K big. No need to split this out unless we care for 575K (we might do that)

libQtScript has same set of external dependences and is 1 mb big. I think we 
should care for 1mb. I don't yet know what uses this.

libQtDBus has same set of external dependencies as QtCore + QtXml + libdbus. 
Libdbus + libQtDBus is around 1 mb of extra space and isn't used for quite 
many things.

libQtTest has same set external dependencies as QtCore. is 56k big. no need to 
talk about that.

This is libqt4-core package.


libQtGui is used by all gui libraries.

libQtSvg has the same external dependencies as QtGui. Internally it also pulls 
in QtXml.  libQtSvg is 275K big.

libQtOpenGL pulls quite some more dependencies in compared to QtGui (libGL, 
libGLU, libXdamage, libXxf86vm,libdrm) - but I guess most people still have 
those installed. QtOpenGL is 500k big

Is libQtDesigner, libQtDesignerComponents, libQtAssistantClient anything but 
private libraries of designer and assistant ? and shouldn't they be around 
them?


libQt3Support fits nicely in its own package


libQtSql:
pulls in all sorts of evilness. and I still don't think we support everything.
we build in the support for postgresql, mysql, sqlite and sqlite 2. All this 
can be as modular packages so people don't have to pull in postgresql to get 
mysqlsupport and the other way around.
This way, we could also support firebird and odbc


and for completeness:
QtWebkit is 10 mb big - and pulls in Gui, Network, XMl - and libsqlite.


And for the -dev stuff.
Several people would like to have the possibility to not pull in everything in 
order to do development. especially the huge QtSql module has had some 
complaints.
Some people would also like qmake in a special package.
A split like the following:
libqt4-dev: empty meta package depending on the following
libqt4-gui-dev: gui dev stuff
libqt4-core-dev: core dev stuff (could also contain the dev stuff for the 
libraries gets splitted off)
libqt4-sql-dev: sql stuff.

I guess we should put qmake either in its own package - or among the core dev 
stuff. 
I would like to not have qmake in a seperate package, as it kind of encourages 
people to use it for anything - while it is only a nice tool for qt 
development.


Things to make sure to consider:
a package called libqt4-core cannot contain any less functionality than 
libqt4-core does today. that means we have to rename the package if we split 
stuff off. similar for all other packages.

there might be a abi breakage on mips in qt4.4, so we might need a package 
name change here anyway.


Recomendations:

Take libqt4-core, split off libqtscript4 and libqtdbus4 to its own packages 
and rename libqt4-core to libqtcore4

keep libqt4-gui as is

rework libqt4-sql to make it plugin based, which it supports and enable the 
rest of the avilable database connectors

split libqt4-dev, but keep libqt4-dev as a meta package.

(move some translations and other data files to correct packagages - 
translations for assistant is in -core for example)


/Sune
-- 
I cannot uninstall on a LCD connector on the mouse from Internet Explorer NT, 
how does it work?

You should turn on a attachment for logging in a gadget.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://lists.alioth.debian.org/pipermail/pkg-kde-talk/attachments/20080212/a8f76269/attachment.pgp 


More information about the pkg-kde-talk mailing list