Homerun sources and Plasma runners

Aaron J. Seigo aseigo at kde.org
Sat Nov 17 13:27:02 UTC 2012


On Friday, November 16, 2012 13:36:59 Luiz Romário Santana Rios wrote:
> Beyond that, I think it would be nice if runners were turned into a
> library (something like librunner) so that other applications can
> benefit from it.

rekonq (example you used) can't use libplasma? if not, please describe why 
not.

(spoiler: for apps like rekonq, suggesting there is something to be gained by 
splitting out the runner infrastructure into its own library is rubbish.)

the only place there would be benefit[1] is if there is a lowering of 
dependencies. so i ran this in kdelibs/plasma/:

	grep -h include private/*runner* *runner* *query* | sort | uniq

here are the results, grouped by source:

standard system stuff:
	#include <cmath>

from libplasma:
	#include "abstractrunner.h"
	#include "abstractrunner.moc"
	#include "config-plasma.h"
	#include "dataengineconsumer_p.h"
	#include <plasma/package.h>
	#include <plasma/plasma_export.h>
	#include <plasma/plasma.h>
	#include <plasma/querymatch.h>
	#include "plasma/querymatch.h"
	#include <plasma/runnercontext.h>
	#include <plasma/runnersyntax.h>
	#include <plasma/version.h>
	#include "pluginloader.h"
	#include "private/abstractrunner_p.h"
	#include "private/runnerjobs_p.h"
	#include "runnercontext.h"
	#include "runnercontext.moc"
	// #include "runnerjobs.moc"
	#include "runnerjobs_p.h"
	#include "runnermanager.h"
	#include "runnermanager.moc"
	#include "runnersyntax.h"
	#include "scripting/runnerscript.h"

from kdecore:
	#include <kconfiggroup.h>
	#include <kdebug.h>
	#include <klocalizedstring.h>
	#include <kmimetype.h>
	#include <kplugininfo.h>
	#include <kprotocolinfo.h>
	#include <kservice.h>
	#include <kservicetypetrader.h>
	#include <kshell.h>
	#include <kstandarddirs.h>
	#include <kurl.h>

from kdeui:
	#include <kcompletion.h>
	#include <kicon.h>

from QtCore:
	#include <QCoreApplication>
	#include <QDir>
	#include <QFile>
	#include <QFileInfo>
	#include <QHash>

from QtGUI:
	#include <QAction>
	#include <QIcon>
	#include <QMenu>
	#include <QMimeData>
	#include <QMutex>
	#include <QMutexLocker>
	#include <QReadWriteLock>
	#include <QSet>
	#include <QSharedData>
	#include <QStringList>
	#include <QtCore/QList>
	#include <QtCore/QMutex>
	#include <QtCore/QObject>
	#include <QtCore/QSharedDataPointer>
	#include <QtCore/QStringList>
	#include <QTimer>
	#include "querymatch.h"
	#include <QVariant>
	#include <QWeakPointer>

from Solid:
	#include <solid/device.h>
	#include <solid/deviceinterface.h>

from ThreadWeaver:
	#include <Weaver/DebuggingAids.h>
	#include <Weaver/Job.h>
	#include <Weaver/QueuePolicy.h>
	#include <Weaver/State.h>
	#include <Weaver/Thread.h>
	#include <Weaver/ThreadWeaver.h>

to move it to a low-dependency library it seems the following should happen:

* port from ThreadWeaver to plain Qt. perhaps QRunnable + QThreadPool would be 
enough

* remove libsolid usage and let QThreadPool figure out the number of threads to 
use

* determine if RunnerScriptEngine is only referenced by runner-related classes 
in libplasma; if not, make it so

* work out a structure for DataEngine and PluginLoader, since the runner 
classes require both. one possibility would be to put DataEngine, Service and 
the runner classes into one library that focuses on information/service 
retrieval and have whatever library PluginLoader ends up in link against that

so if someone wants a separate library for runner, please branch frameworks in 
kdelibs and do the above work. thanks ...

[1] other than to work around the inability for application developers to 
accurately determine cost of using a given library, such as libplasma. i 
really dislike designing with such placebo effects as requirements.

-- 
Aaron J. Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20121117/ad7b0e06/attachment.sig>


More information about the Plasma-devel mailing list