role:: questions

Justin B Rye jbr at edlug.org.uk
Sat Dec 30 21:41:41 CET 2006


Benjamin Mesing wrote:
>> * if a package contains nothing but .php files, is that a ::program?
> 
> I think it depends on the intention of the program. If the php files are
> meant to be executed as standalone applications, I would say yes.

I often find it hard to tell from the package descriptions.  I was
hoping it might be possible to work it out from the contents.
 
>> * are font-packages ::data or ::app-data?  Or do they vary?
> 
> I'd vote for data if the user can select those in fonts in his office
> suite. Perhaps tagging with both tags is an option?

If multiple roles are allowed there's a risk that some -common
packages will end up claiming every role:: tag that's going!
 
>> * linux-headers-2.6.X-foo must be ::devel-lib, but how about
>>   linux-image-2.6.X-foo - ::program?  ::TODO?  Or what?
> 
> Perhaps 
>         role::driver	Hardware Drivers and Kernel
> would be needed?

Possible, though I'm not sure about the name.  "Software to be run
outside userspace"... should it include things like mbr and
memtest86+ that "run" even outside Linux kernelspace?

>> * is cl-foo implemented-in::lisp role::shared-lib, like its 
>>   equivalents in ::perl or ::python or the like?  Or are they
>>   role::devel-lib?  (And if it varies from one programming language
>>   to the next, how about libfoo-ruby, -ocaml, -lua, -cil...?)
> 
> I'd say that libraries that represent both the developer interface and
> the shared library (like e.g. perl libs and java libs) should be tagged
> with both, ::devel-lib and ::shared-lib.

Which programming languages would you say have library packages that
are pure runtime dependencies, then?  (Personally I think Perl is
one - see end). 

>> * any package that exists purely for the sake of the dependencies in
>>   its control file is role::dummy.  It may pull in suites, it may
>>   ensure exactly the right member of a set is installed, it may be a
>>   name-change-handler package, or it may be something slightly more
>>   complicated.  One of the commonest inter-release problems is that
>>   contentful packages get replaced by empty packages of the same
>>   name, or vice-versa.
>> 
>> * I've just noticed that my local vocabulary file distinguishes a
>>   role::metapackage, but the online editor doesn't.  Is the idea
>>   that it has been merged into role::dummy?  (If so, good.)
> 
> Perhaps the online editor hides role::meta since nothing is tagged that
> way yet?

No, role::metapackage is all through /var/lib/apt/lists/*_Packages.
I think it's vestigial rather than rudimentary.

> I would say ::dummy packages are those only for transitional purpose.
> The other ::meta are those that intend to stay. 
> I would keep both tags.

The trouble is that it isn't a simple two-way split, it's at least
four-way, with
* one-off rename-handlers (eg ph-f-f-iceweasel)
* permanent escalators (eg linux-image-2.6-k7)
* OR-ing dependency-packages (eg gs)
* AND-ing suite-pullers (eg kde-yes-give-me-everything-please)
Rather than try to classify these different types here I'd rather
see a single role:: tag for all of them.

>> * packages that put executables on $PATH are role::program.  If they
>>   put them elsewhere - in run-parts directories, /usr/lib/cgi-bin,
>>   /usr/share/emacs/site-lisp etc - things aren't as clear.  Such
>>   packages usually include some straightforward utilities too, but
>>   there's room for debate about whether they "count" - if foo-data
>>   contains 10MB of XML, it's role::app-data, even if it does come
>>   with a shell-oneliner /usr/sbin/update-foodata.
> 
> Packages where the main focus is to provide a program to be executed
> should be tagged role::program. [your description]

[Somebody else's description]  What I'm trying to do here is work
out whether emacs modes, cgi-scripts etc provide "a program to be 
executed" or whether they're plugins for the frameworks they hook
into.  The $PATH rule of thumb would be a nice easy one to check.

Alternatively we could keep the off-path executables under
role::program and reserve role::plugin for the things like
gkrellm-foo (so that plugins are optional-extra libraries that
enhance the functionality of a program).

>> * packages tagged role::data are like ::app-data but are provided
>>   directly for the benefit of users rather than for any particular
>>   package.  They're like role::plugin, but static data rather than
>>   libraries.  E-books are the classic example.
> 
> I wouldn't refer to neither role::app-data nor role::plugin for
> similarity, but only for distinction.
> 
>         Packages tagged role::data provide some data that is directly
>         used by the user. This is different form app-data which contains
>         data which is usually tied very closely to a special program.
>         E-books are the classic example for role::data.

The connection to ::plugin is only in the fact that no app is going
to depend on them; you may be using a specialised e-book-viewer
framework, but that doesn't make it ::app-data.  By the way, perhaps
we should say "e-texts", not "e-books", since those are often in
peculiar and/or proprietary formats (see eg libeb7).
 
>> * role::documentation is for packages that actually contain docs
>>   for Debian-relevant subjects - foo-doc packages are
>>   ::documentation, bibles are ::data, but the borderline is unclear.
>>   Manpage-editors and infrastructure packages like dwww aren't
>>   role::documentation or made-of::documentation, they're
>>   works-with::documentation (or would be if that existed).
> 
> To narrow ::documentaion only to Debian-doc seems to tight. Perhaps
> narrowing it to computer related subjects (running and developing a
> computer system) would be better?

I tend to agree that things like HOWTOs deserve to be treated as
::documentation even if they aren't absolutely Debian-specific or
the -doc member of a package family (I'm not sure why I phrased it
as if I was arguing against that).  There are still some cases where
I might be persuaded either way, though; eg the c++-annotations-*
family, which is somewhere between a "c++-doc" and an e-text that
just happens to be a programming coursebook. 

>> * role::devel-lib packages provide code for use at build-time, other
>>   than actual package source code.  Usually they're recognisable by
>>   the fact the package name ends in -dev, but there are exceptions
>>   like manpages-dev (::documentation) and xutils-dev (::program),
>>   plus plenty of ::dummy dev-packages.
> 
>       * role::devel-lib packages provide code for use at build-time,
>         other than actual package source code.  Usually they're
>         recognisable by  the fact the package name ends in -dev. For
>         many non-C programming languages (e.g. Java, Perl) libraries are
>         both, role::shared-lib and role::devel-lib.

Not true at least for Perl (which is the closest to programming I
ever get): I can produce a script that uses module Foo::bar without
ever installing libfoo-bar-perl locally.  It's run-time only, not
(package) build-time.
-- 
JBR
Ankh kak! (Ancient Egyptian blessing)



More information about the Debtags-devel mailing list