by Howard
Gilbert
Technology and Planning, Yale University
17 Jan, 2003
To understand the Microsoft case, you need both the technical and legal points of view. This case pits the DOJ and some State Attorneys General, a pack of lawyers, against the one large corporation run top to bottom by engineers. It is a dispute between two professions. There is no shortage of antitrust lawyers and business school professors ready to comment on the case, but unless you hear from a practicing software engineer, you won't really understand it.
This case isn't about any of the things you expect:
Microsoft incorporated browser function into its operating system. Since every Windows user already had a perfectly good browser preinstalled with their new computer, there was less interest in downloaded Netscape Navigator. Over time, the percentage of users running Navigator dropped. These are the essential facts in the governments case and nobody disputes them.
US antitrust law doesn't protect competitors. It protects consumers, and it protects competition because competition is in the best interest of the consumer. In the context of this case, there are three elements of antitrust law that may apply:
The government objected to Microsoft's decision to incorporate browser function into the Windows operating system and to make extensions to the Java programming language. It claimed that Microsoft's browser development was predatory, that Microsoft illegally tied Internet Explorer to Windows, and that its action with the browser and Java protected its Windows monopoly from a future competitive threat. In the end, the goverment lost the Predation claim, dropped the Tying claim, and won a handful of minor charges in the Monopoly Maintenance claim.
The points that the government won all claimed that individual clauses in agreements that Microsoft negotiated with Intel, Apple, internet service providers (AOL), internet content providers, and application developers were anticompetitive because they tended to squeeze out Netscape Navigator or Sun's version of Java. On these issues the lawyers are on their home turf. Lawyers understand contracts, normal business practices, and all the legal procedures associated with a court case.
All the points the government lost had to do with Software Engineering. They advanced theories about operating systems, Web standards, application programming, and software development. On these issues the lawyers and judge didn't understand anything.
The Department of Justice subpoenaed all the E-Mail, messages, and correspondence in the firehouse. Selecting a sentence here and a paragraph there, they claim that it is part of conspiracy to extend the boundaries of the fire district to adjacent neighborhoods and to protect the monopoly of the fire department from a future threat posed by alternate fire suppression technology.
As an engineer, I tend to believe that he wears red suspenders to keep his pants up.
The general principle is to accept the simplest explanation. The application of this principle, however, depends on how much you understand.
To understand the product design and software engineering justification for Microsoft's decision to incorporate browser function into Windows, you have to know something about operating systems, a lot about Web standards, and the basic elements of application programming. People who are not professionally involved with computers may think that a simpler answer is just to believe the conspiracy theory. You don't have to do any thinking or study complex issues. This is a very popular solution and is frequently applied to all sorts of foreign policy questions.
However, this "simple" explanation does get very far once you begin to understand all the work that Microsoft put into its system design. If Microsoft had just continued to bundle a standalone browser with Windows, as it did with IE 1 and 2, then the same number of end users would still have adopted it rather than downloading Netscape. Integration wasn't important for market share, because the end user cannot distinguish a standalone browser like Netscape from an integrated browser like IE.
If you understand browser integration from the programmer's point of view, then the simple conspiracy theory does not explain why Microsoft decided to do 99% of its development effort. If, as the government claimed, this development cost Microsoft a billion dollars a year, this leaves a lot of dollars of effort unexplained.
Suppose someone told you that Melville sat down one day to write on a sheet of paper, "The captain of a boat drown while chasing a white whale." However, he had some difficulty getting his thoughts together and accidentally wrote Moby Dick. That is a very simple explanation for the novel, but it is not particularly convincing.
Bill Gates should be ashamed of himself.
Everybody knows that he is a notorious philanthropist!
How do you respond to this statement? Is it an accusation? It has the format and tone of an accusation, but it doesn't actually say anything accusatory.
You can't say that the statement is false. Bill Gates is a philanthropist. The adjectives, however, are inappropriate for what the sentence actually states. There is a clear impression that the person making the statement doesn't know what the word means.
So what do you do? Refute the statement? Explain what it really means? Walk away and ignore the moron?
Microsoft acquired a monopoly of personal computer operating systems because the other companies decided not to compete. Apple could have offered an alternative, but it preferred the profit margin of selling a $3500 computer to the profit from a $30 software sale. IBM's OS/2 could have been a competitor. However, IBM was selling OS/2 for $400 a copy, $800 a copy if you wanted networking, and $1000 a copy if you wanted Internet support. IBM also wanted to sell its own expensive line of computers with Microchannel technology, so they would not support OS/2 on mass market computers.
If anyone realized how much money Microsoft was going to be able to earn, they would have changed their mind in a second. However, in the summer of 1990 the potential competitors thought that it was in their best interest to let Microsoft plod along selling $30 software packages while they pursued more interesting opportunities.
This is not the story of Standard Oil, US Steel, or the railroad robber barons. Microsoft was smart, but it was also lucky. Once it had a monopoly, however, it knew how to stay so far ahead that nobody could ever catch up.
Microsoft managers are mostly young. They did some dumb things, but they said some dumber things. In the face of absolutely no meaningful competition they competed too aggressively. In the end, the courts would find some illegal elements in various agreements that Microsoft made with Intel, Apple, computer makers, Internet service providers, Internet content providers, and software developers. Microsoft has accepted this judgment, worked out a settlement that will prevent such conduct in the future, and District Court Judge Kollar-Kotelly has approved the settlement.
The remedies approved in the settlement of the case will have little effect on the future of the software industry. They are appropriate, however, for the acts that the appeals court ultimately found to have been illegal. Those who object to the settlement confuse the issues originally claimed with the fairly trivial things that were ultimately upheld.
Originally, the DOJ claimed that Microsoft violated two sections of the Sherman Antitrust Act when it incorporated Web Browser function into its Windows operating system and one section of the Act when it made extensions to the Java programming language. They wanted Microsoft to separate Internet Explorer from Windows.
Since Microsoft had just spent 2 1/2 years integrating browser function into Windows, this demand would have forced a complete redesign of the system. Furthermore, it demanded a bad design that would have reduced the quality of the operating system. Engineers were not going to sit back quietly and allow lawyers to screw up the operating systems design.
In the classic example of a predatory practice, a large railroad is confronted by a small competitor with a route between two cities they both serve. The large company temporarily drops its rates so low that it is losing money on the route, but so is the smaller competitor. It then waits for the competitor to run out of cash and go out of business. Later, its monopoly restored, it jacks prices up to recover its losses.
The government wanted to claim predatory practice in the market for Web browsers. However, everybody gives their browsers away free. Mosaic was free in 93, IBM's Web Explorer was free in 94, Netscape's Navigator could be downloaded free for personal use from '94 on, and Microsoft's IE was free starting in '95. More importantly, IE Versions 1 and 2 were actually re-branded versions of the University of Illinois Mosaic browser that Microsoft licensed from the University's agent, the Spyglass corporation. The government could not object to Microsoft giving its browser away free and could not object to IE 1 or 2.
The government came up with an unusual claim. They argued that once Microsoft had decided to give IE away free, it was somehow legally precluded from spending money or assigning a lot of programmers to improve it. They showed that Microsoft invested billions of dollars in Web technology, and claimed that that level of product development was predatory.
The District Court judge completely ignored the government argument. They had never explained they made such an unusual claim. This judge liked things simple. He knew that IE was free, and that sounded suspicious. Judge Jackson found that Microsoft had engaged in "predatory practices," but substituted his own legal theory for the one presented by the DOJ. According to Judge Jackson, whenever any profit making company spends money to develop something and gives it away free, this is presumptively predatory unless the company can explain it (Findings of Fact).
The DC Circuit Court of Appeals reversed this part of the decision. They sensibly pointed out that a necessary element of the charge is Predation. In simple terms, for a practice to be "predatory" it must have a purpose or at least a reasonable expectation that it will drive a competitor out of business.
Netscape gave Navigator away free to anyone who wanted to download it. Microsoft's browser integration had the effect of reducing the number of copies of Navigator that Netscape gave away free. No rational person would therefore conclude that Netscape was going to go out of business as a result.
In this case, we are forced to view the actions from the perspective of 1995 when the decisions were made. Netscape went public in August of that year. Netscape representatives discussed their business plan in dozens of interviews with every journalist who would talk to them. From their perspective, in 1995, the Web was still a largely unknown technology. They knew nobody would buy a browser unless there were useful sources of information and services to browser. Companies would not create Web sites unless there were users. Something had to kick start the process.
So Netscape's business model was to give Navigator away to anyone who wanted to download it to create a demand. Then they would make money by selling servers to companies who wanted to make their goods and services available to people.
There is no relation between the type of browser and the type of server. A Netscape server works just as well with IE as it does with Navigator. So if we had to draw any conclusion, the only expectation that Microsoft could have had would be that by preinstalling any browser on every personal computer, they would increase the demand for Web servers and increase revenue to Netscape. There is no rational argument that IE should have harmed Netscape, let alone driven them out of business. Hence, there was no predatory practice.
It is illegal for a company enjoying monopoly control over one product to require customers to buy a second unrelated product in order to obtain the monopolized item. This violation of the law is called "Tying". Microsoft has a monopoly with its Windows operating system. The government claimed that by incorporating browser function into the operating system, Microsoft illegally tied its IE Browser product to its Windows product.
The lawyers did spend some time arguing about whether a browser which is given away free is a "product" in these terms. There is also a question whether integrated browser function is really "separate". These are legal questions that an engineer doesn't care much about. To us, the key issue is whether the browser and operating system are "unrelated".
The DOJ had made the tying claim in the previous court case knows as "Microsoft II". Specifically, that case asked if Microsoft had violated a 55 word clause in the Consent Decree signed in 1994. The DOJ argued that the words in question were motivated by their desire to prevent Microsoft from engaging in illegal tying, then submitted a 200 page brief providing their interpretation of previous cases on the doctrine of Tying to argue that it applied to Browser Integration. The case was tried before the same judge (Jackson) who presided over the current case. He ruled in favor of the government, and they was reversed by the appeals court. The DC Circuit noted that a consent decree is a contract and must be judged under contract law, not antitrust law. Whether Microsoft had or had not engaged in Tying, and the appeals court neither ruled nor suggested its opinion on this question, the 55 words meant what they said on paper. On paper they clearly did not prohibit browser integration.
By the time this appellate decision was read, the DOJ had already filed the current antitrust case and declared that Tying would be an important point. Normally an appeals court doesn't comment on a case that hasn't been tried yet. However, they had this 200 page brief in front of them and saw some problems in it. There were facts unique to this case, or maybe the software industry, that were completely different from any of the previous examples of tying. They wanted to make sure that these issues were fully argued. So they commented on the general question of Tying as it applies to this sort of case at the end of their opinion. These comments were not binding, but provided guidance.
Perhaps the appeals court was too indirect. None of the lawyers in the case seemed to understand what they were saying. Not just the DOJ, Microsoft defense team, and Judge Jackson. Lawrence Lessig of Stanford wrote an amicus brief on the question of Tying. Boiled down to one sentence, his brief said "I have no clear idea what the appeals court was talking about." As a programmer I have a pretty good idea what the problem was. Microsoft integrated browser function into the operating system to provide programmers with direct support for Web standards like HTML, CSS, XML, and so on. The DOJ arguments on Tying tried to completely ignore the programming interface, arguing that Tying had to be decided based solely from the point of view of end users excluding the programming perspective. The appeals court had realized that there were two completely different "consumers" of an operating system: the computer buyer and the application programmer. Application programs really "consume" OS services, while end users just run the applications. Tying really had to be evaluated from both points of view.
Judge Jackson decided to ignore the appeals court and found in favor of the DOJ without addressing any of the issues they raised. In his Findings of Law the judge noted of his decision that "this conclusion is arguably at variance with a decision of the U.S. Court of Appeals". The appeals court was, he claimed, "inconsistent with the pertinent Supreme Court precedents" and so "to the extent that the Supreme Court has spoken authoritatively on these issues, however, this Court is bound to follow its guidance and is not at liberty to extrapolate a new rule governing the tying of software products."
The final result must come as no surprise to anyone. What can you expect when a District Court judge says that he is right and the appeals court is wrong, and then his decision is appealed to the same appeals court. Of course they were going to overturn the part of his decision that related to Tying. However, they remained consistent with their previous decision. They didn't claim to know if the charge of Tying was right or wrong and would not know until the issues were argued by opposing council and presented to them in a proper trial record. So they remanded the case for what would have been a third trial on the Tying claim, this time before a new judge. The case would have gone to Judge Kollar-Kotelly.
However, on Sept. 6, 2001 event, the DOJ released a statement that, with the agreement of all the states involved, it would drop the Tying charge and proceed to get a Remedy based on the issues that the appeals court upheld. Therefore, the Tying issue was never really resolved in court, it was simply dropped.
The non-settling states attempted to replace the Tying charge with some nonsense in the Findings of Fact about "commingling". They argued that this finding required a remedy of separating IE from the operating system. The two charges are quite different. Tying is viewed from the consumer's point of view. If it were proved, then there would at least be some logic to the proposition that the public interface to the browser be separated from the operating system. Commingling, however, is described as an objection to the way that functions are packaged in the program source. If the source were redesigned to separate out one set of functions from another, the change would not be visible to any user or even any programmer. Judge Kollar-Kotelly noted this in her decision to reject the remedies proposed by the non-settling states.
Microsoft made two attempts to get the DC Circuit Court of Appeals to discard the "commingling" finding for the self evident nonsense that it is. Their failure to do so casts serious doubt on the competence of the Federal Court system to adequately handle cases that involve technical matters. If you want to understand just how stupid this particular charge really was, a more detailed explanation of this nonsense is available.
It is illegal for a company to use monopoly power to prevent a new competitor from entering the market. This is called "monopoly maintenance". There were a bunch of small claims that Microsoft engaged in monopoly maintenance in its contract terms and agreements with computer makers, network providers, and developers. Those are not at question and were addressed by the negotiated settlement.
However, the DOJ also made a long, complex argument that Microsoft's decision to integrate Web Browser function into the operating system and to make extensions to the Java programming language were monopoly maintenance. According to the DOJ, Netscape Navigator and Sun Java formed a portable platform for application programs. A program written to run in this environment would run on any operating system. This would undermine the Windows monopoly which, according to the DOJ, was enforced by its own proprietary application programming interface (WIN32).
It may be something of an oversimplification, but this second half of the Microsoft Case came down to one question. The important issue was not how the question was answered, but rather how it was posed. The question went unstated by the DOJ and the District Court during the trial. If they had been forced to state it explicitly, they would have asked:
When Microsoft decided to incorporate Web Browser function into the Windows operating system and make extensions to the Java programming language, did they, as the Government contents, do it as an anticompetitive business practice designed to gain unfair competitive advantage over Netscape and to protect the Windows monopoly from a future competitive threat or did they, as Microsoft contends, do it as a product design decision justified by technical considerations.
The DOJ went through all the Microsoft internal E-Mail, memos, and reports and selected a paragraph here and a paragraph there that, taken out of all textual, technical, or historical context, seemed to support their business practice thesis. Microsoft provided witnesses, mostly its own managers, that then talked about the product design questions.
The judge was supposed to weigh carefully the testimony presented by both sides. Based on a preponderance of the evidence, he found the DOJ argument more convincing.
The DC Circuit Court of Appeals had already commented extensively on the product design advantages claimed by Microsoft in the previous case on Tying and the 55 words in the consent decree. They were hardly going to forget these issues in this new case. Even if you accept the District Court's Findings of Fact on the business practices, that doesn't erase things like the entire redesign of Windows Help around HTML. They had now to reconcile the "Facts" with reality.
The appeals court realized that the lower court had asked the wrong version of the question. Its mistake was contained in the little word "or". The "business practice" theory was not mutually exclusive with the "product design" theory. Both could be true at the same time.
They looked back at prior cases, and found in the precedents a four step test that was more appropriate for this case. In the first two steps, the DOJ had to show that Microsoft's action had an anticompetitive effect. Based on the District Court's findings of fact, this burden had been met.
Then Microsoft was allowed to present a "procompetitive" explanation for its action. In antitrust language, "procompetitive" means that Microsoft did something that made the product better or cheaper. This became the framework through which to raise the product design and software engineering issues.
Once this was done, the four step methodology required that the government either refute the procompetitive justification or show that its effect was minor compared to the anticompetitive effect. The Appeals Court noted that the government had done neither. Instead, the government had ignored all the engineering issues, preferring to put all its effort into the E-Mail supported conspiracy theory.
The Appeals Court would not overrule the lower court on a matter of fact. If the question had been posed correctly, then Judge Jackson's decision in favor of the "business practice" theory could not have been overturned. However, by deciding that it was the wrong question, the Appeals Court turned this back to a question of Law. The lower court had applied the wrong legal analysis. The government was required to respond to Microsoft's argument, and since it had not done so the part of the Monopoly Maintenance charge that applied to browser integration and the Java runtime were decided in Microsoft's favor.
Microsoft has a monopoly providing the Windows operating system to users of mass market personal computers. The government would like to claim that Microsoft violated the law because of the effect of its product strategy on Netscape. However, antitrust law doesn't protect a competitor like Netscape. As to monopoly maintenance, Netscape doesn't directly threaten Microsoft's monopoly because Netscape doesn't sell an alternate operating system.
In order to turn what Microsoft had done, integrating browser function into the operating system, into a claim of monopoly maintenance, the government needed a long and highly questionable chain of reasoning to extend from the facts to some hypothetical future market challenge.
To make sure that the argument is presented fairly, I have chosen to select sentences from a government brief that outline the chain of reasoning. All of these sentences are from a DOJ brief to the Supreme Court. All I added were the numbers.
The Windows monopoly is protected by an "applications barrier to entry." The pervasiveness of the Windows operating system induces developers to create vastly more applications for Windows than for other PC operating systems.
This formidable entry barrier can be eroded through "middleware." A middleware program invokes the APIs [Application Programming Interfaces] of the operating system on which it runs, but also exposes its own APIs and thus can serve as a platform for other applications.
Microsoft particularly focused on two incarnations of middleware that, working together, had the potential to weaken the applications barrier severely. These were Netscape’s Web browser [Navigator] and Sun’s implementation of the Java technologies.
Microsoft understood that large numbers of developers would write to the APIs exposed by Navigator only if they believed Navigator would become "the standard" Web browser, and that, if developers expected Microsoft’s own browser, Internet Explorer (IE), to attract a large share of usage, they would continue to focus their efforts on the Windows platform.
Microsoft therefore decided to engage in a multifaceted campaign to maximize IE’s share of usage and minimize Navigator’s.
The evidence to support these points was weak. This may have misled the Microsoft defense team to concentrate on attacking the validity of the evidence rather than the logic of the argument. The problem with that strategy was that Judge Jackson had declared in press interviews after the prior Microsoft case before the current case even started that he thought Microsoft was a pack of liars and crooks. If there was any evidence at all, he was going to accept it.
Although there was little evidence that "middleware" posed any real threat to the Windows operating system, there was always going to be some evidence. The problem here was that what the government was claiming might happen had already happened.
In the 1980s the dominant PC operating system was DOS. More precisely, the operating system function was performed by a combination of the hardware BIOS, the DOS system, and DOS devices drivers. To this environment, Microsoft brought a new middleware product that supplied a Graphic User Interface. Like any other "middleware" product as described by the DOJ, Windows ran on top of several operating systems (MS DOS from Microsoft, PC DOS from IBM, DR DOS from Novell, OS/2 from IBM, and several versions of Unix). Over time people stopped writing applications to the interface exposed by DOS and instead wrote applications that ran on Windows. Once that happened, the application ran on every operating system the Windows middleware ran on. Eventually DOS became unimportant, so it was replaced by the middleware.
Since what the government was arguing might happen in the future had already happened in the past, the Microsoft defense would never be able to show that the government's case was "clearly erroneous". Since Judge Jackson was predisposed to find for the DOJ on every possible issue, and since the appeals court would not override a Finding of Fact unless it was clearly erroneous, arguing about the evidence was a poor strategy.
However, the DOJ had never admitted that Windows was originally "middleware". Logically, this would have been an essential element to explain why Microsoft was so concerned about the strategic implications of middleware. However, if this simple fact had ever been introduced into the case, then all the DOJ arguments would have begun to unravel.
For one thing, it is not rationally possible to argue both the Tying and Monopoly Maintenance claims at the same time. The Tying claim depends on the browser and Windows being two unrelated products. The Monopoly Maintenance claim, however, underscores the point that Windows and Browsers are two middleware products that both present an application programming interface that supports the Graphic User Interface. They are two different ways of doing the same thing. They cannot, therefore, be called "unrelated".
The other problem is that the Government assumes, but doesn't say, that the Microsoft programming interface is different from the Netscape programming interface. This is one of several places in the case where the walks right up to the border between simple intellectual dishonesty and outright lying, and then stops before crossing the line. As with the "notorious philanthropist" claim, the government makes some statements that are true, but through tone and implication lead the judge to conclusions that are clearly nonsense.
All of these statements are true. The government then claims that Microsoft's action protected the "application barrier to entry" of the operating system market.
The Government's Monopoly Maintenance claim on browser integration implies that Netscape Navigator's programming interface is different from the programming interface exposed by IE. This is not true. It also isn't actually claimed anywhere in any brief. They skip over that point and hope that the judge will just assume that they said it. The whole chain of reasoning breaks down if you realize that the Web browser programming interface is standardized by the W3C and is shared by all browsers. Things get even worse if you realize that during the period in question, Netscape had seriously deviated from the W3C industry standard and did not come back into compliance until Navigator 6 or 7.
Everybody knows how monopolies like Standard Oil and US Steel were created and maintained. When a company has a monopoly, and a new technology threatens that monopoly, the company is supposed to defend itself against the new technology.
Except computers don't work like steel or railroads. Technology changes all the time, and a company either learns to use the new technology or it dies. "Your arm is too short to box with God" as the song goes. So Microsoft did the opposite of what would be expected from the 19th Century monopolies in the history books. It embraced, supported, encouraged, and proselytized the new technology. It tried to bend with and ride out the tidal wave rather than remaining rigid and getting washed away.
The computer industry hates a proprietary standard. It will tolerate one when there is nothing better. If a good standard comes along, everyone will flock to it. Up until 1995, every operating system had its own programming interface. Converting a program from Windows to the Mac and to Unix was a big problem. However, as processors became faster and memory became larger, it was no longer necessary to write an application program to the specialized interfaces of a single operating system.
Microsoft has a proprietary programming language called Visual Basic. It has become very popular. However, Microsoft has always support the international standards for languages like Fortran, Cobol, C, C++, and Pascal. Microsoft never asks whether having a standard C++ compiler will draw some people away from Visual Basic. Of course it will, but if Microsoft didn't offer the compiler those programmers would go to another company like Borland or Symantec.
There was no guarantee that the W3C standard would catch on. However, if it did become popular and Windows did not support it, then programmers would drift away from Microsoft's development environment and move to a competitor. Certainly some programmers would use Web standards instead of the Windows proprietary interface, and that would make their programs easier to convert to other operating systems. However, in the long run Microsoft's best interest is to provide the best support of any operating system for whatever standards people choose to embrace.
In computer software, Monopoly Maintenance is an oxymoron. You cannot defend a monopoly in an industry that completely redefines itself every five years. You have to continuously reengineer the monopoly or it will simply disappear. Microsoft is too busy creating next year's monopoly to bother defending last year's.
In order to prove something that was clearly false, the trick is to use the right timing. Today we know how everything was going to turn out. Back in 1995 Microsoft was beginning to develop a strategy on the Internet and the Web. Netscape was making a big splash as "the Internet company." The World Wide Web Consortium was just organizing and had not yet released its first standards.
Internally Microsoft released a flurry of E-Mail and memoranda talking about the new Internet strategy. Since this was just an internal discussion among engineers, the language used may not have been very precise. A few statements talked about "the Netscape problem" when, in context, it was clear they were talking about the general Internet problem. Since there were no industry standards, the only Web programming interface was the Netscape interface.
So the government used statements from 1995 to prove that a strategy developed over the next two years as the industry changed and new standards were developed was a response to some imaginary threat from the Netscape corporation. In law, the evidence was admissible and competent. It was up to the jury, or in this case the judge, to work through the time line and realize that the government theory was nonsense. When the judge didn't do that, the rules of law make it almost impossible for the appeals court to correct the mistake.
A lawyer in private practice is supposed to represent a client vigorously. He can't lie, but if the facts favor the other side, a lawyer will try to obscure them and confuse the jury. DOJ lawyers, however, represent "the people". The government should not have an interest in winning a case in spite of the facts. The DOJ didn't act unethically, as that term is defined in the cannons of conduct. However, their behavior raises serious questions of public policy.
This case challenges the assumption throughout the court system that judges are all generalists and you can pick one at random from the pool to handle an immigration case or a case that will decide the shape of the computer industry for the next century. Different people have different aptitudes. Some people will never understand complex technology no matter how many times you explain it to them. Judge Jackson had shown his limits in a previous Microsoft case that was overturned on appeal. Although much attention was given to newspaper interviews he gave during the current case, his comments to reporters after the prior case should have been enough to disqualify him. The system, however, was unable to replace him with someone qualified to understand the evidence.
Therefore, the problems in the Microsoft case are inherent in the judicial system itself. Law schools teach that the adversarial process is the best way to resolve all legal problems. That claim may stand unchallenged when the facts must be determined from uncertain witness testimony or circumstantial evidence. In this case, however, the facts are absolute, almost mathematical in nature. The adversarial process only served to obscure objective truth replacing it with government misrepresentations and judicial prejudice. If the system can screw up this badly against one of the richest and most powerful companies in the country, what chance do we poor individuals have of getting a fair deal.
In the DOJ case and in Judge Jackson's so-called Findings of Fact, much was made of the claim that Microsoft was the only operating system vendor to integrate browser function into the OS so tightly that it could not be removed. This statement simply wasn't true.
The modern computer has been around for 35 years. It is certainly true that the industry has only been highly visible for a decade, but the basic problems and the techniques to solve them go back much further. It is characteristic of the sloppy research done in this case that neither side seemed to bother to give their "facts" more than a superficial check against the historical record.
There is a previous case where something recognizably like browser function was integrated into an operating system. Much like the government's argument in this case, it was an effort to create a middleware platform that presented a common user interface programming technology across operating systems. If you want the details, a separate paper tells the story of the Dialog Manager
We can charitably assume that the high level decision makers on the government side honestly believed that Microsoft had done something mean, rotten, nasty, and maybe illegal. The maybe qualification arises because the government objected to what Microsoft had done to Netscape and Sun, but US antitrust law doesn't protect competitors.
The decision makers asked the staff to see if they could put together a case. They knew from the outset that the case would be a stretch. They should have limited this to stretching the law. Instead, they stretched the truth. There is no question that the authors of the government legal briefs knew exactly what they were doing. The argument is carefully written to imply but not state explicitly what they knew to be false. I am sure that the intellectual dishonesty didn't bother them, because they were confident they had the moral high ground.
Once you realize that Microsoft made an obvious product design decision to solve a new twist in technology, then the moral indignation is out of place. All that is left is the clear dishonesty.
Lawyers examine the current case, then find all the prior cases that seem to be decided in their favor. Then they will try to twist the facts in the current case to match a conceptual template provided by the prior case. Facts that agree or disagree with elements of the prior case will be carefully noted. Facts that do not relate to the prior case will be ignored because they are not "useful" in coming to a decision.
Operating system design and Web standards are terribly complicated issues that require careful study. You can only understand them on their own terms. If you approach an operating system, as the lawyers do, with the assumption that the most important thing to consider in operating system design is how a hospital charges for anesthesiology services (Jefferson Parish Hospital v Hyde), then you have little chance of learning anything.
The legal briefs in this case constantly argue and reargue points that were presented in prior cases but have no application to a software product. Alternately, they completely miss critically important distinctions that have not been considered in any previous case.
The Sherman Antitrust Act is 110 years old. All the classic examples of monopoly abuse date from that time. The lawyers and judge in this case were so familiar with the history that they imagined patterns of behavior that were simply not there. US Steel and Standard Oil ran all their competitors out of business. Microsoft created a monopoly in an industry that previously didn't exist, didn't run anyone out of business, and completely re-engineers its product every ten years. The railroad business is still pretty much the same as it was at the peak of the robber barons. The software industry changed completely in '81 (PC), again in '84 (Mac), again in '90 (Windows), and again in '95 (Web).
Microsoft has not engaged in any of the practices of the old monopolists. Those practices would not work in the modern software industry. Microsoft did other things. Maybe some of the things it did were illegal, but it is unlikely that the law would have anticipated the unusual nature of this new fast moving technical environment. Maybe some of the things Microsoft did should have been illegal, but that is a policy question for lawmakers. The lawyers looked for specific things. They thought they saw what they were looking for. They didn't really understand what they were seeing.
The legal profession has an almost mystical reverence for the idea of opposing council arguing issues of fact before a judge and jury. However, software is essentially mathematical in nature. Engineers expect that if everyone sits down at a table, we can eventually work out the issues and come to a common consensus. There aren't two different sides to a mathematical problem. If I have one answer to a problem, and you have another answer, then we should sit down and compare methods. We should be able to figure out who is right and who is wrong. The one sure way to get the wrong answer is for us to compromise and adopt an answer between the two original proposed answers.
As long as the government continued to argue about operating system design, no compromise settlement could be worked out. The government theory was nonsense, and any design changes they proposed would not work. The case was settled after the government lost every engineering design issue and was left only with complaints about contract terms and business practices.
Testimony and cross-examination may be a reasonable way to answer a simple question everyone understands. It is not a workable approach when nobody understands the question itself.
The courts would never try to settle a matter of law the way they approached this engineering issue. Suppose instead of looking at the law, a judge invited people to come into the court and testify about their opinions about what the law is. Then, instead of researching the law himself, the judge simply chose the side that seemed more convincing.
Well engineering is an objective mathematical discipline. There is a right answer, and if you provide a forum to completely discuss the question every reasonable person should eventually come to the same conclusion. However, if you present complex questions with an extensive technical background to people with no technical training, and then allow cross-examination to confuse instead of clarify the issues, it is not surprising if the outcome of the case is nonsense.
Some people will insist that Microsoft screwed Netscape and Sun. The easiest way to explain why this is not true is to tell an almost identical story where someone else got screwed a lot worse.
Back in the late '80s and early '90s there were two companies named FTP Software and Netmanage that made a fairly decent revenue selling Internet support as an add on product for first DOS and then Windows. Initially, the Internet was only of interest to universities. As the Internet became more important, demand for their products began to explode.
Then Microsoft added Internet support as a standard feature of Windows 95. Suddenly demand for the add-on software dried up. Eventually the two companies merged, but today they are relatively minor players in the industry.
What happened to Netmanage in 1995 was far worse than what happened to Netscape in 1998. Internet support was their primary product. Netscape always planned to give its browser away free, and made money selling Web servers. So why did the DOJ make such a big deal about Netscape and ignore Netmanage.
Nobody could reasonably argue that Internet support did not belong in Windows when Microsoft was the dead last operating system vendor to add it. Internet support was the primary feature of OS/2 Release 3 when IBM added it in 1994. Apple added Internet support to the Macintosh. Internet support was always part of Unix.
What happened to Netmanage was a shame, but it wasn't Microsoft that was to blame. It may have been fate, or luck, or technology, or God. Microsoft didn't really have a choice in the matter. It had to follow where technology demanded.
However, while Windows was the last system to integrate Internet support, it was the first system to successfully add integrated browser support. It wasn't the first vendor to provide a free Web browser that any customer could download. IBM beat Microsoft by several months with its Web Explorer browser for OS/2. It wasn't the only company to work on an integrated browser. Apple worked for several years on an integrated browser design called Cyberdog, but abandoned that project when it became too expensive. Microsoft was just the first to succeed.
So when the DOJ claimed that it was illegal for Microsoft to integrate browser function into the operating system, because it was a case of Tying unrelated products and was Monopoly Maintenance, there were no other examples of other operating systems with successful browser integration. This doesn't make the question go away. If, as I assert, browser function is a natural and necessary feature of the future operating system, then Microsoft's treatment of Netscape was inevitable.
Microsoft Windows has a 90% market share for PC operating systems. That gives it monopoly power. There is a logical difference between the consequences of market share and the exercise of monopoly power.
A company uses monopoly power when it forces other companies to do what they don't want to do because they have no other choice. You can tell when a company is using or abusing its monopoly power because the actions or their consequences would make no sense without the market power.
Microsoft is a giant in the industry. As with any giant in children's stories, if it takes a step in any direction it runs the risk of stepping on someone. However, in the technology industry nobody, not even a giant, can afford to stand still.
So Microsoft makes a decision to create its own browser. You cannot claim that this decision was motivated by monopoly power. IBM created Web Explorer for an OS/2 operating system. Apple just decided to release its own browser into a market where it has a 5% share. However, when Microsoft makes a decision like this, it has an enormous effect on other companies like Netscape. This is not a monopoly effect. If Microsoft only had a 25% market share, it would have made the same decision and had 25% of the same effect on Netscape. Instead, it has a 90% market share and that has a 90% effect. Since the decision did not depend on monopoly power, the effect is not a monopoly effect but rather an effect of the enormous market share.
The lawyers in this case and the journalists commenting on it fail to recognize the distinction, but it is a critical legal difference. Microsoft cannot stop making choices just because those choices will have a big effect on somebody. The legal system cannot penalize Microsoft just because it is big.
In technology as with any other profession, there are people who have strong ideological opinions. There is a big movement around Open Source. Apple has a strong vision about integration and ease of use. Some people feel strongly about Linux, others feel strongly about Java.
There is no problem as long as everyone admits to the legitimacy of other opinions. This case, however, is based on some narrow minded, bigoted views that there is only one acceptable opinion. Any other view is dismissed as dishonest.
Netscape has a vision of the open Web standards implemented in a single application that runs the same on every operating system. This is a valuable idea and is useful to anyone who wants portability.
Microsoft had a vision of the open Web standards integrated throughout the operating system. Code could use these standards whether it was part of the operating system, a library used by application programs, an installation program, a configuration utility, a performance monitor, or a tutorial. The idea of ubiquitous Web support is also a valuable innovation that is useful in other circumstances where the Netscape approach doesn't work.
Sun had a vision of Java as a universal runtime environment. Programs written to the Sun Java standards were guaranteed to run the same way in all systems. In the Sun world, Java programs are distributed around a network using J2EE conventions of Enterprise Java Beans and their associated support services. Sun wanted everybody to write everything in 100% pure Java.
Microsoft viewed Java as another programming language. Microsoft started as a company providing programming language support (Basic, Fortran, Cobol, C, Pascal). Microsoft wanted Java to work along with all the other programming language. It provided extensions so that Java could call any system service and communicate with Excel or any other Windows program. In the Microsoft vision, any program that could be written in Visual Basic should also be programmable in Java.
These are legitimate differences. Nobody, particularly not the government, has a right to impose a dogmatic constraint on the right to think and express an opinion. Nobody has the right to claim that a person or a company has broken the law because it has a different opinion or vision of the future than the One True Faith of the politically self-righteous.
The ordinary consumer who buys his computer at Wal*Mart sees the Windows operating system through its Desktop shell. There is a Start button, icons, folders, menus, and a click or drag-and-drop methodology. The Internet Explorer browser is an application for displaying documents available on the Web.
There is a deeper layer that is visible to the programmer. You see part of it in the DOJ discussion of "middleware" in the Monopoly Maintenance charge. The operating system and the browser both present a programming interface to application developers. The operating system does the heavy work providing memory management, disk file management, network support, error handling, and CPU dispatching. The browser provides an alternate system independent approach to programming the user interface.
The DOJ said this, but it never seemed to understand it. In arguments on the Tying question, the government position was that operating systems and browsers were unrelated programs because they appeared to do different things from the perspective of the ordinary consumer. Then on the next point they argued that the two competed for attention from application programmers by doing the same thing in two different ways.
The Desktop is a tiny part of the operating system. Windows is probably the one consumer product that people buy but never actually use. Instead, the consumer buys video games, DVD players, or tax preparation software. The consumer uses these application programs, and the applications use the services provided by the operating system. The application programmer is the real consumer when you are talking about the OS.
The Graphic User Interface has push buttons, check boxes, text input fields, lists, and lots of other stuff. An application programmer must place these user interface elements on the screen and interact with them. Each operating system provides its own version of the same user interface elements.
Just to demonstrate that it is possible to do this, the following table has four versions of the simple push button. Since this is just an example, nothing happens when you push any of these buttons.
The first button is generated using the plain Windows "Win32" API mentioned by Judge Jackson in his findings. It appears under Microsoft Internet Explorer on Windows. It does not show up using Netscape nor with IE on a Mac.
The second button is generated by Web programming using the old HTML 2.0 standard. This is supported in all Web Browsers on all systems. The other three buttons can be rendered in various fonts and colors, but this button will always be rather plain because HTML 2 did not have formatting options.
The third button uses the newer Web standards of HTML 4. To show this off, it displays text in various fonts and colors that would not be available in the older HTML 2 standard. It will show up in IE and on the latest Netscape 6 browser. The Netscape 4.x (and earlier) browsers will not understand the HTML 4 language, but they see the caption text. So old Netscape displays the words "HTML 4 Button" without actually putting them on a button.
The fourth button is generated by a Java Applet. It will show up on the screen if your Browser is Java enabled.
Microsoft Internet Explorer displays all four buttons. It supports embedded Windows-only Win32 programming, but it also supports all versions of the HTML standard and Java. Netscape 6 supports the last three buttons but doesn't support embedded Win32 programming, which is perfectly reasonable given its design philosophy. Although I use this type of programming all the time, I have never had a desire to embed Win32 code in Web logic and had to go out on the Web to determine the proper syntax just to create this example.
The failure of the widely used versions of Netscape Navigator to display the third button, given that the HTML 4 standard was published by the W3C in 1997, is a much more serious problem. At Yale, Navigator was adopted as the standard browser. Its failure to keep up with the open industry standards caused a serious problem. This example also shows concretely one of the fatal flaws in the DOJ case and the District Court findings.
Traditional Windows programs would use the Win32 API to generate their user interface. They would therefore create some version of the first button and use Windows proprietary techniques to define program code to respond when the button is pressed. Java programs can run either inside a browser or standalone. Any Java programmer can create the fourth type of button and the application program will run on any system. Web programmers can create Web pages with HTML buttons and run them under IE or in a modern standalone browser like Netscape 6 or Mozilla.
The problem, however, is getting a program written in some standard programming language like C to respond when an HTML button is pressed. The rules for such a program have been standardized by the W3C Document Object Model (DOM). The details about how you connect such a program to the browser in the first place, however, are slightly different. Microsoft uses an interface it created called COM. Netscape and Mozilla use an interface based on COM called XPCOM. This is a common software problem that programmers deal with all the time, but if you want code that works exactly the same way on every browser on every system, IBM has a library called DirectDOM that hides the differences and creates a single common interface.
By embedding browser code into the Windows operating system, Microsoft also makes HTML display and W3C DOM programming available to any application or system component. Instead of creating a window managed through the old Win32 API, the application creates a Web standards based window where elements can be created by HTML and managed through the DOM. Because support is in the operating system, it is not necessary to preload a browser.
Remember, according to Judge Jackson's "Findings of Fact", Microsoft's decision to embed browser support (and therefore support for open standards) in Windows is supposed to induce everyone to use the Win32 programming interface (represented by the first button). When I write my programs I much prefer the third button, which I can program using current open Web standards.
The computer industry has been writing programs for decades, while the Web has just become available in the last few years. Since we can clearly continue to write Windows or Mac programs using the same old technology we used in the '80s, why is it important to use embedded or standalone Browser technology to program an application program's user interface?
Programmers work in a world of absolute logic and precision. Every piece of the program has a clearly defined function to perform. All the pieces have to fit together exactly or the program won't work. Programmers worry about security, standards, tasks, networking, and performance. Good programmers don't give a damn about whether the background is flat white or some quite rippling pattern of green.
Good programmers make lousy interior decorators. Programmers don't believe in Feng Shui..
Managers worry endlessly about how things look on the screen. They can understand this. They don't know about network protocols, database transactional integrity, or data encryption. They will ask, "what if we move this field to the left a bit" or "suppose we draw a line between these two things."
All the people who care about color, position, shape, size, and pattern learned to build Web pages. After the dot-bomb, they became unemployed. It is a more cost effective use of human resources to hire a Web page designer and let him or her respond to all the endless stupid requests to change the size, location, or color of the things on the screen. That is his skill and its what she likes to do. Real programmers faced with the twelfth request to change the shape of the Submit button are likely to reach for that Smith and Wesson in the drawer and do serious damage to themselves, coworkers, or the computer screen.
This is why application programs should, in the long run, migrate to use Web APIs instead of using older vendor proprietary APIs. Note that nothing said here suggests that it is important that the application program run in any system other than Windows. Programmers want to get away from Win32 API programming even if they are 100% committed to Windows. The fact that the resulting programs might then be portable to other operating systems is of absolutely no significance.
Microsoft is a software publisher. The Windows operating system and its implementation of the Java programming language are two of the things that it publishes. Computer code can express ideas, reflect an aesthetic view, and advance a philosophic approach. It may be that the large majority of people don't know or care about these issues, but Nerds have a right to free expression too.
A lawyer knows that it is better to win a case based on ordinary principles of law rather than to roll the dice and raise constitutional issues. On the two important issues, browser integration and the Java runtime, Microsoft ultimately prevailed in the DC Circuit Court of Appeals. Unlike the original remedies ordered by Judge Jackson, the negotiated settlement to the case approved by Judge Kollar-Kotelly does not challenge Microsoft's First Amendment rights to freedom of the press. However, some challenges dragged on in objections to the settlement by various states. The First Amendment issue is, therefore, no longer of direct concern, but it remains an academic footnote as an important question never really presented to the court.
The legal issues were decided by the Court of Appeals for the Second Circuit in a case known as Universal Studio v. Reimerdes. In this case, a group of motion picture studios sued a magazine named 2600 for distributing and then linking from their Web site to copies of a program called "DeCSS" that allowed people to defeat the copy protection on DVDs. The defendants raised First Amendment claims. Ultimate the defense failed, but this case allowed the Appeals Court to clear up the application of the First Amendment to executable computer programs. Previous cases ruled that source code was protected, but this decision ruled that the object form of programs is also protected:
Communication does not lose constitutional protection as "speech" simply because it is expressed in the language of computer code. Mathematical formulae and musical scores are written in "code," i.e., symbolic notations not comprehensible to the uninitiated, and yet both are covered by the First Amendment....The "object code" version would be incomprehensible to readers outside the programming community (and tedious to read even for most within the community), but it would be no more incomprehensible than a work written in Sanskrit for those unversed in that language. The undisputed evidence reveals that even pure object code can be, and often is, read and understood by experienced programmers.
After disposing of some silly objections ("Even dry information, devoid of advocacy, political relevance, or artistic expression, has been accorded First Amendment protection.") they get to the point on which the rest of the decision turned:
Computer programs are not exempted from the category of First Amendment speech simply because their instructions require use of a computer. A recipe is no less "speech" because it calls for the use of an oven, and a musical score is no less "speech" because it specifies performance on an electric guitar. Arguably distinguishing computer programs from conventional language instructions is the fact that programs are executable on a computer. But the fact that a program has the capacity to direct the functioning of a computer does not mean that it lacks the additional capacity to convey information, and it is the conveying of information that renders instructions "speech" for purposes of the First Amendment.
In the case of DeCSS, the program may express ideas, but it is also an apparatus for performing an operation (making illegal copies of protected material). The court found that the constitutional issue then depended on which of these two aspects the government objected to when passing the Digital Millennium Copyright Act.
As the District Court recognized, the scope of protection for speech generally depends on whether the restriction is imposed because of the content of the speech. Content-based restrictions are permissible only if they serve compelling state interests and do so by the least restrictive means available. A content-neutral restriction is permissible if it serves a substantial governmental interest, the interest is unrelated to the suppression of free expression, and the regulation is narrowly tailored, which "in this context requires . . . that the means chosen do not 'burden substantially more speech than is necessary to further the government's legitimate interests.'"
In other words, a restriction against shouting through a bullhorn at 3:00 AM in a residential neighborhood may restrict speech, but it is constitutional because it is unrelated to the content of the speech. In the DeCSS case, the court ruled that the government objection was to the use of the program as an apparatus to perform an illegal act (bypassing copy protection) and not to its content. That is, DeCSS would also have been illegal if the same function could be performed by a mechanical device or an electrical circuit that contained no software at all.
There isn't even a remote possibility of arguing that in the Microsoft antitrust case the government was objecting to anything but content. The government claimed that Microsoft's action in incorporating components of the Internet Explorer Browser into the operating system and extensions that it made to the Java programming language were anticompetitive. In this case, the government had no objection at all to the external behavior of the system viewed as an "apparatus". Had IE been distributed separately and installed by the user, the system would behave to the end user in the same way, and the government would have no complaint. It was the decision to make browser function part of the standard content of Windows that raised problems for the government, and it is an attempt by nine states to separate the browser (and Media Player) from the operating system that keeps the case going.
Since the government doesn't object to separate distribution, the First Amendment question turns on an issue that was raised, from a different point of view, in much of the antitrust argument. Does an integrated browser, where the components are combined by Microsoft in the design of the operating system, differ from a standalone browser that is added to the system by the user. In the antitrust context, this question was raise in various "product quality" versions. Is it more efficient or more reliable for Microsoft to combine the feature than for the end user to combine them after taking the machine home?
However, the First Amendment claim applies a different metric to the same question. Does integrated browser function express a different view about operating system design, application program development, application programming interfaces, and user interface architectures? I think that most professional programmers given an opportunity to examine this question will agree that browser integration does express an idea. The idea is not, after all, original to Microsoft. During the period of 1996 to 1998, Apple and IBM jointly worked on a family of projects including an integrated Web browser called "Cyberdog". Apple had a Web Site full of whitepapers explaining why an integrated browser is better than a standalone browser. Apple ran out of money to support further Cyberdog development, but that doesn't mean that the original idea stopped being an "idea".
Let me ask the same question from a different point of view. Does a performance of West Side Story differ substantially from watching a performance of Romeo and Juliet, then listening to a CD of the Broadway Cast recording of the musical. You get the same story. You hear the songs. Aren't they the same thing? Everyone understands that there is a synergy between the story, the dancing, and the songs that is lost when they are separated. It takes a Software Engineer to understand and show you that a different version of synergy, but one also concrete and important, applies to programming interfaces and Web standards.
Netscape and Sun support a view that operating systems should be interchangeable. Netscape has a standalone Browser that works exactly the same on Windows, Mac, and Unix machines. Sun has a Java language that supports the "write once run anywhere" philosophy. The problem, however, is that to use the services of Netscape you have to launch the Navigator Browser and then figure out how to communicate with it. To use Java you have to launch the Sun runtime, and then communication into the Java code running under the runtime is awkward because Sun also has a "100% Pure Java" slogan that discourages the use of other languages.
The problems of moving an application from one operating system to another arise because each operating system defines its own set of system services and conventions for the user interface. Apple created its interface for the Mac. Unix has Motif. Windows currently has a programming interface called Win32. There was never an organization with the authority and power to define a programming interface that would be an industry standard, until the Web came along.
The Web wasn't originally designed to be an operating system programming interface. It was a set of document formats and programming interfaces for Web pages written in HTML, formatted in Cascading Style Sheets (CSS), transmitted over HTTP from Web servers. Since the Web wasn't created by any company, standards are set by the World Wide Web Consortium (http://www.w3c.org/). The standard programming interface is called the DOM.
Microsoft had an idea. Suppose this DOM interface (and the HTML document, CSS formatting, XML data, XSLT transformation language, and other W3C standards) were built into the operating system and turned into a complete User Interface standard. Of course programs could continue to use the Win32 interface they had always been using. However, if a program preferred to base its interface design on Web objects and conventions, they would have that choice as well.
As to Java, well Microsoft added extensions to the Java programming language so that it could communicate easily with other programs written in other languages. For example, under Microsoft's runtime a Java program can load Excel, load a spreadsheet, plug in numbers, let Excel run the calculations, and then extract the results. Alternately, in the Microsoft version, a Java program can be packaged up to perform a specific service and be called from Excel. Microsoft also wanted to extend the good ideas of Java to 20 other programming languages.
The Netscape/Sun view and the Microsoft view are really complimentary. When it is important for an application to run the same on many different types of systems, then the Netscape and Sun ideas are best. When a Visual Basic program wants to display help files in HTML, then the Microsoft idea is good. There is room in the world for both ideas. On any given programming project, it should be up to the programmer to decide which approach to take.
The original District Court order and subsequent proposed remedies from the "non-settling states" seek to take away from programmer the right to choose between between these two points of view. They would require Microsoft to stop publishing material that supports its view of optimal system structure. Microsoft would only be allowed to publish material that supports the Netscape/Sun approach.
Once you realize that this is a case about the content of a publication, these attempts at censorship and government enforced orthodoxy will never pass constitutional analysis. In the current system, there are a half billion PCs world wide that can all run Microsoft's integrated browser function and Netscape's standalone browser function. They can all run Microsoft's extended Java runtime and Sun's portable Java runtime. All ideas are freely available to everyone, and the individual user can make up his or her own mind.
If the government cannot ban the New York Times from publishing information because, in the opinion of the government, the material threatens national security, then why should the DOJ be able to prevent Microsoft from publishing its expression of the best operating system design because, in the opinion of the government, it reduces the probability that some future operating system vendor will emerge to offer new competition.
The government's argument failed to convince any of the seven judges of the DC Circuit Court of Appeals that it met the lax standards of an antitrust argument. If you now subject the same argument to the much harsher scrutiny required for an exemption to First Amendment protection, there is no way this long list of hypothetical, theoretical, possible maybes can be regarded as the kind of "compelling" government interest needed to restrict speech.