functional vs. expressive

Kragen Sitaker (kragen@pobox.com)
Mon, 10 May 1999 12:25:59 -0400 (EDT)


The arguments of the government in the Bernstein case were based on the
line that source code was functional, like a bomb, and therefore
not subject to first-amendment protection.

The majority opinion from the 9th Circuit was based on the finding that
source code was often expressive, although it could also be functional,
and therefore was subject to first-amendment protection.

The dissenting opinion argued that source code was primarily functional
and only secondarily expressive.

The trouble with this is that the distinction between 'functional' and
'expressive' is illusory.

I think it is 'expressive' if I explain to someone how to pick a lock,
make a bomb, or aim a gun. Instructions on how to do these things are
subject to full First Amendment protection, just as much as protests
against govenrmental policies, according to my limited understanding of
the law.

The trouble is, we have these devices that know how to follow
directions, called computers. A computer can follow a set of
instructions if it
1. is sufficiently detailed,
2. is written in a language the computer can understand, and
3. contains only steps the computer can follow.

So suddenly a set of instructions becomes 'functional'.

Not long ago, Schneier published a cryptosystem intended to be carried
out with a deck of cards. It included detailed instructions in
English. He also included an implementation in Perl.

I could write another implementation in C and compile it into machine
code. I could then translate the machine code back into English. It
would be considerably longer than the original English, and would
probably be better carried out with a pencil and paper than with a deck
of cards, since the computer instructions speak in terms of memory
locations and additions, not cards (since few computers are equipped
with card-handling hardware). Still, it would be a set of instructions
that clearly explained how to do a particular task, that of encoding a
message in such a way that it could not be read without the proper
key.

It seems to me that the suppression of publication of such a set of
English instructions would be a totalitarian act, an act not to be
tolerated. But the machine-code equivalent says nothing that the
English instructions do not, and serves exactly the same purpose -- to
convey information on how to execute the algorithm. The only
difference is that the machine-code instructions are encoded for the
convenience of a machine's reading, not for the convenience of a human
reader.

For this reason, it seems to me that the suppression of the publication
of the machine code is just as grave an offense against the right of
free speech as the suppression of the English instructions. Obviously
several judges (the dissenting opinion's author and the judge in
Junger, and possibly even the circuit-court judges upholding the lower
court's opinion in the Bernstein case) disagree with me. Why? Is it
because they understand something I don't, or vice versa?

-- 
<kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
TurboLinux is outselling NT in Japan's retail software market 10 to 1,
so I hear. 
-- http://www.performancecomputing.com/opinions/unixriot/981218.shtml