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