[prev in list] [next in list] [prev in thread] [next in thread] 

List:       klik-devel
Subject:    [klik-devel] Suggestions for klik development
From:       k1pfeifle () gmx ! net (Kurt Pfeifle)
Date:       2005-10-29 23:59:31
Message-ID: 200510300059.32393.k1pfeifle () gmx ! net
[Download RAW message or body]

First of all, it is great to see the progress Jason has made with his
Gnome and KDE "thumbnailer" (allows to display app-specific icons
with each klik.cmg).

You all have probably taken note of Kernel 2.6.14 sporting FUSE
support, too. ;-)

I'd like to hear your comments about my thoughts about what do do
next for klik's development. I didnt have time to come up with some
systematic structuring of my ideas. So this is a somehow wild
enumeration of various thoughts:

  * klik needs a clearer "profile" about the applications it offers.
    Currently, any newbie klik user visiting the website is
    overwhelmed (and initially greately impressed) by the huge number
    of apps that he can klik. And he'll of course try with what his
    personally mostly wanted program is -- and very frequently this
    may be one that he couldnt get to work from his system package.
    So the auto-generated klik recipes are bound to have problems in
    running successfully. Hence, klik's website should first and
    foremost display 100-200 well-working, and well-tested recipes
    (known to work on all supported distros). These 100-200 apps
    should have active maintainers. These apps should also be tagged
    as "works well with klik". All other 4000+ packages should be
    "hidden" one more click away, behind a link "More packages,
    currently beta -- but you can help testing!" I think users get
    frustrated with klik more often than needs to be -- and by
    seducing users to first try a bundle that is known to work, this
    frustration can be minimized. (I believe probono has already
    started on some of these ideas -- and an initial web interface to
    let recipe maintainers fix packages is already in place).

  * various klik packages do not cleanly umount after shutting them
    down. Processes keep running. Mountpoints stay occupied. Future
    startups or other packages may fail therefor. I think, we could
    possibly fix that with some additional code in .zAppRun: it
    should look (with the help of "lsof") if there are still
    processes running that access files underneath the mountpoint,
    and if so, kill them. Do this in a loop that does at least 3
    attempts, with 2-3 sec "sleep"s in between, before giving up.
    Display a warning dialog to the user if it doesnt succeed.

  * due to the high level of integration into the KDE environment
    (which we all love, right?), klik-ified KDE apps have to struggle
    with some disadvantages: they do not display their own help files
    (even if they may be bundled with the .cmg) since KDE usually
    calls its khelpcenter and help:/ KIO slave subsystem to display
    application manuals. And these systems just do not know about
    klik, and stubbornly offer the system-wide installed manuals (or
    non at all) if a user selects "Help" from the klik app's menu. A
    not-so-clean approach to overcome this could be to set some very
    specific environment variables (KDETMP=/tmp/klik-$USER, KDEVARTMP
    =/tmp/klik-$USER/var, KDEHOME=$HOME/.kdeklik, KDESYCOCA=$HOME
    /.kdeklik/ksycoca, KDEDIRS, KDE_LANG, KDE_FORK_SLAVES...) and
    call kbuildsycoca to create a separate KDE System Cache for the
    KDE klik apps. Disadvantage is extended startup time, and
    potential interference with the users standard icon/menu setup
    managed by the default kded/kbuildsycoca processes. This is under
    further investigation by me.

  * we should introduce a ".klikrc" configuration file. This file
    would be read by .klik, .zAppRun (and maybe even by each wrapper)
    for certain custom settings. (Of course. if not present, klik
    would still work, like now, and use some sane defaults). In
    .klikrc we could specify certain environment variables and other
    stuff to override default behaviours. It could also be a place to
    tell the klik server: "Look, I have libXinerama and libstdc++5
    installed -- no need to include them in my recipe!". -- Thankfully, 
    probono already has accepted my suggestion for a "KLIK_MAINTENANCE" 
    env var; if set to "yes" this will not remove the input/ingredient 
    files from the /tmp/klik/$APPNAME/ staging directory, and hence 
    simplify recipe maintainers jobs (no need to re-fetch files all 
    the time while testing variations of a recipe locally, etc.)

  * the wrapper should be refactored to completely use shell
    functions (and recipe and install, and hence .klik and .zAppRun
    too). This will allow for a more flexible recipe generation (per
    package, per distro, per package category). It also lends itself
    to more modular debugging, testing, modifying things. It could
    enable us to set up a "function test suite" for each newly
    supported distro. It would also make easier the insertion of
    specific functions at certain places in the recipe. To give an
    example: for the klik://koffice-nightly package, I'd like to
    start Konqueror with a specific help file describing the current
    stage of KOffice development. Of course, I can create a
    completely customized wrapper for that package -- however, I'd
    like to see a more generic mechanism to achieve that, because it
    will be useful for many more purposes also. I can come up with a
    first implementation maybe tomorrow evening.


OK, that's it for now. Please give me your thoughts about it.

If you can quickly agree to the refactoring of the wrapper at least
(install, .klik and .zAppRun can be postponed), I'll try to prepare a
first implementation by tomorrow evening.

Cheers,
Kurt



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic