User:Kkofler/GSoC 2011 Proposal

From FedoraProject

Jump to: navigation, search

Contents

Title (as submitted)

KDE Plasma Dependency Generation and PackageKit Integration

Abstract (as submitted)

The goal of my proposal is to add automatically-generated RPM dependencies for services related to KDE Plasma (e.g. Plasma script engines, Plasma data engines), and to add PackageKit hooks to use them to Plasma. (Idea by Rex Dieter.)

Plasma widgets can be installed from distro packages or through OCS. They can depend on script or data engines. The need to be addressed is how to drag in those dependencies in an effective way. I will work on 1. dependency extraction and 2. PackageKit integration.

Proposal (as submitted)

Contact Information

Email Address: kevin DOT kofler AT chello DOT at (aliases: Kevin AT tigcc DOT ticalc DOT org, kkofler AT fedoraproject DOT org, kevin DOT kofler AT gmail DOT com)

Telephone: [redacted]

Blog URL: http://kevinkofler.wordpress.com

Freenode IRC Nick: Kevin_Kofler

Why do you want to work with our team?

I have been using Fedora since Fedora Core 1, and Red Hat Linux before that. It has been my only operating system since Fedora Core 4. I started doing volunteer packaging in 2007, around the time of the Core-Extras Merge, mainly for the KDE SIG. I have been enjoying working on and with Fedora ever since.

Getting picked for GSoC would allow me to spend more time on actual coding benefitting Fedora, not just packaging.

Do you have any past involvement with our team or another open source project?

Yes, I am part of several FOSS projects, including Fedora (since 2007, see my user page and the previous paragraph), KDE (where I have been the upstream maintainer of Kompare since 2007) and, in the past, TIGCC, a cross-toolchain for TI calculators with m68k CPUs based on GCC (2001-2006, also developed the KDE-based IDE KTIGCC, sporadic commits from 2007 on). I also contributed patches to several other projects.

Why should we choose you over other applicants?

I have strong experience with KDE code from the above and other projects and I am known for completing even complex tasks successfully and on time. (For example, I implemented ConsoleKit support in KDM in time for Fedora 7 on a very short notice. A modified version of that code has been merged upstream into KDE 4.2, and several distributions had carried earlier versions as patches.) I am especially interested in distribution integration tasks, seeing different components of the proverbial jigsaw puzzle stitch together flawlessly makes me feel happy.

I also have strong experience with Fedora packaging and development, and I am used to working with Fedora in general, and the KDE SIG in particular.

In addition, my research contract at my university (I am a PhD student at the University of Vienna, Austria) expires in May, so I will have plenty of time to work on my GSoC project (full time).

Proposal Description

Overview

The goal of my proposal is to add automatically-generated RPM dependencies for services related to KDE Plasma (e.g. Plasma script engines, Plasma data engines), and to add PackageKit hooks to use them to Plasma.

The proposal is based on a Fedora GSoC idea by Rex Dieter (see also a blog post by him on the subject).

The original ideas by Rex Dieter have buyin from key upstream developers. Getting upstream buyin for my implementation will be an essential part of my project, and there may be some changes to the implementation details based on feedback from upstream Plasma developers.

Problem Space

Plasma widgets (also known as plasmoids) can be installed from 2 sources:

Such Plasmoids can depend on services provided by Plasma, in particular:

The need to be addressed is how to drag in those dependencies in an effective way:

Experience

Implementation

The proposal can be split into 2 parts:

  1. Dependency extraction
  2. PackageKit integration

Dependency extraction can again be split into 2 parts:

  1. Provides: This is the easier part because it is already well covered by metadata. The main goal there is to bring the information provided by the metadata into a form usable in RPM.
  2. Requires: This is the harder part because the metadata provided by upstream does not currently include dependencies. Several strategies to handle this can and will be envisioned:
    • Explicit specification, i.e. require the Plasma metadata to list dependencies explicitly. Pros: reliable, allows installing dependencies immediately. Cons: does not work for existing plasmoids, error-prone.
    • Automatic extraction from the source code, similar to how the RPM dependency extractors for scripting languages work. Pros: allows installing dependencies immediately (build-time auto-extraction) or almost immediately (auto-extraction run on downloaded sources), works for existing plasmoids, no developer efforts. Cons: probably needs extra code for each scripting language, can be fooled by convoluted code (e.g. requesting a data engine in a non-obvious way).
    • Runtime downloading, i.e. firing up KPackageKit/Apper (KPackageKit will be renamed to Apper as of the next upstream release) when a service which is not installed yet is requested. Pros: reliable, works for existing plasmoids, no developer efforts. Cons: dependencies can only be installed on first use, which is not the most user-friendly approach.
    My plan is to try implementing all 3 approaches. It is likely that a combination of multiple approaches will be retained (e.g. use explicitly specified dependencies where available, try automatic extraction otherwise, fall back to runtime downloading if everything else fails).

For PackageKit integration, Plasma needs to be taught to request the installation of a dependency through a PackageKit interface (to be provided by KPackageKit/Apper; for Fedora, org.freedesktop.PackageKit.Modify.InstallPackageNames could probably be abused at first, but for cross-distribution compatibility, which is essential for getting the feature upstreamed, a dedicated API like the existing InstallFontconfigResources, InstallGStreamerResources or InstallPrinterDrivers APIs should be used):

The goal is to have the output of the project included in the KDE Software Compilation 4.8.0 release and in Fedora 16 (backported, if and to the extent reasonably possible) or 17 (as part of 4.8.x).

Timeline

The following is my expected timeline for the project. Dates marked "(fixed)" are fixed by Google or Fedora.

Other Details

If time permits, some additional aspects of PackageKit integration with KDE can be considered. For example, it would be nice to have a debuginfo installation script for DrKonqi based on PackageKit and KPackageKit/Apper instead of the current solution invoking debuginfo-install in a Konsole; this will be implemented as an additional deliverable if time permits.

Have you communicated with a potential mentor? If so, who?

Yes, Rex Dieter has offered to mentor me.

Updates and Comments

This has now been implemented (see my blog) and was approved as a feature for Fedora 17.