On Tue, Feb 12, 2008 at 01:02:27AM +0100, Sune Vuorela wrote:
> 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
> 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
> 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
> 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
> 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
> 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
> libQt3Support fits nicely in its own package
> 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
> order to do development. especially the huge QtSql module has had some
> 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
> I would like to not have qmake in a seperate package, as it kind of
> people to use it for anything - while it is only a nice tool for qt
> 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.
> 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.