splitting qt4 into pieces

Ana Guerrero ana at debian.org
Tue Feb 12 09:48:00 UTC 2008


On Tue, Feb 12, 2008 at 01:02:27AM +0100, Sune Vuorela wrote:
> 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)
>

I have not looked in deep to this, but sounds reasonable. If fabo and pyro who 
are the other people working more or less acively in Qt4 agree, go ahead. 

Ana



More information about the pkg-kde-talk mailing list