[CSUSB] >> [CompSci] >> [Dick Botting] >> [Papers & Essays] >> rjb99f.open
[Index] || [Contents]
Disclaimer. CSUSB and the CS Dept have no responsibility for it.
This is a Beta Version, read at your own risk.
Copyright. Richard J. Botting(Sun Jul 6 10:03:45 PDT 2003). This paper is being developed for publication. Permission is granted to quote parts of it as long as the source is acknowledged and the author informed.

Contents (index)

    Most Software should be Open Source

    Requirements for a Democracy

    Lincoln described a democracy as the government of the people, by the people, and for the people. How can a computerized democracy meet these requirements? Ted Nelson's "Computer Lib" expressed one criterion. He wrote "You can and must learn about computers, now." He stressed the danger of the computer being used as an excuse for oppression. Seymour Papert created Logo so that children would learn to program rather than learning to be programmed by others. Both argued that everybody must become computer literate. Another requirement is universal access to the technology. The USA government is now debating universal access.

    Computer literacy and universal access is a necessary condition for a cybernetic democracy. It is not sufficient. The democratic answer to "Who watches the watchers" is "We all do." Democratic procedures and decisions need review. In an automated system, software expresses the procedures and decisions. In a democracy, the source code must be open to review. So, the Open Source movement points the way to democratic software.


    Some people will object to my proposal for open government source code. I will tackle some objections next. First, open code is orthogonal to political arguments about how much government is desirable. Open Source is a principle of democracy because the people have the right to criticize their government. Second, open source code should not breach personal privacy. Source code is not the data. It describes how to classify and process the data. Democratic policies must not refer to individuals. For example, no democratic act should double the taxes of the individual with identifier 123-45-6789. If government software did this, it is wrong. Government source code must be free of personal data. So, individual privacy does not stop the publication of source code.

    I see no technical problem with making copies of source code available to the public. Source code is in the MIME plaintext family of codes and so compatible with the HyperText Transfer Protocol. Government agencies can easily place copies of the code on the World Wide Web. Anyone with a simple browser in a public library can then read these files and form an opinion about whether they can trust them.

    Criminals may want their work to be hidden. Tests cannot show that a program is correct. Suppose I change the software that selects people for a tax audit so that my number never comes up. Nobody is likely to find this out by testing the system! Peer reviews efficiently detect errors like this in industry. Code review is a tool of the Open Source movement. Peer reviews are even part of the academic life. In a democracy, the people are the peers.

    Elitist programmers may argue that normal people cannot understand their code. However, I have found that all kinds of people can understand computers. Most can learn to understand code. Many discover the pleasure of finding errors and mistakes in it. When people review my code, "dumb questions" expose my worst bugs. The Open Source movement put it like this: "All bugs are shallow if sufficient eyeballs look at the code." In other words, "A bug can hide from some of the people all of the time and all of the people some of the time, but not all of the people all of the time." Code that we cannot understand needs fixing!

    Risky projects in particular should have thousands of critics looking at the code. I want to study the code of an x-ray therapy machine before submitting myself to it. Perhaps I should have the right to look at my bank's source code to see if a Y2K bug will wreck my account.

    Things that should be Hidden

    So what might remain hidden? There are only three reasons for secret source code: trade secrets, national security, and personal privacy. Data encryption keys may be hidden, but encryption algorithms may hide biases and bugs. Perhaps we should not expose the authors of software to public revenge. Thus, the names of programmers and encryption keys might be the only parts of open software that remains secret.

    . . . . . . . . . ( end of section Most Software should be Open Source) <<Contents | Index>>

Formulae and Definitions in Alphabetical Order