[dot] KDE Technologies: Get Hot New Stuff

Dot Stories stories at kdenews.org
Sat Mar 12 19:39:05 CET 2005


URL: http://dot.kde.org/1110652641/

From: Jonathan Riddell <jr at jriddell.org>
Dept: doing-hot-things-with-stuff
Date: Saturday 12/Mar/2005, @19:37

KDE Technologies: Get Hot New Stuff
===================================

   There has been some recent buzz around KDE's Get Hot New Stuff
[http://www.kstuff.org] framework.  As the first in a series looking
into KDE technologies, KDE Dot News interviewed author Josef Spillner
[http://www.josefspillner.de/] to find out what all this "stuff" was
about... read on for the interview.  You may also be interested in
recent blog entries about KNewStuff: Kate
[http://www.alweb.dk/node/view/54], desktop backgrounds
[http://www.kdedevelopers.org/node/view/918], Quanta
[http://www.kdedevelopers.org/node/view/908], KNewStuffSecure
[http://www.kdedevelopers.org/node/view/913], its user interface design
[http://aseigo.blogspot.com/2005/03/hotnewstuff-user-interface.html] and
the HotStuff server setup [http://www.kuarepoti-dju.net/index.php?p=21].
  Josef Spillner
     Please introduce yourself and your role in KDE.

     Hi, I'm Josef Spillner, a computer sciences student from Dresden in
Germany. About 6 years ago I saw KDE for the first time, and some months
afterwards the first application written by myself appeared on my
desktop. It was a simple KTMainWindow which controlled a voxel-space
flight simulation on top of kdesktop. Needless to say it was horribly
slow. But I've been writing KDE games ever since.

     What is Get Hot New Stuff and KNewStuff?

     The GHNS concept describes a way to let users share their digital
creations. For example, user A is using a spreadsheet application and
modifies a template which comes with it. This template can then be
uploaded to a server, and eventually be downloaded by user B by checking
the contents of the "Get Hot New Stuff" download dialogue. In the
context of companies, documents can be distributed to all employees, and
in the context of the internet, a community sharing framework is built
on top of all this.

     The KNewStuff library is the KDE implementation for checking which
file providers support the requested data type, and which files are
available, including their version, popularity and preview information.
Files can be up- and downloaded, digitally signed, uncompressed on the
fly and more.

     Where are they in use today?

     Inside KDE CVS, we have Quanta+, KOrganizer, several Edutainment
apps and the desktop configuration as our patient and proud users.
Outside of KDE CVS, a bunch of games of the GGZ Gaming Zone project uses
KNewStuff to keep levels and themes current, and the move of the library
to kdelibs should encourage more projects to follow this example.

     Can you give us a brief technical overview of how GHNS works?

     Each application can decide for itself whether it wants upload or
download or both of them, and which file providers should be used for
these tasks. The providers can be configured on the server side so a
move or scheduled outage won't harm any users.

     A download task would check for all the available files for each
provider, and compare their versions with the locally installed ones,
which appears as green (already installed) or yellow (installed but can
be updated) signs to the user.

     After the installation, a post-install script might be run, which
can of course include a DCOP call so the application can be notified.
There are ready-to-run KNewStuff classes available as part of kdelibs
(KNewStuffGeneric and KNewStuffSecure), but for more complex tasks it is
possible to subclass KNewStuff.

     Where did you come up with the idea for GHNS?

     I didn't :-)

     To be fair, I first implemented level sharing in 2001 or so, but
the direct ancestors to the current library were the "Hot New Stuff"
download in KOrganizer and the KDEShare library in kdenonbeta, both of
which were inspired by Torsten Rahn of kde-artist fame, at LinuxTag
2002.

     Most of the integration work was done at the KDE Kastle conference
one year later.

     Where would you like to see GHNS used?

     One candidate would be KOffice. Another one suggested already is
KDevelop with its templates, which can easily get out of date on the
target systems. And games. All KDE games should be extensible and be
flexible enough to handle data added at runtime.

     Has there been any interest from other desktops to implement GHNS?

     Sporadically yes, but I'm not yet aware of any actual
implementation. It would really increase the acceptance and the
usefulness - think about an artist whipping up a nice design in Gimp,
uploading it, and voilà the users getting it onto the desktops.

     There is however a (highly configurable) SDL implementation written
in Python, and a custom in-game download dialogue patch written in C.
Using a decent XML library makes it easy to add other GUI frontends, but
this has yet to be done.

     Have you considered hosting on freedesktop.org?

     Yes I have. The legitimation of freedesktop.org standards always
comes from previous usage, and with KNewStuff we have a well-working
example. So I'd see this as one of the goals of the near future. The
usage in GNOME/Gtk+ will likely depend on such a move.

     Do you have any plans for KDE 4?

     Sure, the README.knewstuff file is full of them, as is the patches/
directory in KStuff CVS. First, there are always small nitpicks, like
the ability to configure this or configure that, without breaking the
ABI. Second, there should be tighter integration with the KDE privacy
framework. Finally, the management of installed data could be eased,
without however converting KNewStuff into a full package installer. But
there are also others hacking on the library, so more features are to be
expected.

     Nice name, how long did you spend thinking that up?

     The name was also adopted by me, but at least I defended it
rigorously :-) Seriously, there were discussions about how it could
affect users negatively, but no one came up with a better idea, and we
managed to hide the name from the users who do not want to see it.

     A nice technical solution for a non-technical problem.



                               REFERENCES

     KNewStuff API documentation
http://developer.kde.org/documentation/library/cvs-api/knewstuff/html/

[http://developer.kde.org/documentation/library/cvs-api/knewstuff/html/]
     KNewStuff and KNewStuffSecure tutorials
http://www.kstuff.org/docs/tutorial/
[http://www.kstuff.org/docs/tutorial/]
http://developer.kde.org/documentation/tutorials/knewstuffsecure/
 [http://developer.kde.org/documentation/tutorials/knewstuffsecure/]
     GHNS backend reference implementation ("Hotstuff")
http://www.kstuff.org/hotstuff/
 [http://www.kstuff.org/hotstuff/]
     "KDE: Conquer your networks", talk given at the 5th Fórum
Internacional Software Livre 2004
http://www.kstuff.org/5fisl/conquer-your-networks.kpr
 [http://www.kstuff.org/5fisl/conquer-your-networks.kpr]
     "The Dynamic Desktop", talk given at the KDE Contributors
Conference 2003 "Kastle"
http://mindx.josefspillner.de/kde/novehrady/slides/
 [http://mindx.josefspillner.de/kde/novehrady/slides/]



More information about the dot-stories mailing list