[comp.sources.d] Help define Environment: usage in c.s.m

kent@sparky.IMD.Sterling.COM (Kent Landfield) (05/26/91)

Its time to get serious about this.   I *need* your input.  Please jump in 
with suggestions and ideas. 

The Environment: auxilary header will be used in the comp.sources.misc 
newsgroup in the very near future. 

Why is this being added ? 

    I have been shown that in a newsgroup not restricted to one type of
    operating system, one type of machine or one type of architecture that 
    there is a need for this type of information in the header.  The intent
    is to provide you more external information about the package contained 
    within the posting.  This allows you to determine if the package has 
    special requirements that may prevent you from using it.  It is extremely 
    irritating to take the time to unpack something just to find out that you 
    can't use it.
    
The Environment: auxiliary header is currently in use in comp.sources.games.  
What follows is a description of the Environment: header as Bill has been 
using it. It seems quite reasonable so... :-)

    The Environment: auxiliary header line is used to allow the moderators
    a way of giving the readership a quick indication of what resources are 
    required to use a particular issue.

    Environment: syntax
        Environment: Keyword [, keyword ..]

    Environment: example
        Environment: SunView, XView, X11R4, termcap

    The keywords usage is case insensitive.  I am extending Bill's usage 
    by adding a NOT indicator (e.g. !AIX) so that I can specify that a 
    package runs on everything "but" the specified keyword.

Now here is the part where I need your help...

 1. When should the Environment: header be used ? Always or just when the 
    moderator is alerted to a limiting condition ?  Something in between ?  

 2. The environment information could get quite lengthy for some packages,
    perl comes to mind... :-)  Would it be acceptable to have more than
    one line of Environment: headers if needed ?

 3. A set of Keywords needs to be generated. The following list of keywords
    is used only as a starting pont for discussion.  *Much* help is needed 
    here.  This was a quick and dirty list so suggest additions and changes...

        Keyword                   Meaning
        -------              ----------------------------
Operating Systems:
        UNIX         -      Will operate on any unix system... (right...)
	SYSV         -      Will operate on any System 5.0 or greater system.
	SYSV2        -      Will operate on any System 5.2
	SYSV4        -      Will operate on any System 5.4
	BSD          -      Will operate on any version of BSD
	BSD42        -      Will operate on BSD 4.2
	BSD43        -      Will operate on BSD 4.3
	SUNOS        -      Will operate on Sun OS
	SUNOS4.1     -      Will operate on Sun OS 4.1
	ULTRIX       -      Will operate on Ultrix 
	AIX          -      Will operate on AIX 
	VMS          -      Will operate on VMS
	MSDOS        -      Will operate on MSDOS 
	XENIX        -      Will operate on Xenix
	MINIX        -      Will operate on Minix
	MACOS        -      Will operate on Macintosh OS
	AMIGA        -      Will operate on AMIGA OS
	COHERENT     -      Will operate on Mark Williams Coherent OS
	OS/2         -      Will operate on half an OS

Window Environments:
        Curses       -      Uses the curses library
        Termcap      -      Uses the termcap library
	SunView      -      Uses Sunview windowing Facilities
	X11          -      Uses X Windows 
	X11R3        -      Uses X Windows Release 11.3
	X11R4        -      Uses X Windows Release 11.4
	XView        -      Uses XView toolkit
	Motif        -      Uses Motif toolkit
	XVT          -      Uses XVT toolkit
        (There is a few more that go here... )

System/Language Support:  (C is the default so not specified)
        Dirent       -      Uses the dirent directory access routines
        Sockets      -      Uses the network socket library
	RPC          -      Remote Procedure Call facilities
	ANSI-C       -      Requires ANSI C compiler
	Turbo-C      -      Requires Turbo C
	Pascal       -      Written in Pascal
	Fortran      -      Written in Fortran
	Perl         -      Written in Perl
	Lisp         -      Written in Lisp
        yacc         -      Requires yacc/bison
        lex          -      Uses lex
	MSGQ         -      Uses System V Message Queues
	SHM          -      Uses System V Shared Memory

Shell Support:     (sh is the default so not specified)
	CSH          -      C Shell required
	KSH          -      Korn Shell required
	BASH         -      Bash Shell required
	ZSH          -      Z Shell required
	RC           -      Plan 9 Shell required

Hardware Support:
	PC           -      IBM PC or compatible
	VGA          -      VGA video support needed
	EGA          -      EGA video support needed
	            
Architecture: sparc, risc, vax .. ??

There are many things missing from this list...  I am hoping we can 
come up with good definition of how the Environment: header is to be 
used and a set of keywords to use with it.  

Your turn...  

			-Kent+
-- 
Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD           UUCP:     uunet!sparky!kent
Phone:    (402) 291-8300         FAX:      (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.

cmf851@anu.oz.au (Albert Langer) (05/26/91)

Kent,

Thanks for organizing comp.sources.misc and for taking the trouble
to improve it as with the Environment header. In response to your
questions.

1. I think it should be used ALWAYS (or almost :-)

2. As many lines as it takes. (People who don't agree with 1 or 2
can set their newsreaders to show only header lines they want to see).

3. One classification I noticed missing was POSIX (unless that was
meant to be the "works on all Unix" :-)

Also there might be scope for including named software packages
that the item requires even when they are not operating systems,
shells or libraries. (e.g. various graphics packages use pbm).

Perhaps a separate header line for Requires: to include any
package name and version number without controls, while
Environment: is restricted to a controlled thesaurus of keywords
that are listed monthly.

Finally I would suggest you get in touch the Library of Congress
or some local research library and ask for advice about the
methods used and proposed for cataloging computer software
(or "computer data files"). There is also a mailing list
PACS-L%UHUPVM1.bitnet@RICEVM1.RICE.EDU for a public access
computer systems forum that would have relevant contacts,
which published a paper on cataloging of online information
resources and included the following address:

Sally H McCallum, Chief
Network Development and MARC Standards Office, LM 639
Library of Congress
Washington DC 2050

smcc@seq1.loc.gov

--
Opinions disclaimed (Authoritative answer from opinion server)
Header reply address wrong. Use cmf851@csc2.anu.edu.au

wht@n4hgf.Mt-Park.GA.US (Warren Tucker) (05/26/91)

In article <1991May26.122801.4205@newshost.anu.edu.au> cmf851@anu.oz.au (Albert Langer) writes:
>3. One classification I noticed missing was POSIX (unless that was
>meant to be the "works on all Unix" :-)

More like, works on some POSIX boxes (1/2 ;->).
 
------------------------------------------------------------------------
Warren Tucker, TuckerWare     emory!n4hgf!wht or wht@n4hgf.Mt-Park.GA.US
"An ANSI C elephant: just like the real one, but the position, shape and
length of the trunk and tail are left to the vendor's discretion." -- me

andrew@calvin.doc.ca (Andrew Patrick) (05/27/91)

In article <1991May26.041741.22210@sparky.IMD.Sterling.COM> kent@sparky.IMD.Sterling.COM (Kent Landfield) writes:
>Its time to get serious about this.   I *need* your input.  Please jump in 
>with suggestions and ideas. 
>
>The Environment: auxilary header will be used in the comp.sources.misc 
>newsgroup in the very near future. 
...

I should point out that comp.sources.reviewed, the new kid on the
block, will also be using an Environment Header.  We would also like to
see your ideas discussed here, and will try to ensure that the same
scheme is used in CSR and CSM.


-- 
Andrew Patrick, Ph.D.       Department of Communications, Ottawa, CANADA
andrew@calvin.doc.CA
                    "The interface IS the program."

kent@sparky.IMD.Sterling.COM (Kent Landfield) (05/29/91)

In article <1991May26.122801.4205@newshost.anu.edu.au> cmf851@anu.oz.au (Albert Langer) writes:

>Also there might be scope for including named software packages
>that the item requires even when they are not operating systems,
>shells or libraries. (e.g. various graphics packages use pbm).

This was overlooked.  Boy could the list of keywords grow long here... :-)

A couple of people have said in email that making a small core list was
the important starting point.  The list of keywords would be expanded as
needed.  This approach makes sense to me.  External named software
packages would probably fit into the category of "on first encounter".

>Perhaps a separate header line for Requires: to include any
>package name and version number without controls, while
>Environment: is restricted to a controlled thesaurus of keywords
>that are listed monthly.

This might be useful in comp.sources.reviewed but for comp.sources.misc,
the Requires: would be placing a lot of up-front communication requirements
on the authors and myself... I do agree that the keyword list will need to
be made available on a timely basis, such as part of an INF posting at the
beginning of a new volume.

>Finally I would suggest you get in touch the Library of Congress
>or some local research library and ask for advice about the
>methods used and proposed for cataloging computer software
>(or "computer data files"). There is also a mailing list
>PACS-L%UHUPVM1.bitnet@RICEVM1.RICE.EDU for a public access
>computer systems forum that would have relevant contacts,
>which published a paper on cataloging of online information
>resources and included the following address:
>
>Sally H McCallum, Chief
>Network Development and MARC Standards Office, LM 639
>Library of Congress
>Washington DC 2050
>
>smcc@seq1.loc.gov

Again, this might be overkill for comp.sources.misc (I could be wrong.. :-))
but the archivist in me will check it out... Thanks for the pointers...

			-Kent+

-- 
Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD           UUCP:     uunet!sparky!kent
Phone:    (402) 291-8300         FAX:      (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.

barrett@Daisy.EE.UND.AC.ZA (Alan P Barrett) (05/30/91)

In article <1991May26.041741.22210@sparky.IMD.Sterling.COM>,
kent@sparky.IMD.Sterling.COM (Kent Landfield) writes:
    The Environment: auxiliary header line is used to allow the moderators
    a way of giving the readership a quick indication of what resources are 
    required to use a particular issue.

    Environment: syntax
        Environment: Keyword [, keyword ..]

    Environment: example
        Environment: SunView, XView, X11R4, termcap

    The keywords usage is case insensitive.  I am extending Bill's usage 
    by adding a NOT indicator (e.g. !AIX) so that I can specify that a 
    package runs on everything "but" the specified keyword.

Doesn't it really need a richer syntax, like arbitrarily complex boolean
expressions?

Environment: ((ThisOs & ThatOption) | OtherOS) & (ThisPackage | ThatPackage)

--apb
Alan Barrett, Dept. of Electronic Eng., Univ. of Natal, Durban, South Africa
RFC822: barrett@ee.und.ac.za             Bang: m2xenix!quagga!undeed!barrett

wirzeniu@klaava.Helsinki.FI (Lars Wirzenius) (05/30/91)

In article <1991May26.041741.22210@sparky.IMD.Sterling.COM> kent@sparky.IMD.Sterling.COM (Kent Landfield) writes:
>    Environment: syntax
>        Environment: Keyword [, keyword ..]

I think that some version information should be included in cases where
it matters.  SVR3 vs SVR4, X11R3 vs X11R3 and MS-DOS3.0 vs MS-DOS4.0 are
some examples. This could be done with version specific keywords, but I
think this is a bad idea. Instead, the syntax for keywords might be
extended with an optional '=version' part, for example MS-DOS=4.0,
SYSV=R3, X=R3, BSD=4.3-tahoe.

-- 
Lars Wirzenius     wirzeniu@cc.helsinki.fi

net@opal.cs.tu-berlin.de (Oliver Laumann) (05/30/91)

wirzeniu@klaava.Helsinki.FI (Lars Wirzenius) writes:
> >        Environment: Keyword [, keyword ..]
> 
> I think that some version information should be included in cases where
> it matters.  SVR3 vs SVR4, X11R3 vs X11R3 and MS-DOS3.0 vs MS-DOS4.0 are
> some examples. This could be done with version specific keywords, but I
> think this is a bad idea. Instead, the syntax for keywords might be
> extended with an optional '=version' part, for example MS-DOS=4.0,
> SYSV=R3, X=R3, BSD=4.3-tahoe.

I find the whole idea of listing the required versions in a header of
the news article absurd.

Suppose I have a software package that runs under SunOS X, where
X >= 3.4 and X <= 4.1.1, 4.[23] BSD, System V Release 3, Ultrix, HP-UX,
and several others; it requires X11 Release 3 or X11 Release 4,
OSF/Motif 1.0 or Motif 1.1, but Motif 1.1 only together with X11
Release 4, further OpenWindows 2.0 with HyperNeWS 1.4 or later (but
optionally), and so on.

So what exactly would I have to put in the `Environment:' header?

The requirements on the environment are rarely so simple that they can
be expressed in a single header line with only a handful of predefined
symbols.

--
    Oliver Laumann,  Technical University of Berlin,  Germany.
    net@tub.cs.tu-berlin.de   net@tub.UUCP   ol@gnu.ai.mit.edu

brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (06/03/91)

In article <3524@kraftbus.cs.tu-berlin.de> net@opal.cs.tu-berlin.de (Oliver Laumann) writes:
> Suppose I have a software package that runs under SunOS X, where
> X >= 3.4 and X <= 4.1.1, 4.[23] BSD, System V Release 3, Ultrix, HP-UX,
> and several others; it requires X11 Release 3 or X11 Release 4,
> OSF/Motif 1.0 or Motif 1.1, but Motif 1.1 only together with X11
> Release 4, further OpenWindows 2.0 with HyperNeWS 1.4 or later (but
> optionally), and so on.

I don't think the point of an Environment line is to express exactly
which systems the package will run under. What's important is that it
say where the package *won't* run, so that people avoid downloading the
package if they won't be able to use it. So:

Environment: !SunOS<3.4, !SVR<3, !(Motif 1.1 & X11R3), ?!UNIX

Translation: Won't run under SunOS before 3.4, won't run under System V
release 2, won't run under Motif 1.1 with X11R3, probably won't run
under any non-UNIX systems.

Similarly, pure-Sun packages would have Environment: !!SunOS. Packages
for just Suns and SGIs would have Environment: !(!SunOS & !SGI). Most of
my packages would have Environment: !(!BSD-derived).

This won't necessarily provide full information. So what? What's
important is that every bit of information added to an environment line
lets some people know that they shouldn't bother with the package.
Conversely, as the package is ported to more systems, the environment
restrictions will slowly disappear.

---Dan

wirzeniu@klaava.Helsinki.FI (Lars Wirzenius) (06/03/91)

In article <3524@kraftbus.cs.tu-berlin.de> net@opal.cs.tu-berlin.de (Oliver Laumann) writes:
>I find the whole idea of listing the required versions in a header of
>the news article absurd.
>[ an example of lots of required versions ]

A good point. The version numbers shouldn't be specified except when
they are 'really' required, for instance, when the software makes heavy
use of a feature available only in one version of the OS. An example of
this might be disk editors for MS-DOS that won't work with version 4.01.

>The requirements on the environment are rarely so simple that they can
>be expressed in a single header line with only a handful of predefined
>symbols.

On the other hand, it might be enough just to specify the environments
in a 'grand scale' in the header line (and, presumably, the meticulous
detail in the body the article, in the README or whatever) even in these
'radical' cases.  A simpler syntax for the header line would mean less
work for the moderator, and therefore (for comp.sources.misc) shorter
turnaround time.  Even a simple 'Environments:' would make it easier to
skip programs that won't run in one's own environment.

The more I think about it, the more agree with you that the version
number idea isn't so good.
-- 
Lars Wirzenius     wirzeniu@cc.helsinki.fi

jfh@rpp386.cactus.org (John F Haugh II) (06/05/91)

In article <2088:Jun309:46:2191@kramden.acf.nyu.edu>, brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes:
> I don't think the point of an Environment line is to express exactly
> which systems the package will run under. What's important is that it
> say where the package *won't* run, so that people avoid downloading the
> package if they won't be able to use it. So:
> 
> Environment: !SunOS<3.4, !SVR<3, !(Motif 1.1 & X11R3), ?!UNIX

The abundance of !'s in your examples lead me to believe that you've
not thought about this very hard.  This seems like an argument saying
the primary arithimetic operation is subtraction, therefore we will
always specify operations as subtractions, starting with 2 - (0 - 2) = 4.

What is clear is that the Environment: header must =concisely= state
what the environment is required to be (or not to be ...).  That is,
if BSD is straight out, the most concise expression would be

	Environment: !BSD

Whereas if just about any POSIX compliant UNIX with BSD enhancements
is likely to work, it would be

	Environment: POSIX && BSD

not some obfuscated

	Environment: !(! POSIX || !BSD)

> Similarly, pure-Sun packages would have Environment: !!SunOS. Packages
> for just Suns and SGIs would have Environment: !(!SunOS & !SGI). Most of
> my packages would have Environment: !(!BSD-derived).

as the above cited example leads one to suspect it may become ...

Remember, the goal is to be =human= readable, not =machine= readable.
-- 
John F. Haugh II        | Distribution to  | UUCP: ...!cs.utexas.edu!rpp386!jfh
Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) |  Domain: jfh@rpp386.cactus.org
"If liberals interpreted the 2nd Amendment the same way they interpret the
 rest of the Constitution, gun ownership would be mandatory."

brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (06/12/91)

In article <19359@rpp386.cactus.org> jfh@rpp386.cactus.org (John F Haugh II) writes:
> In article <2088:Jun309:46:2191@kramden.acf.nyu.edu>, brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes:
> > I don't think the point of an Environment line is to express exactly
> > which systems the package will run under. What's important is that it
> > say where the package *won't* run, so that people avoid downloading the
> > package if they won't be able to use it. So:
> > Environment: !SunOS<3.4, !SVR<3, !(Motif 1.1 & X11R3), ?!UNIX
> The abundance of !'s in your examples lead me to believe that you've
> not thought about this very hard.

You're right; in the three years I've been adding X-Context headers to
my postings, I haven't thought one bit about the number of exclamation
points.

Since the real purpose of the line is to keep people from wasting effort
on packages they won't get to use, it should be titled appropriately:

   Wont-Work-With: non-UNIX, SunOS<3.4, SVR<3, Motif 1.1 & X11R<4

That's about as simple as it can get for that set of requirements.

> Whereas if just about any POSIX compliant UNIX with BSD enhancements
> is likely to work, it would be
> 	Environment: POSIX && BSD

Again, the point of this line is for people (not your C compiler---what's
this && stuff?) to avoid bothering with a package that they can't use. It
should read like a set of danger signs:

   Wont-Work-With: non-POSIX, non-BSD

The first danger sign you hit, you get off the road.

---Dan

jfh@rpp386.cactus.org (John F Haugh II) (06/12/91)

In article <20585:Jun1203:03:5491@kramden.acf.nyu.edu>, brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes:
> > Whereas if just about any POSIX compliant UNIX with BSD enhancements
> > is likely to work, it would be
> > 	Environment: POSIX && BSD
> 
> Again, the point of this line is for people (not your C compiler---what's
> this && stuff?) to avoid bothering with a package that they can't use. It
> should read like a set of danger signs:
 
Gee, I don't know Dan, What's the deal with the "!"s and "<", ">", and
"="'s in yours?

>    Wont-Work-With: non-POSIX, non-BSD

Which is the same as

Works-With: POSIX Compliant BSD Systems.

I won't try to make this argument using the linguistic point that many
non-English languages have trouble with the English concept of negation,
as it exists in English.  That would be cheating, since it would point
to a non-computer related reason that unneeded negation of the sense of
the information is confusing.  Instead I'll point out how silly a double
negative looks in English, which before was how silly a double negative
looked in computerese ...

The set of environments that the software is likley to execute on is
far smaller than the set of environment that it will execute on.  [ There
are simply too many weird environments, like "Won't run on an HP-41
handheld programmable calculator", to name every incompatible platform
using non-negated language.  That is, if it runs on UNIX and VMS, the
set of other operating systems is best described as "not UNIX and not
VMS", rather than "RT/11, RSTS, RSX, TENEX, TWENIX, ..." [ and those
were just the popular DEC O/S's - ignore the popular IBM ones for the
time being ... ]  Since the set of all known operating system is quite
large, your scheme practically requires that every specification be
given as "not this system, not that system, not some other system",
rather than just dragging all the not's out and getting rid of that
"Wont-" at the beginning.  Now it is "this system, that system, some
other system".  Which does, coincidentally, have the linguistic
property of being simplier to understand.  And it doesn't contain a
single double negative either.  [ Or in Dan-ese "Doesn't contain not
none double negatives." ]
-- 
John F. Haugh II        | Distribution to  | UUCP: ...!cs.utexas.edu!rpp386!jfh
Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) |  Domain: jfh@rpp386.cactus.org
"If liberals interpreted the 2nd Amendment the same way they interpret the
 rest of the Constitution, gun ownership would be mandatory."

brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (06/16/91)

In article <19379@rpp386.cactus.org> jfh@rpp386.cactus.org (John F Haugh II) writes:
> >    Wont-Work-With: non-POSIX, non-BSD
> Which is the same as
> Works-With: POSIX Compliant BSD Systems.

But I thought the idea was to have at least some semi-standard keywords,
not a mishmash of ``compliant'' and ``system'' and so on created anew
for each package.

> The set of environments that the software is likley to execute on is
> far smaller than the set of environment that it will execute on.

That's not important. What's important is the size of the *description*
of the set of unsupported environments.

How about a compromise:

   Requires: POSIX & BSD-derived, or Interactive, or 3B2
   But-Wont-Work-With: SunOS<4.0.3, Convex UNIX<8.0

(Note that we have to distinguish between BSD and BSD-derived.)

---Dan