[Kde-games-devel] Using GHNS (Get Hot New Stuff)

Josef Spillner spillner at kde.org
Tue Mar 13 12:18:30 UTC 2012


Hello Ian,

:: Ian Wadham Dienstag 13 März 2012
> There is a feature of KDE called "Get Hot New Stuff" (GHNS) and I have
> sometimes thought about using it in KGoldrunner for such goodies as:
> 
>    - Solutions to levels
>    - High-score records
>    - Releasing new levels in between releases of KDE (but untranslated)
>    - Posting levels to be contributed
>    - Graphics themes
>    - Sound themes
> 
> Unfortunately, every time I look at it (over several years) I seem to find
> that it has recently been re-written and the documentation is incomplete.

Let me give a quick summary. Resulting from the original GHNS static download 
feature in KDE about ten years ago, ghns.freedesktop.org was created to extend 
this work beyond KDE, which never really worked well. Later, dynamic protocol 
extensions (e.g. for search) emerged - first with DXS (Desktop eXchange 
Service, a SOAP protocol), later with Frank's OCS (Open Collaboration 
Services, an XML/JSON REST protocol), and apparently now with Aaron's PASS 
(Plasma Active Store Services, a JSON REST protocol about which not much is 
known).

There have been 3 client libraries for KDE thus far (and a few more for other 
toolkits such as SDL and GNOME):
- KNewStuff, the original one from KDE2 times for rather dumb downloads
- KNewStuff2, a rewrite for KDE4 with MVC separation, caching, upload etc. 
which supports GHNS and DXS providers alike.
- KNewStuff3, a rewrite which uses the Attica library so that it can access 
GHNS providers and OCS providers alike.

On the server side, there has been Hotstuff for hosting GHNS/DXS repositories 
(which may have SVN/git repositories beneath them), Frank's sites (kde-*.org) 
for hosting GHNS/OCS repositories, and Aaron's Synchrotron for providing GHNS 
feeds from git repositories.

Given that all of this development happens scattered throughout the project 
without any coordination, with several NIH syndromes striking here and there, 
expect more complete rewrites and incomplete documentation for the next years, 
too :(

> I just don't understand it enough and AFAIK other KDE Games people
> have only used it for graphics and wallpapers.

GHNS was used extensively for game items such as levels and themes before, 
e.g. in the ggz-kde-games package, with KNewStuff2. Probably not in many other 
KDE games (including those in the kdegames package), though.

> In particular, I do not see any advice about where to store the "stuff" and
> how secure, backed up and *constant* that place might be (web sites
> appear, disappear or change URLs all the time).

If you want to store the "stuff", I would recommend to store your "stuff" in a 
repository and use newstuff.kde.org (which runs the Hotstuff services) to 
produce appropriate feeds for the games. If you want to let your gamers create 
"stuff" through editors etc., it'll be a bit more complicated (see below).

> I think the GHNS URLs of an app have to be hard-coded somehow, so
> what if they change between releases of KDE?

They're specified in *.knsrc files (INI files) which can be updated with point 
releases. In the past, there was hardly a need to do so.

> Also how would one segregate stuff uploaded by third parties, e.g. claimed
> high scores versus validated high scores, newly submitted levels versus
> tested levels or levels intended for release in KDE (and translation into
> KDE supported languages)?

Hotstuff has the concept of moderated queues, but the web interface to let 
e.g. a game developer perform the moderation has always been sort of 
rudimentary. I've hesitated to continue its development some years ago due to 
the scattering mentioned above. It could be resumed if other options fail.

Josef


More information about the kde-games-devel mailing list