Enrico Zini: package-managers
Improving package managers
I noticed
two
posts on improving package
managers none of which mentions Debtags.
Daniel Burrows
mentions various issues:
- the current sections in Synaptic are useless
- there are better keyword search technologies than strstr()
- we could use popularity contest data to sort results
- it would be cool to do amazon-like things using popcon data
Agreed. This used to be a bug about this, which has been closed by Debtags more than one year ago. We now have much more useful category data for about 73% of the archive (including experimental), but what we lack is software using it. Here's a quick trick to try:
- The current sections in Synaptic are useless
- install debtags, and this gives you
an easy to read text file in
/var/lib/debtags/package-tags. - from that file, pick packages that have the tags
role::program,scope::applicationandinterface::x11. - display the results, and use the tags
works-with::*anduse::*to navigate the results.
- The Debtags smart search, and especially how it does not show you all the tags, but it is able to infer the tags you want from your google-like query (hi David!).
- The Debtags tag editor, and especially the search-as-you type feature on all the tags and the tag search (analogous to the Debtags smart search, but it only searches tags.
- The Debtags tag cloud, and if you don't like that one try to make your own: there are countless ways of generating tag clouds from Debtags data.
Indeed, Xapian for example. I use it as part of the backend of the Debtags smart search, and here's our Xapian-powered normal keyword based package search interface which does stemming, indexing and all you want to ask from a serious full text index. In that page you don't see all the nice features of Xapian, but only the ones that I needed for my Debtags evil plans. Have a look at the documentation and give it a try. Here is a way to see Xapian's similarity matching in action:
- there are better keyword search technologies than strstr()
- go to the Go tagging! page
- click on a random untagged package
- the system gives you a rather relevant selection of tags
- look at it again: the package was untagged: how could the web engine possibly figure those tags out?
- I ask Xapian: "what packages are similar to this one?".
- I aggregate the tags of the resulting packages.
- I rank the tags by how many resulting packages have them.
/var/lib/apt/fulltext/, so that
various applications can share it?
- we could use popularity contest data to sort results
- it would be cool to do amazon-like things using popcon data
gluck.debian.org in the directory
/org/popcon.debian.org/popcon-mail/all-popcon-results.
Ideally one can do many interesting things with this concept: besides tag
suggestions, one could identify the packages that are most representative of an
installed system, and also offer negative suggestions like: "people who have
packages like yours usually don't have this package: would you like to remove
it?".
There is more than all this that could be done. Recently, almost by accident,
I had the idea of querying packages by example, like pointing to a
file and find packages that can work with
it. I've asked
Jeroen to have
Mole collect info on all files that could
possibly get installed in /usr/lib/mime/packages/ (as suggested by Bernhard
R. Link),
to see if that prototype can be made more accurate.
Query by similarity would be nice: I don't like this program, but what else do
we have that does the same job? This is best implemented using Debtags data,
since it directly maps to semantic properties. Note that you don't have to
show a single tag to the user to implement this kind of interface. Do we have
a way to point at the X window of an application and get the name of the package
that installed it? Wouldn't it be about time to have it?
Why don't we have a system updater utility that shows the Debian
weather?
Why aren't more people playing with semantic web?
But more generally, the problem with package managers is that we seem to be
irrationally compulsive in wanting to make the one and only big easy and
complete interface for everyone. Other more reasonable
people would tell
you that if
you have two very different kinds of users you may want to consider having two
different user interfaces.
Ubuntu for example installs by default 3 package manager interfaces: Synaptic;
the thing that you access from the application menu to add applications to it;
and the update manager. Does it sound like a waste? To me it makes lots of
sense.
We have lots of interesting, usable metadata; we have algorithms; we have
prototypes; we have ideas for lots of cool, implementable features. The
question is, are we able to write applications that just combines what is
needed from all this treasure to provide the right interface(s) for our
base(s) of users?
Even if my English in 2004 wasn't easy to understand, a read
here might still be useful.
There is so much really cool stuff to be written, just within reach.

Welcome to this 6th issue of the DeFuBu contest, the monthly (even if I'm late) championship of the funniest bug reported to the