[Exherbo-dev] Tags vs. categories

Bernd Steinhauser exherbo at bernd-steinhauser.de
Wed Jul 9 19:13:06 BST 2008

Tags are often proposed as a solution or replacement for the categories.
I'm not sure, if that is a good idea.
Basically, what we are talking about when discussion that are three 
parts, which aren't always seen separate, which is not always good.
These three things are:
1. The (file/dir) structure that the package manager sees
2. The (file/dir) structure that the developer/maintainer works on
3. The interface that the user uses

The thing with the categories is, that it tried to solve all three at 
once, and actually, it isn't really doing that well (which is, why there 
are quite often package moves etc.).
I don't know if we can find a good way to split the first two without 
losing, but I do think, that we can split the third one off, at least 

Tags would provide a solution to find stuff.
Searching for tags instead of categories (and package names) has several 
- You can't have enough of them
   (meaning, creating just another tag shouldn't be seen as bad as 
creating another category is seen)
- Adding or removing tags is painless (because it doesn't affect the 
dependency graph)
- You can add as much tags to a package as you want (and you really should)

So what would a user do to install a package, lets say gcc?
First, he would search for the package, which might look like this:
inquisitio --search --tags compiler cpp

That might print a list of cpp compilers (note, that gcc might have both 
the cpp and the c++ tag, so --tags compiler c++ should display it, too).
Each package is printed with the information needed to install it, which 
atm would be sys-devel/gcc, but might be something totally different in 
the future. It could be I/am/definitely/murks/gcc, it doesn't really matter.

Then he would install the package using paludis.
Maybe an installation mode might be possible using tags, if the tags are 
enough to narrow it down, but maybe that might not be a good idea.
The good thing about this is, that 1. and 2. can change, but what the 
user uses (and he should mainly use the tags) stays the same, so a 
change wouldn't cause as much confusion as it would if all three change.

If we also (auto-)create some special tags, like system, world or 
installed, it would also be possible to for example search for all 
installed cpp compilers using --tags installed compilers cpp.
(Currently one would use --kind for that.)

But here we see the problem with tags.
Changing tags should not have any affect on 1. or 2., so tags should are 
not a complete replacement for the categories we currently use.
The should be used for the user interface and only there, not for the 
structure our repos have.


More information about the Exherbo-dev mailing list