[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Rewriting policy soonish if poss.



On Sat, Jul 27, 2002 at 10:55:14PM -0600, Julian Gilbey wrote:
> On Sun, Jul 28, 2002 at 01:31:26AM +1000, Anthony Towns wrote:
> > On Thu, Jul 25, 2002 at 08:40:13AM -0600, Julian Gilbey wrote:
> > > I'd like to rewrite policy soonish.  
> > Into what, exactly?
> > [...] split policy into three separate docs:
> > 	-- Release Critical Issues
> > 	-- Debian Best Packaging Practices
> > 	-- The Debian Specifications Document

Other possible names for the latter document are "The Debian Standards",
or "Debian Standard Interfaces" or something similar.

> I think this makes a lot of conceptual sense.  However, I don't think
> that having three separate documents necessarily makes sense from a
> reader's or editor's point of view.

I'm inclined to disagree: I don't see there being any signficant overlap
in the latter two documents at all, and I also suspect that stuff that
goes in either one will be fundamentally different. To take "version
numbers" as an example, I'd think the DSD would cover the format allowed
by the tools (epochs, upstream, debian, valid characters, how they're
compared, probably future directions ("~")), whereas the BPP would tell
you how to use that: try to avoid epochs, for alpha/pre versioning
use something like "0.99-1.0pre1", how to base versions on dates, if
you have to change the upstream tarball but upstream haven't released
a new version tack something like "+0" onto the end of the version,
how to version an unofficial release (from CVS eg), and so on.

> Secondly, I absolutely see the value in clearly distinguishing between
> best packaging practices and the Debian policy/specs.

I'm not remotely using the word "specs" as a synonym for policy. They're
not the same, and IMO, not even remotely similar. 

There are at least three different axes for "policy" issues:

	* violations result in unacceptable packages or violations are bad,
	  but won't get you hung, drawn and quartered

	* automatically determinable or not automatically-determinable
	  (alternatively "rule can always be applied or rule needs to be
	  applied with some judgement")

	* an interface used by many packages with Debian, or just a way of
	  doing things that ends up with a good result

IMO, "policy" encompasses *all* of those things. Trying to limit it to
just the interfaces, or just the things that're always true or can be
automatically tested, or just the things that're unacceptably horrible
is unreasonably limiting, IMO.

I'd consider it quite reasonable to have the BPP and DSD docs in
debian-policy.deb, or to have two different .debs both maintained by
this list, or similar.

> However, to
> have to read two documents to find out how to package a library, which
> are likely to end up overlapping and probably contradicting each
> other, seems unhelpful, to say the least.

debian-policy as it's stands overlaps with itself and contradicts
itself.  Avoiding that isn't achieved by having one document instead
of two, it's by maintaining it well. Worse, there are in general many
documents you need to read since a number of subsystem policies have been
(unnecessarily, IMO) split from -policy: menu, debconf, perl, mime (within
the same .deb at least), and python, library packaging, and so forth.

In any event, the BPP and DSD documents are fundamentally different. The
former can have an attitude of "these things work well in a number of
cases, and might work well in yours too", and be a lot more dynamic
and "HOWTO" oriented -- and IMO should have a section dedicated
to the mini-policies of any groups that need them -- perl, python,
games, libs, languages, whatever -- and it could easily refer you to
the DSD for the details if necessary; while the DSD has to be fairly
conservative (you shouldn't include new features, like say ~ in versions
or DEB_BUILD_OPTIONS until everyone supports them -- dpkg, apt, the
archive, and the buildds resepectively).

As another example, the ".deb" section of the DSD document would probably
describe "Essential: yes" as indication to package tools not to allow the
user to remove the package easily, while the BPP document would cover
the fact that essential and required packages are expected to continue
working when unpacked-but-not-configured, and thus should generally use
pre-depends: instead of depends: and should not rely on their postinst
being run in order to work correctly.

It's not clear to me where you'd want to draw the line between putting
some specs in, say, dpkg's documentation versus putting it in a broader
document like the DSD. Things like the arguments to dpkg-buildpackage
should probably stay in dpkg's manpages, even though other tools use them,
but it's probably useful to keep things like the version number format,
and maybe the source package format, or the .deb package format in a
DSD like document.

> To have clearly demarcated
> sections within the document ("Specs/Policy" and "Best practice
> guidelines" in the section on shared libs, for example) would seem to
> get the best of both worlds.

I really don't think so. I've tried rewriting a bit of policy into
BPP style, and it started becoming quite uncomfortable when I got to
the version-number section. The issues just aren't suited to the same
document.

Cheers,
aj

-- 
Anthony Towns <aj@humbug.org.au> <http://azure.humbug.org.au/~aj/>
I don't speak for anyone save myself. GPG signed mail preferred.

 ``If you don't do it now, you'll be one year older when you do.''

Attachment: pgp0FrybyE9Xf.pgp
Description: PGP signature


Reply to: