[packagekit] Fine grained groups

Tim Lauridsen tim.lauridsen at googlemail.com
Thu May 8 00:52:53 PDT 2008


Richard Hughes wrote:
> For 0.2.2, in line with the roadmap[1] we need extended groups support.
> The current PK architecture allows for fairly course groups, for
> instance, System, GNOME and Games. This is less than ideal when you want
> to install the "compiz support" group or the "French language" native
> backend groups.
> 
> It makes little sense to show the user 200 groups to choose from - but
> we do need to be able to interact with these collections of software,
> for instance, installing the "French language" collection.
> 
> I propose two new methods:
> 
> SearchCollections(package_id)
> Collection(s=collection_enum, b=installed)
> 
> InstallCollection(collection_enum)
> <does the install of all the sub-packages>
> 
> The first would allow to discover what collections a package belongs to,
> and the second would allow the user to install the whole group. This
> would allow somebody to right click on a package in gpk-application and
> a menu would appear. This could be clicked on to install the appropriate
> collection.
> 
> Note: the collections are enumerated types and so can be translated like
> we do the group enums. In this way we can also give them icons.
> 

We have to turn it around and look at how the user will what it to be.

USERCASES:
===========

The user what to install 'Danish Language" support.
* The user select the group view.
* The user select the Language category (A Category is used to order the 
actual groups)
* The user select the 'Danish support' group and can now see the 
packages included in the group and the state of packages (installed, 
available etc)
* The user select the 'Danish support' and packages is added to the 
current transaction.
* The user might what to select some other packages too.
* The user selects to process the transaction and the selected packages 
get installed.

The user whats to install some games.
* the user select the group view
* the user select the 'Application' category
* the user select the 'Games and Entertainment' group to see what 
packages it contains.
* the user look trough the games and select the ones the wants.
* The user selects to process the transaction and the selected packages 
get installed.

The user whats to remove the KDE desktop. (just an example, no need to 
FLAME :) )
* the user select the group view
* the user select the 'Desktop Environtment' category
* the user select the 'KDE' group to see what packages it contains.
* the user unselects the group and the packages gets added to the 
transaction for removal.
* The user selects to process the transaction and the packages in the 
group get removed.


GROUP METADATA (YUM / FEDORA,RHEL,CENTOS ):
============================================
Some facts about the group metadata we have in Fedora (Yum).

A list of categories.
Each category has a list of groups included.

A list of groups.
Each group has a list of package names and package types included.

a package can have one of 4 states.

mandatory: the package is always need by the group.
default: the package is need by the group.
optional: the package is optional by the group.
conditional: the package is conditioned be another package is installed 
  by the group. Ex. hunspell-da is only added to group if hunspell is 
installed.

if a group is installed the mandatory,default and the conditional 
packages there fulfills the condition is installed.

if a group is removed the mandatory,default and the conditional packages 
there fulfills the condition is removed.

Each group has a name and description translated i local languages

Tim





More information about the PackageKit mailing list