Promo/Kdelibs: Difference between revisions

From KDE Community Wiki
(added a bunchastuff)
 
(3 intermediate revisions by the same user not shown)
Line 27: Line 27:


===Solid===
===Solid===
recent incident? FIXME
protects against changes like HAL -> udisks


===KConfig===
===KConfig===
Line 53: Line 53:
parent app could handle that.
parent app could handle that.


===KJobs + ThreadWeaver===
===ThreadWeaver===
ThreadWeaver is reliable and using KJobs is easy and straight forward.
ThreadWeaver is reliable
The API is also really good to work with.
The API is also really good to work with.
QtConcurrent has imo a strange custom api and I heard that it's not a good  
QtConcurrent has imo a strange custom api and I heard that it's not a good  
Line 61: Line 61:
QtConcurrent is meant for massively parallel number crunching on university servers, not really for gui applications, iirc.
QtConcurrent is meant for massively parallel number crunching on university servers, not really for gui applications, iirc.


===consistency===
Threadweaver: Threading APIs to suit practical needs of applications.
 
===KJobs===
using KJobs is easy and straight forward.
KJob provides asynchronous APIs for executing tasks. Includes progress reporting.
 
===KLocale===
More powerful i18n than QObject::tr and friends. Based on gettext.
The most important feature specific to KDE on top of Gettext is Transcript (
http://techbase.kde.org/Localization/Concepts/Transcript).
 
===KAction===
...
 
===KXmlGui===
provides a consistent menu structure
 
===Kross===
Cross-language script interpretation
 
===KDEUI===
K* ui widgets, most notably KUrlRequester
ItemViews, Add-ons to the Qt itemviews API.
If you're using Qt ItemViews for serious business, you want to use the stuff in kdeui/itemviews
 
==pimlibs==
 
===KMime===
Qt based library for handling emails
 
===KIMAP===
Qt based library for asynchronous IMAP communication
Depends: kmime, kjob
 
==kdesupport==
i'm not sure what parts of kdesupport are written by kde and which aren't, but I'll include those mentioned in the thread anyways:
 
===Automoc===
Automoc can be used independent from KDE:
http://techbase.kde.org/Automoc4
 
==consistency==


I get consistent ui design and functionality, making it easy to use  
I get consistent ui design and functionality, making it easy to use  
Line 85: Line 126:
* GUI widgets that integrate all this good stuff so you don't have to
* GUI widgets that integrate all this good stuff so you don't have to
* A holidays library that no other platform has an equivalent for
* A holidays library that no other platform has an equivalent for
===KAction===
...
===KXmlGui===
provides a consistent menu structure
==kdesupport==
i'm not sure what parts of kdesupport are written by kde and which aren't, but I'll include those mentioned in the thread anyways:
===Automoc===
Automoc can be used independent from KDE:
http://techbase.kde.org/Automoc4


==other stuff==
==other stuff==
KShell helpers - what are these? FIXME
KShell helpers - what are these? FIXME
K* ui widgets, most notably KUrlRequester
 
KParts esp. KTextEditor
KParts esp. KTextEditor
KStandardActions?
KStandardActions?
localisation
localisation
Kross
phonon
nepomuk
akonadi
strigi?
http://kde.org/developerplatform/
QCA
KStandardDirs
the KDE mime system,
plasma
KUrl
KIcon?
KDED, KLauncher, kdeinit, ksycoca
KDateTime
kDebug
 
"I'm not a KDE user, but I'm a Qt application
developper, and I found very useful things in kdelibs. KIMAP is now
a central part of our app, we are using KJobs everywhere we can, and
we are contibuting back with KSmtp, a job-based SMTP library (more on
that in a future announcement)."

Latest revision as of 20:40, 2 November 2010

So, what's so great about the KDE Platform? Why should Qt developers use our libraries?

What's here so far is a dump of the "why kdelibs?" thread. it needs cleaning up and filling in.

notes

Back on the "why kdelibs?" topic, what about a KDE-Demo, just like Qt Demo, that shows the unique features the KDE platform (kdelibs, kdepimlibs, kdegames, etc) has to offer? That'd be a quick way for people to see the widgets, libraries, etc that make KDE rock. It'd be certainly easier than delving into api.kde.org and see if Joe Developer finds some interesting class/library/whatever. The examples in kdeexamples and Techbase could be a starting point.

KDElibs

In general, we provide lots of convenience classes and methods for things that are either awkward to do in Qt, or you have to do yourself. We also provide workspace integration and consistency.

KIO

network and file-archive transparency.

KIO provides easy transparent, abstract, async, reliable & fast support for quite some protocols. Qt has to offer nothing like this. (the QNetwork module is nice, but not comparable at all - sorry trolls)

Solid

protects against changes like HAL -> udisks

KConfig

QSettings' implementation of groups is a joke:

settings.beginGroup("foobar"); // everything written now will be in that group settings.setValue("myValue", ...); settings.endGroup();

To read it: settings.value("foobar/myValue");

I much prefer the KConfig way of doing this: grp = settings->group("foobar"); grp->writeEntry("bar", ...);

To read it: grp = settings->group("foobar"); grp->readentry("bar", ...);

Much more straight forward and easier for big applications (like KDevelop) with plugins. The plugin would just take some KConfigGroup ptr and save it's settings there, no need to come up with some unique name or anything, the parent app could handle that.

ThreadWeaver

ThreadWeaver is reliable The API is also really good to work with. QtConcurrent has imo a strange custom api and I heard that it's not a good implementation from people that know a lot about concurrency.

QtConcurrent is meant for massively parallel number crunching on university servers, not really for gui applications, iirc.

Threadweaver: Threading APIs to suit practical needs of applications.

KJobs

using KJobs is easy and straight forward. KJob provides asynchronous APIs for executing tasks. Includes progress reporting.

KLocale

More powerful i18n than QObject::tr and friends. Based on gettext. The most important feature specific to KDE on top of Gettext is Transcript ( http://techbase.kde.org/Localization/Concepts/Transcript).

KAction

...

KXmlGui

provides a consistent menu structure

Kross

Cross-language script interpretation

KDEUI

K* ui widgets, most notably KUrlRequester ItemViews, Add-ons to the Qt itemviews API. If you're using Qt ItemViews for serious business, you want to use the stuff in kdeui/itemviews

pimlibs

KMime

Qt based library for handling emails

KIMAP

Qt based library for asynchronous IMAP communication Depends: kmime, kjob

kdesupport

i'm not sure what parts of kdesupport are written by kde and which aren't, but I'll include those mentioned in the thread anyways:

Automoc

Automoc can be used independent from KDE: http://techbase.kde.org/Automoc4

consistency

I get consistent ui design and functionality, making it easy to use applications. One of my favurites is KAction and the standard actions and shortcuts and dialogs. Many KDE apps uses KXMLGUI, which provides a consistent menu structure. I get kde widgets for a lot of things, so i know how to use them. I love all that, and whenever i find some non-KDE application that I need, I find myself wishing that it was KDE, or that there would be a KDE alternative...

Of course there is also the high level of integration in KDE, and do not forget world class file dialogs. I miss those in non-KDE apps too!

  • Proper localization of Calendar Systems, i.e. your app will play nicer in

foreign countries

  • Far more date formatting options than Qt has
  • Proper timezone handling
  • World's best File Dialog.
  • Extra features added to the print dialog on *nix that Qt seems to have no

interest in supporting

  • Unit Conversion library, e.g. km <-> miles
  • All that Semantic stuff
  • GUI widgets that integrate all this good stuff so you don't have to
  • A holidays library that no other platform has an equivalent for

other stuff

KShell helpers - what are these? FIXME

KParts esp. KTextEditor KStandardActions? localisation phonon nepomuk akonadi strigi? http://kde.org/developerplatform/ QCA KStandardDirs the KDE mime system, plasma KUrl KIcon? KDED, KLauncher, kdeinit, ksycoca KDateTime kDebug

"I'm not a KDE user, but I'm a Qt application developper, and I found very useful things in kdelibs. KIMAP is now a central part of our app, we are using KJobs everywhere we can, and we are contibuting back with KSmtp, a job-based SMTP library (more on that in a future announcement)."