CSC 379: Ethics in Computing  
  Summer II 2006  
 
 
 
 
   
   
   
   
  COURSE OVERVIEW  
  This course is a survey of professional and ethical issues in Computer Science. It discusses professional issues that an engineer will encounter on the job, and the way that modern technologies pose ethical issues. It stresses case studies that relate to ethical theory.  
     
  INSTRUCTOR  
  Edward F. Gehringer
Office: 2301 Partners I
(919) 515-2066
Office hours:
M 3:30-4:20
W 2:20-3:10
efg@ncsu.edu
 
     
  TEACHING ASSISTANT  
  John Doe
jd@ncsu.edu
919-513-xxxx
 
     
 
   
Lecture 7: Interoperability & Open Source
 
   

Interoperability. In the early days of the telephone, several competing companies sprang up. Each had their own telephone lines, and the customers of one company could only make calls to other subscribers to the same company. Businesses would often have several different telephones, one for each company, so that anyone could phone them.

In the early decades of the twentieth century--between 1910 and 1920, if I recall correctly--things began to change. Telephone systems were hooked together so that anyone with a telephone could call anyone else. History was repeated in the early days of online computing services. Industry leader CompuServe, America Online, and Prodigy each had their own networks, with their own content providers. Sometimes major content providers, e.g., news organizations, would have different keywords or commands on different online services. Subscribers to one could e-mail only subscribers of the same service. Then in the early 1990s, all of these services established Internet gateways so their clients could send mail to any Internet address, including e-mail addresses of their competitors' subscribers. Content providers migrated to the World-Wide Web, so they were accessible from any service.

These are two examples of interoperability, which is becoming critically important in today's software systems. Wordprocessors, for example, need to be able to import graphics files, and desktop-publishing programs need to be able to import wordprocessor files. If they did not, prospective purchasers would probably not buy them.

The need for interoperability raises several ethical issues. How can a new software package be made interoperable with an existing software package without violating the intellectual-property rights of the existing software manufacturer? Is it ethical for a software publisher to design its software in such a way that it is hard or impossible for other programs to become interoperable with it? Does it make any difference if the software publisher is a market leader trying to keep new entrants out of the field? Is it ethical for a company to arrange its hardware or software so that all competitors that desire their products to be interoperable must pay the first company a royalty for use of its patent? Many of these issues have been settled legally, but ethical questions still persist.

User-interface copyright. Let us first revisit the issue of user-interface copyright, which arose first in Lecture 3. We found that there are many reasons why user-interface copyright might be considered harmful. Prominent among them was the fact that it discourages interoperability. One of the first cases in this area was Lotus v. Paperback Software. In 1987, Lotus sued Paperback Software for copyright infringement because its VP-Planner spreadsheet program had an identical user interface. Paperback had advertised their program as "a workalike for 1-2-3 ... designed to work like 1-2-3, keystroke for keystroke. ... everything that 1-2-3 does, VP-Planner does ..." The two programs were entirely interoperable; VP-Planner could open 1-2-3 files and even execute 1-2-3 macros, and vice versa. The court decided that Paperback had infringed the Lotus copyright. It decided that the menu structure was part of "the expression of an idea," which is protected by copyright, rather than an idea, which is not copyrightable. The decision noted that other spreadsheet programs, such as Microsoft Excel, were successful despite using a different menu structure. Moreover, since VP-Planner didn't do anything that 1-2-3 couldn't do, the functionality of one was just a copy of the functionality of the other.

Thus, legally it is established that a program that aims to duplicate another program's functionality completely is an illegal copy. Suppose the functionality is only partially duplicated? In this case, courts have reached different conclusions. Flush from its victory over Paperback Software, Lotus went on to sue Borland International, whose Quattro spreadsheet program had similar functionality to 1-2-3, including keystroke sequences, but had different menu structures and visual appearances. The judge ruled in favor of Lotus in this case too. The decision seemed to ignore the advantages that compatibility and standardization bring to the computer industry. In 1988, however, Apple sued Hewlett-Packard and Microsoft, alleging that the GUI in their Windows and New Wave operating systems, respectively, were illegal copies of the Macintosh user interface. Ultimately, in 1992, the court ruled that Windows and New Wave did not infringe on the Apple copyright, except for New Wave's file-folder and trash-can icons. So, the legality of copying "look and feel" remains an open question.

Gaining competitive advantage. If programs need to interoperate smoothly to be successful, then Company A might seek competitive advantage by making it hard for their competitors' programs to interoperate with Company A's programs. Obviously this only makes sense if Company A is much larger than its competitors. This could be deemed an anticompetitive practice. In previous semesters of this course, we used to consider anticompetitive practices in general, focusing on the Microsoft case. Now that it has passed from the headlines, let us consider only anticompetitive denials of interoperability.

The best known allegation of anticompetitive use of interoperability is the Windows 98 browser controversy. In its antitrust case against Microsoft, the Justice Department contended that Microsoft made it difficult for users to make Netscape Navigator their default browser on Windows 98, thus contributing to Internet Explorer's increasing market share. Microsoft, for its part, had said that Win 98 was going to make it easier to make Navigator the default.

If the charges against Microsoft are true, then that would be an ethical as well as legal violation. Consumers--the public--are better off when companies compete to produce better products. If one accepts this premise, then from a utilitarian view, it is better to have competition. Therefore, actions that seek to restrict free competition are unethical. Companies may see their own self-interest as enhanced by driving all competitors out of business, so there are laws that prevent them from attempting to do so by "unfair" means.

Another case involving Microsoft is Sun's allegation that Microsoft violated their license agreement by extending Java in a way that compromised interoperability. Java is touted as a language that permits programmers to "write once, run anywhere." Sun sued Microsoft for extending Java to make it run better with Windows. This meant that programmers could now write code in Microsoft's Java that would run on Windows systems but nowhere else, thus violating the principle that Java programs are supposed to be interoperable cross platform. Since Windows has such a large market share, many Java programs might have been written with Microsoft's version, eventually outnumbering the Java programs that can "run anywhere," and thus obviating one of the major advantages of the language. A federal court agreed with Sun that this violated Sun's license agreement for Java, and forced Microsoft to make its Java interoperable with Sun's.

Again, an ethical analysis might begin by considering the benefits of interoperability, and weighing them against the benefits of better integration with a single operating system. It would also have to take into account that Microsoft agreed not to (or at least Sun thought they were agreeing not to) make incompatible changes to Java. Under this interpretation, Microsoft was breaking a promise and thus was guilty of an ethical transgression.

Interoperability is the reason that industry standards are set. In the computer field, a lot of standards relate to buses, because if different devices can attach to the same bus, a system designer can choose among competitive products in building a system. The technology involved in the design of a bus is often patented. The American National Standards Institute (ANSI) will not let a company holding a patent use standard-setting as an excuse to take advantage of its competitors. If the patent owner actively promotes a patented invention as an industry standard, it can expect to have limitations be placed on the exercise of its patent rights. For example, it may be required to license the patent to companies that implement the standard on reasonable, nondiscriminatory terms.

In 1992, a standard was set for a new VL-bus for carrying video information between a computer and its peripherals. Dell Computer was a member of the industry standard-setting organization. When the standard was under negotiation, a Dell representative signed a certificate stating that "to the best of [his] knowledge," the standard did not "infringe on any trademarks, copyrights, or patents" held by Dell. Then about eight months after the VL-bus standard was approved, after the standard had been widely adopted, Dell informed certain companies that their implementation of the standard infringed a 1991 Dell patent. The Federal Trade Commission called this an "unfair method of competition, outlawed by Section 5 of the FTC Act. It stepped in and issued a proposed consent decree that prevented Dell from asserting its patent rights in the standard.

Reverse engineering. Suppose you are developing a new application which needs to be compatible with an existing piece of software from another vendor. That vendor may or may not give you the interface specs that you need in order to make your application interoperate. If the other vendor is unwilling to cooperate with you, you may decide to figure out what your program needs to do to be compatible by examining the code for the application it needs to interoperate with. Most applications are distributed in object-code format. Obviously you can't work with that; you need a human-readable version. So you decompile or disassemble it into a format you can read. You have just made a copy, unauthorized by the vendor. Have you violated the copyright?

No, you have probably not violated the copyright. In the case of Sega v. Accolade, the Ninth Circuit Court of Appeals found that decompilation does not violate copyright when there is no other way to gain access to the functional requirements for interoperability, which are not protected by copyright. Accolade was a developer of home computer games that wanted to expand its line to include games compatible with the Genesis console produced by Sega. Sega was willing to allow Accolade and other developers to develop games for its console, but only if Sega could manufacture the games themselves. Toward this end, they withheld information that Accolade would have needed to develop compatible games. To discover the withheld interface requirements, Accolade decompiled Sega's copyrighted microcode.

The Sega decision certainly makes it easier for startups in the software field, since it might otherwise be expensive to license competitive technology. In other fields, which rely on patent rather than copyright protection, it is legal to reverse-engineer competitors' products; why should the software field be any different?

If a company refuses interface specs to those who want to produce interoperable software, it is probably not going to be happy if they reverse-engineer its code. So, we should not be surprised that such companies frequently develop "lock-out" defenses to make it harder to reverse-engineer. In the Sega case, when Accolade was trying to reverse-engineer the code for the Sega console, Sega changed its console to search for four bytes of data at a specific location, and if those bytes did not match, the console would not allow the game to operate. Accolade's engineers managed to figure this out, and modified their games to include the required data. It was at this point that Sega sued. Sega prevailed in district court, but the decision was overturned on appeal.

A similar case is Atari v. Nintendo. To ensure that only video games developed by Nintendo or its authorized licensees would operate on its NES console, Nintendo developed a "security system" for the NES. The system consists of two chips, one in the console and one in the game cartridge. The two chips exchange a sequence of values generated from a random-number seed. The console then compares the results. If the last five digits match, the console accepts the cartridge and starts the game. Otherwise, the game will not operate.

Atari tried to reverse-engineer a chip that could allow its game cartridges to work in Nintendo's console. But, initially unsuccessful, they negotiated to become a Nintendo licensee. Unhappy with Nintendo's terms, they continued their reverse-engineering efforts, and ultimately produced a program that could fool the Nintendo console. Nintendo sued for copyright and patent violation. The court sided with Nintendo. This case was different from Sega in two salient facts: First, Nintendo's security system was patented, and as we have seen, independent development violates a patent but not a copyright. Second, Atari got a copy of Nintendo's security chip's program from the Copyright Office, on the grounds that they were a defendant in a copyright-infringement suit involving the program. Since no suit had been filed at that point, Atari had committed fraud on the Copyright Office.

In this case, it was not the reverse engineering that was illegal, but rather fraud and patent infringement. That is not to say, however, that reverse engineering itself is always ethical. The Online Ethics Center raises a hypothetical case in which one device misleads another as to its manufacturer. Serious questions arise as to whether this is ethical.

However, recent court decisions have begun to erode the right to reverse-engineer. Most of these decisions are based on trade-secrecy laws or shrink-wrap license agreements. Two prominent decisions from last year prohibited programmers from placing on the Web programs that unscrambled encryption protections on DVDs, and revealed a parent's password to the CyberPatrol Web filtering program and the list of sites blocked by the parent. While these programs may have had nefarious intents, programmers are worried that the trend toward outlawing reverse-engineering may spread, especially if shrink-wrap licenses gain greater protection under the proposed legislation known as UCITA.

Open source. While some companies see a competitive advantage in keeping their code secret, other companies are succeeding by making their code publicly available. This code is called open source. The idea is that when code is kept secret, and only a few people can find and fix bugs, or extend the software, progress is much slower than when the code is made available to everyone on the Internet to study, document and improve. This idea owes its origin to the Gnu Manifesto, but the movement was really started by Eric Raymond's 1997 essay "The Cathedral and the Bazaar." Only a few months later, Netscape decided to make its Web browser open source. But the best example of successful open-source development is Linux.

To conclude this week's reading, read the three cases for open source ("for business", and "for customers", and "for hackers"). Also examine the reasons why some software companies such as Microsoft are wary of it, and the possibility that it could render code vulnerable to hackers, as well as the retort that the open-source Apache Web server has not proved vulnerable to hackers. However, whether open source is actually more secure is still an open question.