v07i043: 2.11 News Documentation and Conversion, Part03/08

sources-request at mirror.UUCP sources-request at mirror.UUCP
Wed Oct 29 07:24:43 AEST 1986


Submitted by: seismo!rick (Rick Adams)
Mod.sources: Volume 7, Issue 43
Archive-name: 2.11news/Part03

# To extract, sh this file
#
#	news 2.11 documentation File 1 of 6
#
if test ! -d doc
then
	mkdir doc
fi
echo x - doc/Makefile 1>&2
sed 's/.//' >doc/Makefile <<'*-*-END-of-doc/Makefile-*-*'
-# make the various documents
-
-ROFF=nroff
-
-all: howto manner standard copyright install
-
-install: install.mn tmac.n
-	$(ROFF) tmac.n install.mn
-
-howto: howto.mn tmac.n
-	$(ROFF) tmac.n howto.mn
-
-manner: manner.mn tmac.n
-	$(ROFF) tmac.n manner.mn
-
-standard: standard.mn tmac.n
-	$(ROFF) tmac.n standard.mn
-
-copyright: copyright.mn tmac.n
-	$(ROFF) tmac.n copyright.mn
*-*-END-of-doc/Makefile-*-*
echo x - doc/mn.7 1>&2
sed 's/.//' >doc/mn.7 <<'*-*-END-of-doc/mn.7-*-*'
-.TH MN 7 "News Version B2.11"
-.SH NAME
-mn \- text formatting macros for the news documentation
-.SH SYNOPSIS
-.B "nroff  \-mn"
-[ options ]  file  ...
-.br
-.B "troff  \-mn"
-[ options ]  file  ...
-.SH DESCRIPTION
-.PP
-This package of
-.IR nroff (1)
-and
-.IR troff (1)
-macro definitions provides a formatting facility
-which may be used to run off the formatted news documents.
-When reverse line motions are needed,
-filter the output through
-.IR col (1).
-.PP
-All \-mn macros,
-diversions,
-string registers,
-and number registers are defined below.
-Many
-.I nroff
-and
-.I troff
-requests are unsafe in conjunction with this package.
-However,
-the requests below may be used with impunity:
-.LP
-.ta 5n 12n
-.nf
-	.bp	begin new page
-	.br	break output line
-	.sp \f2n\fP	insert \f2n\fP spacing lines
-	.ce \f2n\fP	center next \f2n\fP lines
-	.ls \f2n\fP	line spacing: \f2n\fP=1 single, \f2n\fP=2 double space
-	.na	no alignment of right margin
-.fi
-.PP
-Font and point size changes with \ef and \es are also allowed;
-for example,
-\&``\ef2word\efR'' will italicize \f2word.\fP
-Output of the
-.IR tbl (1),
-.IR eqn (1),
-and
-.IR refer (1)
-preprocessors for equations,
-tables,
-and references is acceptable as input.
-.SH FILES
-/usr/lib/tmac/tmac.n
-.SH "SEE ALSO"
-eqn(1), refer(1), tbl(1), troff(1)
-.SH WARNINGS
-.PP
-If you do not set the string register ``.f'' to the file name,
-you will only be told the line number on which any errors occur.
-If you define this string to be the file name,
-you will get the file name,
-too.
-This is useful when dealing with a document
-split up into many files.
-.PP
-This package is not now intended for uses
-other than with the news documentation.
-.PP
-Bug reports are always welcome;
-please send them to the author.
-(Include a sample of the input;
-this helps track down the bug.)
-.SH AUTHOR
-Matt Bishop
-.RI ( mab at riacs.arpa ,
-.IR ihnp4!ames!riacs!mab ,
-.IR decvax!decwrl!riacs!mab )
-.SH REQUESTS
-.PP
-In the
-.I Note
-column,
-.I b
-means the request causes a break,
-and
-.I i
-means the macro,
-number register,
-string register,
-or diversion is internal and should not be used for anything.
-In the
-.I "What It Is"
-column,
-.IR div " means " diversion ,
-.IR mac " means " macro ,
-.IR num " means " "number register" ,
-and
-.IR str " means " "string register" .
-In the
-.I "Initial Value"
-column,
-a hyphen means no initial value is used,
-anything else is the initial value,
-and if two values are given,
-the first is for
-.I nroff
-and the second for
-.IR troff .
-.PP
-.if n .in 0
-.ds x \f2x\fP\|
-.ds y \f2y\fP\|
-.ds z \f2z\fP\|
-.ds X "\*x
-.ds Y "\*x \*y
-.ds Z "\*x \*y \*z
-.tr _.
-.ta \w'MacroNames'u +\w'WhatItIs'u +\w'InitialVal'u +\w'Note 'u
-.sp .3
-.nf
-Macro	What	Initial	Note	\0 Explanation
-Name	It Is	Value
-.sp .3
-_f	num	\-	\-	file name, used in error messages if set
-_ai	mac	\-	\-	author's institution
-_au	mac	\-	b	author's name
-_b \*Z	mac	\-	\-	print \*x in font 3, \*y after, \*z before;
-				if no arguments, switch to font 3
-b	num	\-	i	used to embolden italics
-_bi \*Z	mac	\-	\-	print \*x in emboldened font 2, \*y after,
-				\*z before
-bm	num	1i,1i+1v	\-	height of bottom margin
-_bt	mac	\-	\-	print pottom title
-bt	num	.5i+1v	\-	bottom of footer to bottom of page
-_cf \*Z	mac	\-	\-	print contents of header line (double
-				quotes around \*x, \*y before, \*z after)
-cm	num	0	\-	0 if no cut marks, nonzero if cut marks
-_cn \*Z	mac	\-	\-	print computer/site name; same as _i
-_dd	div	\-	i	text of display
-dg	str	\(**,\(dg	\-	footnote mark
-dw	str	\f2current\fP	\-	name of current day of week
-dy	str	\f2current\fP	\-	full date
-_ed	mac	\-	b	end display
-_ef	mac	\-	b	end footnote
-_ei	mac	\-	b	move left margin to the right
-_er	mac	\-	\-	print error message
-_et	mac	\-	b,i	macro called at end of text
-f0	str	\-	\-	left bottom title
-f1	num	\-	i	current font number
-f1	str	\f2date\fP,\-	\-	center bottom title
-f2	num	\-	i	previous font number
-f2	str	\-	\-	right bottom title
-fc	num	\-	i	per-page footnote count
-_fd	mac	\-	b,i	drop footnotes
-fg	num	\-	i	gets fudge factor for footnote
-fl	num	5.5i	\-	default footnote line length
-_fn	mac	\-	\-	begin footnote
-_fo	mac	\-	\-	bottom of page (footer) macro
-fp	num	\-	i	current location of trap for _fo macro
-_fs	mac	\-	i	print text/footnote separator
-fs	num	\-	i	position where footnote printing should begin
-_fx	mac	\-	i	collect overflow footnotes
-_fy	div	\-	i	text of footnote overflow
-_fz	mac	\-	i	move overflow footnotes from _fy to _tf
-gs	num	\-	i	used to be sure footnotes fit
-h0	num	0	i	current level 1 section number
-h0	str	\-	\-	left header title
-h1	num	0	i	current level 2 section number
-h1	str	\f2\- page \-\fP	\-	center header title
-h2	num	0	i	current level 3 section number
-h2	str	\-	\-	right header title
-h3	num	0	i	current level 4 section number
-_hd	mac	\-	i	top of page (header) macro
-_hf	mac	\-	\-	print header field name; same as _cf
-_hn \*x	mac	\-	b	numbered section; if present, \*x is level
-hn	num	0	i	current level of numbering (temporary)
-hs	num	1v	\-	default intra-section spacing
-_hu	mac	\-	b	unnumbered section header
-_i \*Z	mac	\-	\-	print \*x in font 2, \*y after, \*z before;
-				if no arguments, switch to font 2
-i1	num	\-	i	current indent
-i2	num	\-	i	previous indent
-id	num	0	i	1 if in display, 0 otherwise
-if	num	0	i	1 if in footnote, 0 otherwise
-_is \*Z	mac	\-	\-	print \*x 2p bigger, \*y after, \*z before;
-				if no arguments, increase point size by 2p
-it	num	0	i	0 before _bt called, 1 after
-l0	num	0	i	leftmost position for left margin
-l1	num	\-	i	first level of indent for left margin
-l2	num	\-	i	second level of indent for left margin
-l3	num	\-	i	third level of indent for left margin
-l4	num	\-	i	fourth level of indent for left margin
-l5	num	\-	i	fifth level of indent for left margin
-l6	num	\-	i	sixth level of indent for left margin
-l7	num	\-	i	seventh level of indent for left margin
-l8	num	\-	i	eighth level of indent for left margin
-l9	num	\-	i	ninth level of indent for left margin
-li	num	5n	\-	paragraph indent
-ll	num	6i	\-	default line length
-lm	num	0	i	current level of indent for left margin
-lo	num	\-	i	previous level for left margin
-_lp \*Y	mac	\-	b	labelled paragraph; \*x is label, \*y indent
-lq	str	",``	\-	left double quotation marks
-mo	str	\f2current\fP	\-	name of current month
-_mt	mac	\-	b	title
-mt	num	1.5i+1v	\-	distance of title from top of page
-_ng \*Z	mac	\-	\-	newsgroup name; same as _b
-_nl	mac	\-	b	reset point size to default
-ns	num	0	i	if nonzero, _fn does not call _fs
-_op \*Z	mac	\-	\-	command option; same as _b
-p1	num	0	i	1 after PDP-11(tm) footnote printed,
-				0 before
-_pa \*Z	mac	\-	\-	print protocol appellation; same as _i
-_pd \*Y	mac	\-	\-	print PDP-11(tm), footnote; \*x after,
-				\*y before
-pd	num	1v,.3v	\-	intra-paragraph spacing
-_pf	mac	\-	\-	print footer title
-_pg \*x	mac	\-	b	paragraph; if \*x is l, left justify
-pi	num	5n	\-	default paragraph indent
-po	num	1.25i	\-	default page offset
-ps	num	12p	\-	default point size
-_pt \*x	mac	\-	\-	print header; \*x is distance from top of
-				page
-_qc \*Z	mac	\-	\-	print name of control char; \*x is name,
-				in font 3, between <>, \*y after, \*z before
-_qp \*Z	mac	\-	\-	print char; same as _b
-_r	mac	\-	\-	switch to font 1
-rq	str	",''	\-	right double quotation marks
-s1	num	\-	i	current point size
-s2	num	\-	i	previous point size
-_sd \*X	mac	\-	\-	start display; if \*x is c, center display
-sf	num	\-	i	1 if center display, 0 otherwise
-_si \*x	num	\-	\-	indent left margin by \*x (5n default)
-_sm \*Z	mac	\-	\-	print \*x 2p smaller, \*y after, \*z before;
-				if no arguments, decrease point size by 2p
-_sn \*x	mac	\-	b	space by \*x (1v default), enter nospace mode
-_sr \*x	mac	\-	\-	enter spacemode, space by \*x (1v default)
-t2	num	0	i	0 if little/no space, nonzero otherwise
-_tf	div	\-	i	text of footnotes
-tm	num	1i-.5v	\-	height of top margin
-tt	num	.5i-.5v	\-	distance from top of page to header
-_ux \*Y	mac	\-	\-	print UNIX(tm), footnote; \*x after,
-				\*y before
-ux	num	0	i	1 after UNIX(tm) footnote printed,
-				0 before
-v1	num	\-	i	current vertical spacing
-v2	num	\-	i	previous vertical spacing
-vr	str	\-	\-	current version of news
-vs	num	16p	\-	default vertical spacing
-vx	num	0	i	1 after VAX(tm) footnote printed,
-				0 before
-_vx \*Y	mac	\-	\-	print VAX(tm), footnote; \*x after,
-				\*y before
-ws	str	\-	\-	used to construct error message
-_ya	mac	\-	\-	same as calling _yf, _yi, _ys, _yv
-_yf	mac	\-	\-	restore fonts saved by _zf
-_yi	mac	\-	\-	restore indents saved by _zi
-_ys	mac	\-	\-	restore point sizes saved by _zs
-_yv	mac	\-	\-	restore vertical spacings saved by _zv
-_za	mac	\-	\-	same as calling _zf, _zi, _zs, _zv
-_zf	mac	\-	\-	save previous, current fonts
-_zi	mac	\-	\-	save previous, current indents
-_zs	mac	\-	\-	save previous, current point sizes
-_zv	mac	\-	\-	save previous, current vertical spacings
-.fi
*-*-END-of-doc/mn.7-*-*
echo x - doc/tmac.n 1>&2
sed 's/.//' >doc/tmac.n <<'*-*-END-of-doc/tmac.n-*-*'
-.\" The News macro package
-.\"
-.\" This  is  the macro package that is used to format news documents.  It
-.\" was written because many sites do not have one of the -mm or -ms pack-
-.\" ages that the documents use.   This is NOT compatible with EITHER, but
-.\" (I hope) will become the standard for all news  documents  (man  pages
-.\" excepted, since everyone seems to have -man.)
-.\"
-.\" This package was written using  only  the  "NROFF/TROFF Users' Guide",
-.\" and  therefore  if  you  can run NROFF/TROFF, you can legitimately use
-.\" this package.  However, because NROFF/TROFF are proprietary  programs,
-.\" I  cannot  place  this  package in the public domain.  This should not
-.\" matter, because if you legitimately have  NROFF/TROFF,  you  have  the
-.\" documentation; if not, you can't run off the documentation anyway.
-.\"
-.\" This  package may be circulated freely with the news documentation; it
-.\" may not be sold, but is to be distributed with  the  unformatted  news
-.\" documents.  However,  the name of the author and the place at which it
-.\" was written (in the author's own  time,  of  course)  are  not  to  be
-.\" removed  from the package regardless of how it is modified or altered.
-.\" Further, please do not distribute this package if you make any changes
-.\" because  I  don't want to get bug reports of macros I haven't written;
-.\" if you have a goodie you want me to add, send it to me and we'll talk.
-.\" (I really do like feedback!)  I'd really appreciate your cooperation.
-.\"
-.\" Author:	Matt Bishop
-.\"		Research Institute for Advanced Computer Science
-.\"		Mail Stop 230-5
-.\" 		NASA Ames Research Center
-.\"		Moffett Field, CA  94035
-.\"
-.\" version 1.0		September 28, 1985	mab at riacs.arpa
-.\" 	initial version
-.\" version 1.1		October 25, 1985	mab at riacs.arpa
-.\"	fixed an incredibly obscure footnote bug (that occurred twice in
-.\"	the news documentation!) which put footnoted words on  one  page
-.\"	and the footnote on the next if the word was in the next-to-last
-.\"	or last line; commented it, and generally cleaned up
-.\" Version 1.2		October 27, 1985	mab at riacs.arpa
-.\"	Added a few more comments and a check to keep footnotes lined up
-.\"	with the bottom margin.
-.\" Version 1.3		February 12, 1986	mab at riacs.arpa
-.\"	Added an error check to catch unmatched ef's and ed's
-.\"
-.\" **********
-.\" these preserve and restore various things
-.\" they are used to shorten other macros
-.de yf					\" restore fonts
-.ft \\n(f2				\" previous font
-.ft \\n(f1				\" current font
-..
-.de yi					\" restore indents
-'in \\n(i2u				\" previous indent
-'in \\n(i1u				\" current indent
-..
-.de ys					\" restore point sizes
-.ps \\n(s2				\" previous point size
-.ps \\n(s1				\" current point size
-..
-.de yv					\" restore vertical spacings
-.vs \\n(v2u				\" previous vertical spacing
-.vs \\n(v1u				\" current vertical spacing
-..
-.de ya					\" restore everything
-.yf					\" restore fonts
-.yi					\" restore indents
-.ys					\" restore point sizes
-.yv					\" restore vertical spacing
-..
-.de zf					\" preserve fonts
-.nr f1 \\n(.f				\" current font
-.ft					\" switch to previous font
-.nr f2 \\n(.f				\" previous font
-.ft					\" back to current font
-..
-.de zi					\" preserve indents
-.nr i1 \\n(.iu				\" current indent
-'in					\" switch to previous indent
-.nr i2 \\n(.iu				\" previous indent
-'in					\" back to current indent
-..
-.de zs					\" preserve point sizes
-.nr s1 \\n(.su				\" current point size
-.ps					\" switch to previous point size
-.nr s2 \\n(.su				\" previous point size
-.ps					\" back to current point size
-..
-.de zv					\" preserve vertical spacings
-.nr v1 \\n(.vu				\" current vertical spacing
-.vs					\" switch to previous vertical spacing
-.nr v2 \\n(.vu				\" previous vertical spacing
-.vs					\" back to current vertical spacing
-..
-.de za					\" save everything
-.zf					\" save fonts
-.zi					\" save indents
-.zs					\" save point sizes
-.zv					\" save vertical spacings
-..
-.\" **********
-.\" these actually print the header and footer titles
-.\" they are defined separately from the "hd" and "fo" macros
-.\" to make user redefinition easy
-.de pt					\" print header title
-.					\" omit header on first page
-.if \\n%>1 \{\
-'	sp |\\$1u			\" move to proper position
-.	ft 1				\" change to default font
-.	ps \\n(ps			\" change to default point size
-.	vs \\n(vs			\" change to default spacing
-.	tl '\\*(h0'\\*(h1'\\*(h2'	\" center title
-.	vs				\" restore current vertical spacing
-.	ps				\" restore current point size
-.	ft				\" restore current font
-.\}
-..
-.de pf					\" print footer title
-.ft 1					\" change to default font
-.ps \\n(ps				\" change to default point size
-.vs \\n(vs				\" change to default spacing
-.ie \\n%=1 .tl '\\*(h0'\\*(h1'\\*(h2'	\" on first page, print the header here
-.el        .tl '\\*(f0'\\*(f1'\\*(f2'	\" on other pages, print the footer
-.vs					\" restore current vertical spacing
-.ps					\" restore current point size
-.ft					\" restore current font
-..
-.\" **********
-.\" these are the top of page (header) and bottom of page (footer) macros
-.\" they don't actually print anything, just call the right macros
-.de hd					\" header -- do top of page processing
-.if t .if \\n(cm .tl '\(rn'''		\" drop cut mark if needed
-.pt \\n(ttu				\" print header
-.nr fc 0 1				\" init footnote count
-.nr fs \\n(.pu-\\n(bmu-1u		\" if any footnotes, start print here
-.nr fp 0-\\n(bmu			\" reset current footer place
-.ch fo -\\n(bmu				\" reset footer trap
-.if \\n(dn .fz				\" put leftover footnotes st bottom
-.ya					\" restore font, etc.
-'sp |\\n(tmu				\" move to top of body
-.ns					\" don't allow any more space
-..
-.de fo					\" footer -- do bottom of page processing
-.za					\" save font, etc.
-.rs					\" you want motions here
-.nr dn 0				\" clobber diversion size register
-.if \\n(fc .fd				\" now print the footnotes, if any
-'bp					\" force out page
-..
-.\" **********
-.\" these are the footnote macros
-.\" here's an overview:
-.\"	Footnotes are processed in environment #1, which is  initialized
-.\"	at the bottom of this package.  When "fn" is called, nroff/troff
-.\"	switches to this environment.  The body of the footnote is saved
-.\"	in  the  diversion  "tf" (for "temporary footnote"), so you will
-.\"	NEVER spring a trap during the first reading of a footnote. When
-.\"	"ef" ("end footnote" is called,  the  diversion  is  closed.  If
-.\"	this  is the first footnote on the page (ie, the number register
-.\"	"fc" is 1), and the footnote height (plus the height of 1  line)
-.\"	crosses  the  bottom  margin,  you get the footnoted word on one
-.\"	page and the footnote on the other.  In this case we  just  call
-.\"	"fo"  manually  (taking case it cannot be re-invoked on the same
-.\"	page!)  If this situation does not occur,  we  just  adjust  the
-.\"	footer  trap's  position upwards (we'll get to how far in a min-
-.\"	ute); if this puts the trap above the current line,  we  reposi-
-.\"	tion  the trap just beneath the current line to be sure of trig-
-.\"	triggering it once the current line is forced out.
-.\"	 To reposition the footer trap, we proceed as  follows.  Because
-.\"	the  trap  may be sprung in the middle of a line, it is possible
-.\"	that the footnote will not fit on the page (regardless of  where
-.\"	on the page the footnoted word occurs -- really!) if we move the
-.\"	trap up by the size of  the  footnote  diversion  "tf".  So,  we
-.\"	fudge things a little bit -- for the first footnote on each page
-.\"	we move the footer trap up 1 extra line ("line" being 1v in env-
-.\"	ironment  #0).   Unless  the point size and vertical spacing are
-.\"	increased between the first footnote and the footer trap's being
-.\"	sprung,  this  will  keep  the footnotes on the same page as the
-.\"	footnoted word.  But as there may be now as much as 1v of  space
-.\"	between the footnote and the bottom margin, which looks HIDEOUS,
-.\"	we use the number register "fs" to mark where  the  footer  trap
-.\"	would  REALLY go, and just space to it when it comes time to put
-.\"	out the footnotes.
-.de fd					\" dump footnotes
-.nr gs 1v				\" get a measure of 1 line in env #0
-.ev 1					\" switch to footnote environment
-.nr gs +2v				\" min of 2 lines of footnotes
-.					\" if the number register ns > 0,
-.					\" the last text line may contain a
-.					\" footnote that is too big to fit;
-.					\" this checks for such a note and
-.					\" if so, forces the footnote into
-.					\" the "fy" diversion that carries
-.					\" it onto the next text page
-.ie (\\n(nsu>0)&(\\n(gsu>=\\n(.tu) 'sp \\n(gsu	\" be sure you can get it down
-.el .if \\n(fsu>\\n(nlu 'sp \\n(fsu-\\n(nlu	\" move to footnote start position
-'nf					\" don't reprocess footnotes
-'in 0					\" don't indent them any more either
-.tf					\" drop text of footnotes
-.rm tf
-.if '\\n(.z'fy' .di			\" end overflow diversion, if any
-.nr fc 0				\" re-init footnote count
-.ev					\" return to usual environment
-..
-.de fn					\" start footnote
-.					\" look for nested footnotes -- ILLEGAL
-.ie \\n(if>0 .er "footnote within footnote"
-.el .da tf				\" append footnote to footnote diversion
-.nr if +1				\" increment level of footnoting
-.nr fc +1				\" one more footnote on this page
-.if \\n(fc=1 .nr fp -1v			\" The reason for this "fudge factor"
-.					\" is that there is no way to force
-.					\" NROFF/TROFF to invoke a macro at
-.					\" the end of each line.  At times,
-.					\" the trap boundary will not match up
-.					\" with the bottom of a line, so the
-.					\" "fo" trap which is set at 2320 may
-.					\" not be triggered until 2340 -- and
-.					\" then the footnote won't fit.  This
-.					\" gives some slack so the footnote is
-.					\" more likely to fit. *sigh*
-.ev 1					\" enter footnote environment
-.if \\n(fc=1 .fs			\" drop separator if first footnote
-.br					\" flush out any previous line in footnote
-.fi					\" process footnote in fill mode
-..
-.de ef					\" end footnote
-.br					\" flush out the line in footnote
-.ie \\n(if<=0 .er "end footnote has no corresponding begin footnote"
-.el \{\
-.	nr if -1			\" decrement level of footnoting
-.	nr fg 2v			\" remember this for repositioning fo
-.	ev				\" back to usual environment
-.	if \\n(if=0 \{\
-.		di			\" end of footnote proper
-.		nr fp -\\n(dnu		\" "fo" will be moved at least up this far
-.		nr fs -\\n(dnu		\" increase size of footnote
-.		ch fo \\n(fpu		\" reposition "fo" trap (first guess)
-.					\" the first part of the "ie" clause
-.					\" is taken in the special case
-.					\" described above
-.		ie (\\n(fc=1)&((\\n(nlu+1v+\\n(fgu)>=(\\n(.pu-\\n(bmu)) \{\
-.			nr ns \\n(dnu	\" suppress footnote separator
-.					\" since this footnote contains it
-.					\" keep "fo" from being invoked twice
-.			ch fo \\n(.pu+1i
-.			fo		\" force the page out AT ONCE
-.			nr ns 0		\" re-enable footnote separator
-.		\}
-.					\" footnote won't fit completely
-.		el .if (\\n(nlu+1v)>=(\\n(.pu+\\n(fpu) .ch fo \\n(nlu+1u
-.	\}
-.\}
-..
-.de fs					\" drop footnote separator
-.					\" only if not already dropped
-.if \\n(ns=0 \l'1i'
-.nr ns 0				\" in case footnotes are over 1 page long
-..
-.de fx					\" process footnote overflow
-.if \\n(fc .di fy			\" stuff them in the right place
-..
-.de fz					\" deposit footnote overflow
-.fn					\" treat it as a footnote
-.nf					\" it's already been processed
-.in 0					\"   and indented
-.fy					\" "fx" put it here
-.ef					\" end the footnote
-..
-.\" **********
-.\" the ones after here are user-invoked (like "fn" and "ef" above)
-.\" title, author, etc.
-.de mt					\" main title
-\&
-.sp |\\n(mtu				\" space
-.ft 3					\" in bold
-.ps \\n(ps+2p				\" large point size and
-.vs \\n(vs+2p				\" vertical spacing
-.ce 1000				\" center the title
-.nr t2 1				\" space it
-..
-.de au					\" author
-.nr t2 0				\" spacing here
-.sp 2v					\" space
-.ft 2					\" in italics
-.ps \\n(ps				\" usual point size and
-.vs \\n(vs				\" vertical spacing
-.ce 1000				\" center the name(s)
-..
-.de ai					\" author's institution
-.if \\n(t2 .sp 2v			\" space after a title
-.nr t2 0				\" institution
-.ft 2					\" in italics
-.ps \\n(ps				\" usual point size and
-.vs \\n(vs				\" vertical spacing
-.ce 1000				\" center the name(s)
-..
-.de bt					\" begin text macro
-.nr t2 0				\" hold it here
-.nr it +1				\" mark as called
-.ce 0					\" end any centering
-.sn 3v					\" a little bit of space
-..
-.\" paragraph
-.de si					\" start indented section
-.nr lo \\n(lm				\" remember the current level
-.nr lm +1				\" go to the next level
-.ie '\\$1'' .nr l\\n(lm \\n(l\\n(lo+5n	\" if no arg, indent 5n
-.el         .nr l\\n(lm \\$1n		\" otherwise, indent that much
-..
-.de ei					\" end indent
-.nr lm -1				\" down one level
-.if \\n(lm<0 .nr lm 0			\" make sure you don't go too far
-..
-.de pg					\" plain old paragraph
-.if !\\n(it .bt				\" end the title and such
-.sn \\n(pdu				\" inter-paragraph spacing
-.ft 1					\" reset a few things (paranoia)
-.					\" these ONLY if not in footnote
-.ie \\n(if=0 \{\
-.	ps \\n(ps			\" reset point size
-.	vs \\n(vs			\" reset vertical spacing
-.	ne 1v+\\n(.Vu			\" slightly more than 1 line
-.\}
-.el \{\
-.	ps \\n(ps-2p			\" reset point size
-.	vs \\n(vs-2p			\" reset vertical spacing
-.\}
-.in \\n(l\\n(lmu			\" stop any indenting
-.ce 0					\" stop any centering
-.if !'\\$1'L' .if !'\\$1'l' .ti +\\n(piu	\" indent the sucker
-..
-.de lp					\" labelled paragraph
-.pg l					\" reset paragraph
-.if \\n(.$>1 .nr li \\$2n		\" if indent given use it
-.in +\\n(liu				\" indent for paragraph
-.ti -\\n(liu				\" force first line NOT to indent
-.ta +\\n(liu				\" for the label
-\&\\$1\t\c
-.if \\w'\\$1'u>=(\\n(l\\n(lmu+\\n(liu) .br	\" don't overwrite
-..
-.\" section
-.de hu					\" header, unnumbered
-.if !\\n(it .bt				\" end the title and such
-.br					\" force out previous line
-.b
-.ps \\n(ps
-.vs \\n(vs
-.in \\n(l\\n(lmu			\" stop any indenting
-.sn \\n(hsu				\" inter-section spacing
-.ne 3v+\\n(.Vu				\" slightly more than 3 lines
-.fi					\" process the text, too
-..
-.de hn					\" header, numbered
-.hu
-.ie !'\\$1'' .nr hn \\$1
-.el          .nr hn 1
-.ie \\n(hn>0 .nr hn -1
-.el          .nr hn 0
-.ie \\n(hn=0 \{\
-.	nr h0 +1			\" add 1 to main section header
-.	nr h1 0				\" zap remaining section numbers
-.	nr h2 0				\" zap remaining section numbers
-.	nr h3 0				\" zap remaining section numbers
-\\n(h0.
-.\}
-.el .ie \\n(hn=1 \{\
-.	nr h1 +1			\" add 1 to the section header
-.	nr h2 0				\" zap remaining section numbers
-.	nr h3 0				\" zap remaining section numbers
-\\n(h0.\\n(h1.
-.\}
-.el .ie \\n(hn=2 \{\
-.	nr h2 +1			\" add 1 to the section header
-.	nr h3 0				\" zap remaining section numbers
-\\n(h0.\\n(h1.\\n(h2.
-.\}
-.el \{\
-.	nr h3 +1			\" add 1 to the section number
-\\n(h0.\\n(h1.\\n(h2.\\n(h3.
-.\}
-.if \\n(.$=2 \\$2
-..
-.\" displays (no floats, thank God!)
-.de sd					\" start display
-.					\" look for nested displays -- ILLEGAL
-.ie \\n(id>0 .er "display within display"
-.el \{\
-.	ie '\\$1'c' .nr sf 1		\" center the sucker
-.	el          .nr sf 0		\" don't center it
-.\}
-.sn \\n(pdu				\" a little bit of space
-.ev 2					\" switch to display environment
-.nf					\" what you type is what you get
-.if \\n(id=0 .di dd			\" start saving text
-.rs					\" don't eat leading space
-.nr id +1				\" increment level of display
-..
-.de ed					\" end display
-.br					\" flush line
-.ie \\n(id<=0 .er "end display has no corresponding begin display"
-.el \{\
-.	nr id -1			\" decrement level of display
-.	if \\n(id=0 \{\
-.		di			\" end diversion
-.		fi			\" resume filling
-.		in -\\n(piu		\" dedent
-.		ev			\" pop environment
-.		ne \\n(dnu		\" be sure you have room
-.		nf			\" don't reprocess display
-.		rs			\" don't eat leading space
-.		zi			\" save indents
-.		ie \\n(sf .in (\\n(llu-\\n(dlu)/2u	\" center on the line length
-.		el .in +\\n(piu		\" indent the sucker
-.		dd			\" drop display
-.		yi			\" restore indents
-.	\}
-.\}
-.fi					\" resume filling
-.sn \\n(pdu				\" a little bit of space
-..
-.\" **********
-.\" fonts -- if argument(s), apply only to first
-.de b					\" bold (font 3)
-.ie \\n(.$>0 \\&\\$3\\f3\\$1\\fP\\$2
-.el .ft 3
-..
-.de i					\" italics (font 2)
-.ie \\n(.$>0 \\&\\$3\\f2\\$1\\fP\\$2
-.el .ft 2
-..
-.de r					\" roman (font 1)
-.ft 1					\" just restore it
-..
-.de bi					\" bold italics (embolden font 2)
-\\&\\$3\c
-\\kb\\f2\\$1\\fP\\h'|\\nbu+2u'\\f2\\$1\\fP\\$2
-..
-.\" **********
-.\" point sizes -- if argument(s), apply only to first
-.de sm					\" reduce point size by 2
-.ie \\n(.$>0 \\&\\$3\\s-2\\$1\\s0\\$2
-.el .ps -2
-..
-.de is					\" increase point size by 2
-.ie \\n(.$>0 \\&\\$3\\s+2\\$1\\s0\\$2
-.el .ps +2
-..
-.de nl					\" return to normal size
-.ps \\n(ps				\" just reset the point size
-..
-.\" **********
-.\" handy force space/inhibit more space macros
-.de sn					\" space, then turn on nospace mode
-.sp \\$1				\" space
-.ns					\" ignore any more space requests
-..
-.de sr					\" force out space
-.rs					\" turn on spacing mode
-.sp \\$1				\" space
-..
-.\" **********
-.\" end of text and error macros
-.de et					\" end of text macro
-.br					\" flush out remaining line
-.tf					\" dump any footnotes
-.					\" check for open displays or footnotes
-.if \\n(id>0 .er "unfinished display"
-.if \\n(if>0 .er "unfinished footnote"
-.					\" this one means an -mn bug (*sigh*)
-.if !'\\n(.z'' .er "diversion \\n(.z not closed"
-..
-.de er					\" print error message
-.					\" flag it as an error
-.ds ws "** ERROR **
-.					\" if you have it, give the file name
-.if !'\\*(.f'' .as ws " file \\*(.f,
-.					\" put out the line number
-.as ws " line \\n(.c
-.					\" and finally the error message
-.tm \\*(ws: \\$1
-..
-.\" **********
-.\" macros in this section are VERY specific to the news documentation
-.de pa					\" protocol appellation (darn names!)
-\\&\\$3\\f2\\$1\\fP\\$2
-..
-.de ng					\" news group name
-\\&\\$3\\f3\\$1\\fP\\$2
-..
-.de cn					\" computer name
-\\&\\$3\\f2\\$1\\fP\\$2
-..
-.de hf					\" header field
-\\&\\$3\\*(lq\\$1\\*(rq\\$2
-..
-.de cf					\" contents of field
-\\&\\$3\\*(lq\\$1\\*(rq\\$2
-..
-.de qc					\" quote control char (command)
-\\&\\$3\\f3<\\s-2\\$1\\s0>\\fP\\$2
-..
-.de qp					\" quote printing char (command)
-\\&\\$3\\f3\\$1\\fP\\$2
-..
-.de op					\" option
-\\&\\$3\\f3\\$1\\fP\\$2
-..
-.\" **********
-.\" trademarked names
-.de pd					\" print "PDP-11"
-.ie \\n(p1 \\&\\$2\\s-1PDP\\s0-11\\$1
-.el \{\
-.	nr p1 +1			\" mark footnote as dropped
-\\&\\$2\\s-1PDP\\s0-11\\*(dg\\$1
-.	fn				\" put out the footnote
-\\&\\*(dgPDP-11 is a trademark of Digital Equipment Corporation.
-.	ef				\" short and sweet ...
-.\}
-..
-.de ux					\" print "UNIX"
-.ie \\n(ux \\&\\$2\\s-1UNIX\\s0\\$1
-.el \{\
-.	nr ux +1			\" mark footnote as dropped
-\\&\\$2\\s-1UNIX\\s0\\s-5\\u\\*(rg\\s0\\d\\$1
-.	fn				\" put out the footnote
-\\&\\s-5\\u\\*(rg\\s0\\dUNIX is a registered trademark of AT&T.
-.	ef				\" short and sweet ...
-.\}
-..
-.de vx					\" print "VAX"
-.ie \\n(vx \\&\\$2\\s-1VAX\\s0\\$1
-.el \{\
-.	nr vx +1			\" mark footnote as dropped
-\\&\\$2\\s-1VAX\\s0\\*(dg\\$1
-.	fn				\" put out the footnote
-\\&\\*(dgVAX is a trademark of Digital Equipment Corporation.
-.	ef				\" short and sweet ...
-.\}
-..
-.\" **********
-.\" set up string and number registers
-.					\" set up for the date
-.if \n(mo=1  .ds mo January
-.if \n(mo=2  .ds mo February
-.if \n(mo=3  .ds mo March
-.if \n(mo=4  .ds mo April
-.if \n(mo=5  .ds mo May
-.if \n(mo=6  .ds mo June
-.if \n(mo=7  .ds mo July
-.if \n(mo=8  .ds mo August
-.if \n(mo=9  .ds mo September
-.if \n(mo=10 .ds mo October
-.if \n(mo=11 .ds mo November
-.if \n(mo=12 .ds mo December
-.ds dy "\*(mo \n(dy, 19\n(yr
-.if \n(dw=1  .ds dw Sunday
-.if \n(dw=2  .ds dw Monday
-.if \n(dw=3  .ds dw Tuesday
-.if \n(dw=4  .ds dw Wednesday
-.if \n(dw=5  .ds dw Thursday
-.if \n(dw=6  .ds dw Friday
-.if \n(dw=7  .ds dw Saturday
-.					\" NROFF dependencies
-.if n \{\
-.					\" string registers
-.	ds dg *
-.	ds rg *
-.	ds lq ""
-.	ds rq ""
-.	ds f1 "\*(dy
-.					\" number registers
-.	nr hs 1v			\" space before section header
-.	nr pd 1v			\" inter-paragraph spacing
-.	nr bm 1.0i			\" height of bottom margin
-.\}
-.if t \{\
-.					\" string registers
-.	ds dg \(dg
-.	ds rg \(rg
-.	ds lq ``
-.	ds rq ''
-.					\" number registers
-.	nr hs 1v			\" space before section header
-.	nr pd 0.3v			\" inter-paragraph spacing
-.	nr bm 1.0i+1v			\" height of bottom margin (wacky laser)
-.\}
-.					\" these are the same for [NT]ROFF
-.ds vr "News Version B 2.11
-.ds h1 - % -
-.nr bt 0.5i+1v				\" bottom of page to footer
-.nr cm 0				\" no cut marks
-.nr fc 0 1				\" init footnote count
-.nr fl 5.5i				\" footnote line length
-.nr fp 0-\n(bmu				\" fo macro trap location
-.nr h0 0				\" init section header level 0
-.nr h1 0				\" init section header level 1
-.nr h2 0				\" init section header level 2
-.nr h3 0				\" init section header level 3
-.nr id 0				\" 1 in display
-.nr if 0				\" 1 in keep
-.nr it 0				\" 1 when beyond title, etc.
-.nr li 5n				\" indent for labelled paragraph
-.nr ll 6.5i				\" line length
-.nr lm 0				\" left margin
-.nr l0 0				\" first indent level
-.nr mt 1.5i+1v				\" title goes down this far
-.nr pi 5n				\" regular paragraph indent
-.nr po 1.0i				\" page offset
-.nr ps 10				\" point size
-.nr tm 1.0i				\" height of top margin
-.nr tt 0.5i-0.5v			\" top of page to header
-.nr p1 0				\" no PDP-TM message yet
-.nr ux 0				\" no UNIX-TM message yet
-.nr vx 0				\" no VAX-TM message yet
-.nr vs 12				\" vertical spacing
-.\" set things up
-.po \n(pou				\" set page offset
-.ps \n(ps				\" set previous, current
-.ps \n(ps				\"   point sizes
-.vs \n(vs				\" set previous, current
-.vs \n(vs				\"   vertical spacings
-.ll \n(llu				\" set line length
-.lt \n(llu				\" set title line length
-.ev 1					\" *** footnote environment
-.ps \n(ps-2p				\" set previous, current
-.ps \n(ps-2p				\"   point sizes
-.vs \n(vs-2p				\" set previous, current
-.vs \n(vs-2p				\"   vertical spacings
-.ll \n(flu				\" set line length
-.lt \n(flu				\" set title line length
-.ev					\" *** pop environment
-.ev 2					\" *** footnote environment
-.ps \n(ps				\" set previous, current
-.ps \n(ps				\"   point sizes
-.vs \n(vs				\" set previous, current
-.vs \n(vs				\"   vertical spacings
-.ll \n(llu				\" set line length
-.lt \n(llu				\" set title line length
-.ev					\" *** pop environment
-.\" install traps
-.wh 0i hd				\" position header trap
-.wh -\n(bmu fo				\" position footer trap
-.wh \n(.pu+1i fx			\" put footnote overflow trap here
-.ch fx -\n(bmu				\" move it over fo
-.wh -\n(btu pf				\" print the bottom margin here
-.em et					\" at end of file, call et
-.\" couple of miscellaneous requests
-.bd S 3 3				\" embolden special font chars if B
-.hy 2					\" don't hyphenate last lines
*-*-END-of-doc/tmac.n-*-*
echo x - doc/copyright.mn 1>&2
sed 's/.//' >doc/copyright.mn <<'*-*-END-of-doc/copyright.mn-*-*'
-.ds .f copyright.mn
-.ds h0 "Copyright Law
-.ds h1
-.ds h2 %
-.ds f0 "\*(vr
-.ds f1
-.ds f2 "February 26, 1986
-.mt
-Copyright Law
-.au
-Jordan J. Breslow
-.ai
-1225 Alpine Road, Suite 200
-Walnut Creek, CA 94596
-+1 415 932 4828
-.bt
-.fn
-\(co Copyright 1986 Breslow, Redistributed by permission
-.ef
-.pg
-I am an attorney practicing copyright law and computer
-law.  I read a series of queries in net.legal about
-copyright law and was dismayed to find that people who
-had no idea what they were talking about were spreading
-misinformation over the network.  Considering that the
-penalties for copyright infringement can include
-$50,000.00 damages per infringed work, attorneys fees,
-court costs, criminal fines and imprisonment, and
-considering that ignorance is no excuse and innocent
-intent is not even a recognized defense, I cringe to see
-the network used as a soapbox for the ill-informed.  For
-that reason, this article will discuss copyright law and
-license law as they pertain to computer software.
-.pg
-My goal is to enable readers to determine when they
-should be concerned about infringing and when they can
-relax about it.  I also want to let programmers know how
-to obtain copyright for their work.  I'll explain the
-purpose of software licenses, and discuss the effect
-that the license has on copyright.  For those of you who
-are programmers, I'll help you decide whether you own
-the programs you write on the job or your boss owns
-them.  I will also mention trademark law and patent law
-briefly, in order to clarify some confusion about which
-is which.  Incidentally, if you read this entire essay,
-you will be able to determine whether or not the essay
-is copyrighted and whether or not you can make a
-printout of it.
-.pg
-This is a long article, and you may not want to
-read all of it.  Here is an outline to help you decide
-what to read and what to ignore:
-.nf
-.si 10
-1.	The Meaning of Copyright from the Viewpoint of the Software User
-1.1	A bit of history
-1.2	The meaning of \f2copyright\fP
-1.3	The meaning of \f2public domain\fP
-1.4	A hypothetical software purchase
-1.5	Can you use copyrighted software?
-1.6	Can you make a backup copy?
-1.7	Licenses may change the rules
-1.8	Can you modify the program?
-1.9	Can you break the copy protection scheme?
-1.10	Summary
-.sp
-2.	Copyright Sounds Neat -- How Do I Get One? Or, How Do I Know If
-	this Program is Copyrighted?
-2.1	How do you get a copyright?
-2.2	How do you lose a copyright?
-2.3	How do you waste a stamp?
-2.4	Do you have to register?
-2.5	How copyright comes into existence
-2.6	The copyright notice
-2.7	Advantages of registration
-2.8	A test to see if you understand this article
-.sp
-3.	Who Owns The Program You Wrote?
-3.1	Introduction
-3.2	Programs written as an employee
-3.3	Programs written as a contractor
-.sp
-4.	A Brief Word about Licenses
-4.1	Why a license?
-4.2	Is it valid?
-.sp
-.5	I Have a Neat Idea.  Can I Trademark it? What about a Patent?
-5.1	Trademark law explained
-5.2	Patent law
-.sp
-6.	Conclusion
-.ei
-.fi
-.sp 2
-.hn 1
-The Meaning of Copyright from the Viewpoint of the Software User
-.hn 2
-A bit of history
-.pg
-If you're not interested in history, you can
-skip this paragraph.
-.i Modern
-copyright law first came
-into existence in 1570,  by an act of Parliament called
-the Statute of Anne.  Like most laws, it hasn't changed
-much since.  It was written with books and pictures in
-mind.  Parliament, lacking the foresight to predict the
-success of the Intel and IBM corporations, failed to
-consider the issue of copyrighting computer programs. 
-.pg
-At first, courts questioned whether programs could be
-copyrighted at all.  The problem was that judges
-couldn't read the programs and they figured the
-Copyright Law was only meant to apply to things humans
-(which arguably includes judges) could read without the
-aid of a machine.  I saw some mythical discussion about
-that in some of the net.legal drivel.  Let's lay that to
-rest:  programs are copyrightable as long as there is
-even a minimal amount of creativity.  The issue was laid
-to rest with the Software Act of 1980.  That Act
-modified the Copyright Act (which is a Federal law by
-the way), in such a way as to make it clear that
-programs are copyrightable.  The few exceptions to this
-rule will rarely concern anyone.  The next question to
-arise was whether a program was copyrightable if it was
-stored in ROM rather than on paper.   The decision in
-the Apple v. Franklin case laid that to rest:  it is.
-.hn 2
-The meaning of \f2copyright\fP
-.pg
-Now, what is copyright?  As it is commonly
-understood, it is the right to make copies of something
--- or to put it the other way around, it is the right to
-prohibit other people from making copies.  This is known
-as an exclusive right -- the exclusive right to
-.i reproduce ,
-in the biological language of the Copyright
-Act -- and what most people don't know is that copyright
-involves not one, not two, but five exclusive rights.   
-These are (1) the exclusive right to make copies, (2)
-the exclusive right to distribute copies to the public,
-(3) the exclusive right to prepare 
-.i "derivative works"
-(I'll explain, just keep reading), (4) the exclusive
-right to perform the work in public (this mainly applies
-to plays, dances and the like, but it could apply to
-software), and (5) the exclusive right to display the
-work in public (such as showing a film).
-.hn 2
-The meaning of \f2public domain\fP
-.pg
-Before we go any further, what is public
-domain?  I saw some discussion on the net about public
-domain software being copyrighted.  Nonsense.  The
-phrase 
-.i "public domain,"
-when used correctly, means the
-absence of copyright protection.  It means you can copy
-public domain software to your heart's content.  It
-means that the author has none of the exclusive rights
-listed above.  If someone uses the phrase
-.i "public domain"
-to refer to
-.i freeware
-(software which is copyrighted but is distributed without advance payment
-but with a request for a donation), he or she is using
-the term incorrectly.  Public domain means no copyright
--- no exclusive rights.
-.hn 2
-A hypothetical software purchase
-.pg
-Let's look at those exclusive rights from the
-viewpoint of someone who has legitimately purchased a
-single copy of a copyrighted computer program.  For the
-moment, we'll have to ignore the fact that the program
-is supposedly licensed, because the license changes
-things.  I'll explain that later.  For now, assume you
-went to Fred's Diner and Software Mart and bought a
-dozen eggs, cat food and a word processing program.  And
-for now, assume the program is copyrighted.
-.hn 2
-Can you use copyrighted software?
-.pg
-What can you do with this copyrighted
-software?  Let's start with the obvious:  can you use it
-on your powerful Timex PC?  Is this a joke?  No.  Prior
-to 1980, my answer might have been No, you can't use it!
-.pg
-People actually pay me for advice like that!  Well
-think:  you take the floppy disk out of the zip lock
-baggy, insert it in drive A and load the program into
-RAM.  What have you just done?  You've made a copy in
-RAM -- in legalese, you've reproduced the work, in
-violation of the copyright owner's exclusive right to
-reproduce.  (I better clarify something here:  the
-copyright owner is the person or company whose name
-appears in the copyright notice on the box, or the disk
-or the first screen or wherever.  It may be the person
-who wrote the program, or it may be his boss, or it may
-be a publishing company that bought the rights to the
-program.  But in any case, it's not you. When you buy a
-copy of the program, you do not become the copyright
-owner.  You just own one copy.)
-.pg
-Anyway, loading the program into RAM means
-making a copy.  The Software Act of 1980 addressed this
-absurdity by allowing you to make a copy if the copy \*(lqis
-created as an essential step in the utilization of the
-computer program in conjunction with a machine and ...
-is used in no other manner ....\*(rq  By the way,
-somebody tell me what 
-.i "a machine"
-means.  If you connect
-5 PC's on a network is that 
-.i "a machine"
-or
-.i "several machines" ?
-A related question is whether or not running
-software on a network constitutes a performance.  The
-copyright owner has the exclusive right to do that,
-remember?
-.hn 2
-Can you make a backup copy?
-.pg
-OK, so you bought this copyrighted program
-and you loaded it into RAM or onto a hard disk without
-the FBI knocking on your door.  Now can you make a
-backup copy? 
-.b YES .
-The Software Act also provided that
-you can make a backup copy, provided that it \*(lqis for
-archival purposes only ....\*(rq  What you cannot do,
-however, is give the archive copy to your friend so that
-you and your pal both got the program for the price of
-one.  That violates the copyright owner's exclusive
-right to distribute copies to the public.  Get it?  You
-can, on the other hand, give both your original and
-backup to your friend -- or sell it to him, or lend it
-to him, as long as you don't retain a copy of the
-program you are selling.  Although the copyright owner
-has the exclusive right to distribute (sell) copies of
-the program, that right only applies to the first sale
-of any particular copy.  By analogy, if you buy a
-copyrighted book, you are free to sell your book to a
-friend.  The copyright owner does not have the right to
-control resales.  
-.hn 2
-Licenses may change the rules
-.pg
-At this point, let me remind you that we have
-assumed that the program you got at the store was sold
-to you, not licensed to you.  Licenses may change the
-rules.
-.hn 2
-Can you modify the program?
-.pg
-Now, you're a clever programmer, and you know
-the program could run faster with some modifications. 
-You could also add graphics and an interactive mode and
-lots of other stuff.  What does copyright law say about
-your plans?  Well ... several different things,
-actually.  First, recall that the copyright owner has
-the exclusive right to make derivative works.  A
-derivative work is a work based on one or more
-preexisting works.  It's easy to recognize derivative
-works when you think about music or books.  If a book is
-copyrighted, derivative works could include a
-screenplay, an abridged edition, or a translation into
-another language.  Derivative works of songs might be
-new arrangements (like the jazz version of Love Potion
-Number 9), a movie soundtrack, or a written
-transcription, or a 
-.i "long version" ,
-(such as the fifteen minute version of \*(lqWipe Out\*(rq with an extended
-drum solo for dance parties).  In my opinion, you are making a
-derivative work when you take the store-bought word
-processor and modify it to perform differently.  The
-same would be true if you 
-.i translated
-a COBOL program
-into BASIC.  Those are copyright infringements -- you've
-horned in on the copyright owner's exclusive right to
-make derivative works.  There is, however, some
-breathing room.  The Software Act generously allows you
-to 
-.i adapt
-the code if the adaptation \*(lqis created as an
-essential step in the utilization of the computer
-program in conjunction with a machine ....\*(rq  For
-example, you might have to modify the code to make it
-compatible with your machine.
-.hn 2
-Can you break the copy protection scheme?
-.pg
-Moving right along, let's assume your store
-bought program is copy protected, and you'd really like
-to make a backup copy.  You know this nine-year-old whiz
-who can crack any copy-protection scheme faster than you
-can rearrange a Rubix cube.  Is there a copyright
-violation if he succeeds?  There's room to argue here. 
-When you try to figure out if something is an
-infringement, ask yourself, what exclusive right am I
-violating?  In this case, not the right to make copies,
-and not the right to distribute copies.  Public
-performance and display have no relevance.  So the key
-question is whether you are making a 
-.i "derivative work" .
-My answer to that question is, \*(lqI doubt it.\*(rq  On the
-other hand, I also doubt that breaking the protection
-scheme was \*(lqan essential step\*(rq in using the program in
-conjunction with a machine.  It might be a \*(lqfair use,\*(rq
-but that will have to wait for another article.  Anyone
-interested in stretching the limits of the \*(lqfair use\*(rq
-defense should read the Sony 
-.i Betamax
-case.
-.hn 2
-Summary
-.pg
-Let me summarize. Copyright means the
-copyright owner has the exclusive right to do certain
-things. Copyright infringement means you did one of
-those exclusive things (unless you did it within the
-limits of the Software Act, i.e., as an essential step ....).
-.hn 1
-Copyright Sounds Neat -- How Do I Get One?  Or, How Do I Know if this Program is Copyrighted?
-.hn 2
-How do you get a copyright?
-.pg
-If you've written an original program, what do you have to do to get a
-copyright? Nothing. You already have one.
-.hn 2
-How do you lose a copyright?
-.pg
-If you've written an original
-program, what do you have to do to lose your copyright
-protection?  Give copies away without the copyright
-notice.
-.hn 2
-How do you waste a stamp?
-.pg
-If you mail the program to yourself
-in a sealed envelope, what have you accomplished? 
-You've wasted a stamp and an envelope and burdened the
-postal system unnecessarily.
-.hn 2
-Do you have to register?
-.pg
-Do you have to register your program
-with the U.S. Copyright Office?  No, but it's a damn
-good idea.
-.hn 2
-How copyright comes into existence
-.pg
-Copyright protection (meaning the five
-exclusive rights) comes into existence the moment you
-.i fix
-your program in a 
-.i "tangible medium" .
-That means
-write it down, or store it on a floppy disk, or do
-something similar.  Registration is optional.  The one
-thing you must do, however, is protect your copyright by
-including a copyright notice on every copy of every
-program you sell, give away, lend out, etc.  If you
-don't, someone who happens across your program with no
-notice on it can safely assume that it is in the public
-domain (unless he actually knows that it is not).  
-.hn 2
-The copyright notice
-.pg
-The copyright notice has three parts.  The
-first can be either a c with a circle around it (\(co), or the
-word 
-.b Copyright
-or the abbreviation 
-.b Copr.
-The c
-with a circle around it is preferable, because it is
-recognized around the world; the others are not.  That's
-incredibly important.  Countries around the world have
-agreed to recognize and uphold each others' copyrights,
-but this world-wide protection requires the use of the c
-in a circle.  On disk labels and program packaging, use
-the encircled c.  Unfortunately, computers don't draw
-small circles well, so programmers have resorted to a c
-in parentheses: (c).  Too bad.  That has no legal
-meaning.  When you put your notice in the code and on
-the screen, use 
-.b Copyright
-or 
-.b Copr.
-if you can't make a circle.
-.pg
-The second part of the notice is the \*(lqyear
-of first publication of the work.\*(rq  
-.i Publication
-doesn't mean distribution by Osborne Publishing Co.  It
-means distribution of copies of the program to the
-public \*(lqby sale or other transfer of ownership, or by
-rental, lease, or lending.\*(rq  So when you start handing
-out or selling copies of your precious code, you are
-publishing.  Publication also takes place when you
-merely OFFER to distribute copies to a group for further
-distribution.  Your notice must include the year that
-you first did so.
-.pg
-The third part of the notice is the name of
-the owner of the copyright.  Hopefully, that's you, in
-which case your last name will do.  If your company owns
-the program -- a legal issue which I will address later
-in this article -- the company name is appropriate.
-.pg
-Where do you put the notice?  The general
-idea is to put it where people are likely to see it. 
-Specifically, if you're distributing a human-readable
-code listing, put it on the first page in the first few
-lines of code, and hard code it so that it appears on
-the title screen, or at sign-off, or continuously.  If
-you're distributing machine-readable versions only, hard
-code it.  As an extra precaution, you should also place
-the notice on the gummed disk label or in some other
-fashion permanently attached to the storage medium.
-.hn 2
-Advantages of registration
-.pg
-Now, why register the program?  If no one
-ever rips off your program, you won't care much about
-registration.  If someone does rip it off, you'll kick
-yourself for not having registered it.  The reason is
-that if the program is registered before the
-infringement takes place, you can recover some big bucks
-from the infringer, called statutory damages, and the
-court can order the infringer to pay your attorneys
-fees.  Registration only costs $10.00, and it's easy to
-do yourself.  The only potential disadvantage is the
-requirement that you deposit the first and last 25 pages
-of your source code, which can be inspected (but not
-copied) by members of the public.  
-.hn 2
-A test to see if you understand this article
-.pg
-Now, someone tell me this:  is this article copyrighted?  Can you print it?
-.hn 1
-Who Owns The Program You Wrote?
-.hn 2
-Introduction
-.pg
-The starting point of this analysis is that if you wrote
-the program, you are the author, and copyright belongs
-to the author.  HOWEVER, that can change instantly. 
-There are two common ways for your ownership to shift to
-someone else:  first, your program might be a \*(lqwork for
-hire.\*(rq  Second, you might sell or assign your 
-.i rights
-in the program, which for our purposes means the
-copyright.  
-.hn 2
-Programs written as an employee
-.pg
-Most of the programs which you write at
-work, if not all of them, belong to your employer. 
-That's because a program prepared by an employee within
-the scope of his or her employment is a \*(lqwork for hire,\*(rq
-and the employer is considered the 
-.i author .
-This is more or less automatic if you are an employee -- no
-written agreement is necessary to make your employer the
-copyright owner.  By contrast, if you can convince your
-employer to let you be the copyright owner, you must
-have that agreement in writing.
-.pg
-By the way, before you give up hope of
-owning the copyright to the program you wrote at work,
-figure out if you are really an employee.  That is
-actually a complex legal question, but I can tell you
-now that just because your boss says you are an employee
-doesn't mean that it's so.  And remember that if you
-created the program outside the 
-.i scope
-of your job, the
-program is not a \*(lqwork for hire.\*(rq  Finally, in
-California and probably elsewhere, the state labor law
-provides that employees own products they create on
-their own time, using their own tools and materials. 
-Employment contracts which attempt to make the employer
-the owner of those off-the-job 
-.i inventions
-are void, at least in sunny California.
-.hn 2
-Programs written as a contractor
-.pg
-Wait a minute:  I'm an independent
-contractor to Company X, not an employee.  I come and go
-as I please, get paid by the hour with no tax withheld,
-and was retained to complete a specific project.  I
-frequently work at home with my own equipment.  Is the
-program I'm writing a \*(lqwork for hire,\*(rq owned by the
-Company?  Maybe, maybe not.  In California, this area is
-full of landmines for employers, and gold for
-contractors.
-.pg
-A contractor's program is not a \*(lqwork for
-hire,\*(rq and is not owned by the company, unless (1) there
-is a written agreement between the company and the
-contractor which says that it is, and (2) the work is a
-.i "commissioned work" .
-A
-.i "commissioned work"
-is one of
-the following:  (a)  a contribution to a 
-.i "collective work" ,
-(b) an audiovisual work (like a movie, and maybe like a video game),
-(c) a translation, (d) a compilation, (e) an instructional text,
-(f) a test or answer to a test, or (g) an atlas.  I know you must be
-tired of definitions, but this is what the real legal
-world is made of.  An example of a  collective work is a
-book of poetry, with poems contributed by various
-authors.  A piece of code which is incorporated into a
-large program isn't a contribution to a collective work,
-but a stand-alone program which is packaged and sold
-with other stand-alone programs could be.   
-.pg
-So where are we?  If you are a contract
-programmer, not an employee, and your program is a
-.i "commissioned work" ,
-and you have a written agreement
-that says that the program is a \*(lqwork for hire\*(rq owned by
-the greedy company, who owns the program?  That's right,
-the company.  But guess what?  In California and
-elsewhere the company just became your employer!  This
-means that the company must now provide worker's
-compensation benefits for you
-.b "AND UNEMPLOYMENT INSURANCE" .
-.hn 1
-A Brief Word About Licenses. 
-.hn 2
-Why a license?
-.pg
-When you get software at the local five and dime, the
-manufacturer claims that you have a license to use that
-copy of the program.  The reason for this is that the
-manufacturer wants to place more restrictions on your
-use of the program than copyright law places.  For
-example, licenses typically say you can only use the
-program on a single designated CPU.  Nothing in the
-copyright law says that.  Some licenses say you cannot
-make an archive copy.  The copyright law says you can,
-remember?  But if the license is a valid license, now
-you can't.  You can sell or give away your copy of a
-program if you purchased it, right?  That's permitted by
-copyright law, but the license may prohibit it.  The
-more restrictive terms of the license will apply instead
-of the more liberal copyright rules.
-.hn 2
-Is it valid?
-.pg
-Is the license valid?  This is hotly debated
-among lawyers.  (What isn't?  We'll argue about the time
-of day.)  A few states have passed or will soon pass
-laws declaring that they are valid.  A few will go the
-other way.  Federal legislation is unlikely.  My
-argument is that at the consumer level, the license is
-not binding because there is no true negotiation (unless
-a state law says it is binding), but hey that's just an
-argument and I'm not saying that that's the law.  In any
-case, I think businesses which buy software will be
-treated differently in court than consumers.  Businesses
-should read those licenses and negotiate with the
-manufacturer if the terms are unacceptable.  
-.hn 1
-I Have A Neat Idea. Can I Trademark It?  What About patent?
-.hn 2
-Trademark law explained
-.pg
-Sorry, no luck.  Trademark law protects names:  names of
-products and names of services.  (Note that I did not
-say names of companies.  Company names are not
-trademarkable.)  If you buy a program that has a
-trademarked name, all that means is that you can't sell
-your own similar program under the same name.  It has
-nothing to do with copying the program.  
-.hn 2
-Patent Law
-.pg
-Patent law can apply to computer programs,
-but it seldom does.  The main reasons it seldom applies
-are practical:  the patent process is too slow and too
-expensive to do much good in the software world.  There
-are also considerable legal hurdles to overcome in order
-to obtain a patent.  If, by chance, a program is
-patented, the patent owner has the exclusive right to
-make, use or sell it for 17 years.
-.hn 1
-CONCLUSION
-.pg
-I know this is a long article,
-but believe it or not I just scratched the surface. 
-Hopefully, you'll find this information useful, and
-you'll stop passing along myths about copyright law.  If
-anyone needs more information, I can be reached at the
-address on the first page.
-Sorry, but I do not usually have
-access to the network, so you can't reach me there. 
-.sp
-Thank you.  JORDAN J. BRESLOW
*-*-END-of-doc/copyright.mn-*-*
sed 's/.//' >doc/patchlevel.doc <<'*-*-END-of-doc/patchlevel.doc-*-*'
0
*-*-END-of-doc/patchlevel.doc-*-*
exit



More information about the Mod.sources mailing list