This document is available in two formats: this web page (for browsing content), and PDF (comparable to original document formatting). To view the PDF you will need Acrobat Reader, which may be downloaded from the Adobe site. For an official copy, please contact the Antitrust Documents Group.


PATRICIA G. BUTLER
DANIELLE R. ODDO
Howrey Simon Arnold & White, LLP
1299 Pennsylvania Avenue, N.W.
Washington, D.C. 20004
(202) 783-0800

KENNETH M. FRANKEL
Finnegan, Henderson, Farabow, Garrett & Dunner, L.L.P.
1300 1 Street, N.W.
Washington, DC 20005
(202) 408-4000
Attorneys for non-party Red Hat, Inc.


IN THE UNITED STATES DISTRICT COURT
FOR THE DISTRICT OF COLUMBIA



UNITED STATES OF AMERICA,          

                  Plaintiff,

                  v.

MICROSOFT CORPORATION,

                  Defendant.



STATE OF NEW YORK ex. rel.
Attorney General ELIOT SPITZER, et al.,          

                  Plaintiffs,

                  v.

MICROSOFT CORPORATION,

                  Defendant.


|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|         
Civil Action No. 98-1232 (CKK)











Civil Action No. 98-1233 (CKK)

COMMENTS OF RED HAT, INC. TO REVISED PROPOSED FINAL
JUDGMENT AND COMPETITIVE IMPACT STATEMENT IN UNITED STATES
V. MICROSOFT CORP.
, CIVIL NO. 98-1232, IN THE UNITED STATES
DISTRICT COURT FOR THE DISTRICT OF COLUMBIA

  1. INTRODUCTION

Pursuant to the Antitrust Procedures and Penalties Act, 15 U.S.C. {} 16, Red Hat, Inc. ("Red Hat") files comments to the revised Proposed Final Judgment, filed November 6, 2001, and the Competitive Impact Statement, filed November 15, 2001, in United States v. Microsoft Corp., Civil No. 98-1232, in the United States District Court for the District of Columbia. Red Hat files these comments because the Proposed Final Judgment will not remedy the anti-competitive effects of Microsoft's antitrust violations that were upheld by the United States Court of Appeals for the District of Columbia Circuit in its June 23, 2001 decision. As a result, the market for PC-compatible operating systems -- in which Microsoft unlawfully maintained its monopoly -- will not return to a competitive environment, and the mandate of the District of Columbia Court of Appeals will be thwarted.1

  1. BACKGROUND

It is no exaggeration to say that Linux is the operating system that provides the most serious and fastest growing competition to the Microsoft operating system. Linux is the PC-compatible open source operating system based on the kernel developed by Mr. Linus Torvalds in the early 1990s, and in the short amount of time that it has been in the marketplace, the Linux operating system has become a viable competitor to other operating systems. Red Hat, which began in 1994, offers the Red Hat version of the Linux operating system with support and software applications and is the largest distributor of open source Linux. In order for the Proposed Final Judgment to have an effect in restoring the competitive nature of the PC-compatible operating system market, Red Hat believes that each and every provision must be viewed with the overall perspective of whether the provision provides a level playing field for companies such as Red Hat, which offer direct competition in the injured market, or whether the provision directly or indirectly will enable Microsoft to perpetuate the monopoly it has been found to have maintained illegally. In order to provide a background for these comments to the Proposed Final Judgment, a brief overview of open source, and Red Hat Linux follows.

Open source and free software is distinct from traditional (proprietary) software in that it is produced by a generally voluntary, collaborative process, and accompanied by a license that pants users the right to:

  1. have the source code,
  2. freely copy the software,
  3. modify and make derivative works of the software, and
  4. transfer or distribute the software in its original form or as a derivative work, without paying copyright license fees.

Many open source and free software licenses also embody the concept known as copyleft. Simply put, this is the condition that all versions of the product, including derivative works, be distributed along with, and subject to, the conditions and rights in the license under which they were received. This concept is central to the ability of a licensor to ensure that its product remains open source or free software.

The underlying principle is that improvements to a product are given back to the open source and free software community. In this way, open source and free software is continually improved, with the modifications being made available to all. Without the ability to impose this condition on further distribution, a copy, or a derivative work made pursuant to the authorization granted in the license, could be distributed without the right to copy, modify, distribute or have the source code -- in effect it would be transformed into a proprietary work. It would cease to be "free."

The benefits of open source and free software are numerous. In practical and commercial terms, open source and free software is stable, high quality software, which users are free to tailor to their own purposes. As the source code is available to all, a user is free to remedy any bugs it may find, maintain the software itself, or hire a third party to do so. The availability of the source code also allows the creation of complementary and interoperable programs by anyone and everyone, with no need to reverse engineer the product. As an element in the competitive environment, open source software provides an almost pure form of competition in the software (and, of course, operating system) competitive environment. Improvements are quickly available and users are able to make product-quality based choices, unfettered by many of the considerations that occur in other competitive markets. Moreover, because of the size of the community that participates in the open source arena, products are quickly debugged, refined and improved; greatly benefiting the ultimate end user.

From a company with only $482,000 in revenue in 1995, Red Hat has grown to over $100 million in revenue in 2001. The vast majority of Red Hat's revenues are derived from the services it offers around its well-known Linux distribution, not from license fees or royalties. Despite its rapid growth, however, until last year Red Hat Linux was not considered an effective competitor with either Sun Microsystems or Microsoft in the server market. With increasing success, Red Hat has now penetrated that market, demonstrating that it can be an effective competitor where no illegal monopoly exists. The same cannot be said for the desktop operating system market, the subject of many of the claims and findings against Microsoft in this matter. Because of Microsoft's stranglehold on that market, with over a 94% marketshare -- a stranglehold unlawfully maintained -- Red Hat has elected not to attempt to compete until a level playing field can be established. Any efforts by Red Hat toward competing would be utterly fruitless and an unjustified use of corporate resources.

Microsoft has made no secret of the fact that it considers companies such as Red Hat to be potential competitive threats in the marketplace. According to Microsoft's own executives, Microsoft has contacted "U.S. lawmakers" in an effort to curtail the spread of the Linux operating system. Microsoft Executive says Linux Threatens Innovation, Feb. 14, 2001, Bloomberg News, at http://news.cnet.com/investor/news/newsitem/0-99001028-4825719-RHAT.html. (Ex. A attached hereto.) Microsoft's CEO, Steve Ballmer has described Linux as a "cancer that attaches itself in an intellectual property sense to everything it touches." Microsoft CEO takes lunch break with the Sun-Times, Chicago Sun Times, June 1, 2001, at http://www.suntimes.com/output/tech/cst-fin-micro01.html(Ex. B attached hereto.); see also Joe Wilcox & Stephen Shankland, Why, Microsoft is wary of open source, CNET News.com, June 18,2001, at http://news.com.corn/21001001-268520.html (Ex. C attached hereto.); Stephen Shankland, Microsoft license spurns open source, CNET News.com, June 22, 2001, at http://news.com.com/2100-1001268889.html (Ex. D attached hereto.); Mike Ricciuti, Microsoft memo touts Linux, CNET News.com, Nov. 5, 1998, at http://news.com.com/2100-1001-217563.html (Ex. E attached hereto.); Joe Wilcox & David Becker, Microsoft sues Linux start-up over name, CNET News.com, Dec. 20, 200l, at http://news.com.com/2100-1001-277314.html (Ex. F attached hereto.). From these comments, it is clear, that, unless the Proposed Final Judgment protects the ability of non-Microsoft operating systems such as Red Hat Linux to gain access to, and compete for, software developers and users, and to compete, the remedies aspect of this lawsuit will be a failure. Therefore, in order for the Department of Justice to effect a remedy scheme that will address the findings of the Court of Appeals, the Department of Justice must ensure the ability of companies such as Red Hat to compete. A review of the Proposed Final Judgment, however, shows little to no attention paid to the very companies that directly compete in the market in which Microsoft unlawfully has maintained its monopoly. Unfortunately, this is despite the clear intent of the Competitive Impact Statement, in which the Department of Justice states:

Appropriate injunctive relief in an antitrust case should: (1) end the unlawful conduct; (2) "avoid a recurrence of the violation" and others like it; and (3) undo its anticompetitive consequences. See Nat'l Soc'y of Prof'l Eng'rs v. United States, 435 U.S. 679, 697 (1978); United States v. E.I du Pont de Nemours & Co., 366 U.S. 316, 326 (1961); Int'l Salt Co. v. United States, 332 U.S. 392,401 (1947); United States v/Microsoft Corp., 253 F.3d 34, 103, 107 (D.C. Cir. 2001) Restoring competition is the "key to the whole question of an antitrust remedy," du Pont, 366 U.S. at 326. Competition was injured in this case principally because Microsoft's illegal conduct maintained the applications barrier to entry into the personal computer operating system market by thwarting the success of middleware that would have assisted competing operating systems in gaining access to applications and other needed complements. Thus, the key to the proper remedy in this case is to end Microsoft's restrictions on potentially threatening middleware, prevent it from hampering similar nascent threats in the future and restore the competitive conditions created by similar middleware threats. The Proposed Final Judgment imposes a series of prohibitions on Microsoft's conduct that are designed to accomplish these critical goals of an antitrust remedy.

Competitive Impact Statement filed in U.S. v. Microsoft (D.D.C. Nov. 15, 2001) at 9.

It is with consideration being given to the findings of the Court of Appeals and the realistic impact of the Proposed Final Judgment that Red Hat files these comments.

  1. COMMENTS ON INTELLECTUAL PROPERTY ISSUES ASSOCIATED WITH THE FINAL JUDGMENT

    1. The Proposed Final Judgment Would Neither Remedy Microsoft's Monopolization of, Nor Restore Competitive Conditions to, the Market for PC-Compatible Operating Systems, Because Microsoft Would Remain Free to Shut Down Competitive Operating Systems and Middleware Through Assertion of Microsoft's Intellectual Property Portfolio

For intellectual property reasons, the Proposed Final Judgment would fail to remedy Microsoft's monopolization of the operating systems market and fail to accomplish the goal to restore competitive conditions to the market. It would fail because it would permit Microsoft to block software and hardware developers, users, and vendors from developing, using, distributing, or promoting competitive operating systems by threatening or bringing suits for infringement of Microsoft's extensive intellectual property portfolio. To provide an effective remedy and accomplish that goal, the narrow scope of licenses to Microsoft's intellectual property fights required by the Proposed Final Judgment must, at a minimum, be expanded to allow those persons to engage in that competitive conduct without the threat of an infringement suit by Microsoft.

More specifically, the Proposed Final Judgment would prohibit Microsoft from retaliating against software and hardware developers, users, and vendors if they were to develop, use, distribute, or promote operating systems or middleware that competes with Microsoft's Windows operating system or middleware. But giving with its right hand and taking with its left, the Proposed Final Judgment would exempt from prohibited retaliation -- and expressly allow -- Microsoft to sue those persons for infringement of Microsoft's intellectual property fights if they engage in that conduct.

Two primary effects would flow from this exemption. First, Microsoft would remain free to assert its intellectual property fights to stop developers and vendors of competitive operating systems and middleware from developing, using, distributing, or promoting their software. In that event, the downstream software and hardware developers, users, and vendors who want to use and work with competitive operating systems and middleware would not have any competitive operating systems or middleware to use, distribute, or promote. Second, Microsoft would remain free to assert the same intellectual property rights to stop those downstream developers, users, and vendors from using, distributing, or promoting such competitive operating systems and middleware.

If no competitive operating systems and middleware were available or if the downstream developers, users, and vendors could not use, distribute, or promote competitive operating systems or middleware because Microsoft threatens or brings intellectual property infringement suits, the Proposed Final Judgment cannot accomplish its purpose: to remedy Microsoft's unlawfully maintenance of its monopoly and restore competitive conditions to the market Microsoft in which Microsoft's monopoly was unlawfully maintained.

The antitrust remedy should at least remove this exemption and define retaliation to include threatening or bringing suit for infringement of Microsoft's intellectual property portfolio. Such a remedy would be proper and consistent with both Supreme Court and Justice Department precedent.

      1. Microsoft Illegally Maintained a Monopoly in the Market for Intel-Compatible Operating Systems

The district court held, and the court of appeals affirmed, that Microsoft had illegally "maintained a monopoly in the market for Intel-compatible PC operating systems in violation of [Sherman Act] º 2." United States v. Microsoft Corp., 253 F.3d 34, 45, 50 (D.C. Cir. 2001). The remedy in this case should at the very least restore competition to that market, because that was the only district court holding that the court of appeals affirmed. See id. at 46. Unless the remedy restores competition within that market, the courts' holdings, and the Justice Department's and States' efforts in proving that antitrust violation, will be nullities.

      1. The Purpose of an Antitrust Remedy Is to Terminate the Monopoly and Restore Competition to the Monopolized Market

Controlling case law and the Justice Department both recognize that the purpose of the remedy in a Section 2 case is to end the monopoly and restore competition to the market that the defendant monopolized. As the Supreme Court explained, and as the Court of Appeals recognized in Microsoft, in a monopolization case "it is the duty of the court to prescribe relief which will terminate the illegal monopoly, deny to the defendant the fruits of its statutory violation, and ensure that there remain no practices likely to result in monopolization in the future." United States v. United Shoe Mach. Corp., 391 U.S. 244, 250 (1968); see Microsoft, 346 F.3d at 103 (quoting United Shoe). Indeed, the goal of relief is to make sure that competition results, not just to end a lawsuit. As the Supreme Court instructed:

In an equity suit, the end to be served is not punishment of past transgression, nor is it merely to end specific illegal practices. A public interest served by such civil suits is that they effectively pry open to competition a market that has been closed by defendants' illegal restraints. If this proposed Final Judgment accomplishes less than that, the Government has won a lawsuit and lost a cause.

International Salt Co. v. United States, 332 U.S. 392, 401 (1947).

In accordance, the Justice Department explained that its purpose in entering into the Proposed Final Judgment was to "restore competitive conditions to the market." Competitive Impact Statement at 2. Likewise, the Justice Department told the public in its press release that the "settlement will bring effective relief to the market and ensure that consumers will have more choices in meeting their computer needs." Press Release, U.S. Justice Department, Department of Justice and Microsoft Corporation Reach Effective Settlement on Antitrust Lawsuit, Nov. 2, 2001, at http://www.usdoj.gov/opa/pr/2001/November/01_at_569.htm (Ex. G attached hereto.).

      1. Intellectual Property Restrictions Would Prevent the Proposed Final Judgment From Restoring Competitive Conditions to the Monopolized Market for Operating Systems

        1. The Proposed Final Judgment Would Ban Microsoft from Retaliating Against Certain Groups if They Work with Operating Systems or Middleware that Compete with Microsoft's Windows or Middleware

The Proposed Final Judgment would protect certain groups of software or hardware developers, users, and vendors (OEMs, ISVs, and IHVs)2 from undefined "retaliation" by Microsoft if the groups were to work with operating systems or middleware that compete with Microsoft's Windows or middleware. It would provide that Microsoft shall not "retaliate" against those groups if they engage in certain conduct with any "software that competes with Microsoft Platform Software," which the Proposed Final Judgment defines to include Microsoft's Windows operating system "and/or a Microsoft Middleware Product."3 For example, the Proposed Final Judgment would provide that Microsoft "shall not retaliate" against an:

  1. OEM for "developing, distributing, promoting, using, selling, or licensing any software that competes with" Microsoft's Windows operating system or middleware. Proposed Final Judgment Section III.A. 1.

  2. ISV or IHV for "developing, using, distributing, promoting or supporting any software that competes with" Microsoft's Windows operating system or middleware. Proposed Final Judgment Section III.F. 1 .a.

        1. The Ban on Retaliation Would Not Ban Infringement Suits

While the term "retaliate" is undefined, the Proposed Final Judgment contradictorily exempts from the scope of prohibited retaliation -- and therefore expressly permits -- suits for infringement of Microsoft's intellectual property rights. More specifically, the provisions banning retaliation against OEMs, ISVs, and IHVs are followed by an exemption:

Nothing in this provision shall prohibit Microsoft from enforcing.., any intellectual property right that is not inconsistent with this Final Judgment.

Proposed Final Judgment Section III.A; see Section III.F.3. While the term "inconsistent" also is undefined, it is clear from a later section that a suit to enforce intellectual property rights against conduct that is protected from Microsoft's retaliation nevertheless is "not inconsistent with" the Proposed Final Judgment.

The later section, Section III.I, provides that Microsoft must offer to license its intellectual property rights to the groups if those rights are required to exercise an option expressly provided under the Proposed Final Judgment. If it stopped there, the provision would be fine. But an exemption to that license provision emphasizes that the required license is very narrow, and that Microsoft could still bring infringement suits if the groups engage in the very conduct that is protected from Micros0ft's retaliation:

I. Microsoft shall offer to license to ISVs, IHVs,... and OEMs any intellectual property rights owned or licensable by Microsoft that are required to exercise any of the options or alternatives expressly provided to them under this Final Judgment, provided that

* * *

2. the scope of any such license (and the intellectual property rights licensed thereunder) need be no broader than is necessary to ensure that an ISV, IHV,... or OEM is able to exercise the options or alternatives expressly provided under this Final Judgment (e.g., an ISV's, IHV's ... and OEM's option to promote Non-Microsoft Middleware shall not confer any rights to any Microsoft intellectual property rights infringed by that Non-Microsoft Middleware);

* * *

Beyond the express terms of any license granted by Microsoft pursuant to this section, this Final Judgment does not, directly or by implication, estoppel or otherwise, confer any fights, licenses, covenants or immunities with regard to any Microsoft intellectual property to anyone.

Proposed Final Judgment, Section III.I (emphasis added). In accordance, the Justice Department's November 15, 2001 Competitive Impact Statement explains that a purpose of this provision is to "[permit] Microsoft to take legitimate steps to prevent unauthorized use of its intellectual property." Competitive Impact Statement at 49.

"Unauthorized use" would include infringement. A patent, for example, provides the patent owner the exclusive fights to make, use, sell, and offer to sell the patented subject matter. 35 U.S.C. § 271(a). Those exclusive fights cover developing, distributing, promoting, using, and selling. Thus, while earlier sections of the Proposed Final Judgment say Microsoft could not "retaliate" against that conduct (Proposed Final Judgment Sections III.A.1, III.F.1.a), this later section contradictorily provides that Microsoft could retaliate against the conduct -- by lawsuits (Proposed Final Judgment Section III.1.2).

To illustrate the problem, apply the specific example quoted above, from Section III.I.2 of the Proposed Final Judgment, to an ISV that promotes an operating system that competes with Windows, and assume that Microsoft has patents that arguably cover that competitive operating system. Under the Proposed Final Judgment, Microsoft would be prohibited from "retaliat[ing]" if the ISV were "promoting" the competitive operating system, such as by offering it for sale. Proposed Final Judgment Section III.F.1.a. But the exemption provides that the option to promote the software without retaliation "shall not confer any rights to any Microsoft intellectual property rights [e.g., patents] infringed by that" competitive operating system. Proposed Final Judgment Section III.I.2. Thus, Microsoft could sue the ISV for infringing its patents by promoting the competitive software.

Consequently, the Proposed Final Judgment would prohibit Microsoft from "retaliating" against an ISV or IHV for "developing, using, distributing, [or] promoting" the competitive operating system -- but Microsoft could sue the ISV or IHV for patent infringement for the same acts: making (developing), using, selling (distributing), or offering to sell (promoting) that system. Likewise, it would prohibit Microsoft from "retaliating" against an OEM for "developing, distributing, promoting, using, or selling" a competitive operating system -- but Microsoft nonetheless could sue the OEM for patent infringement for that conduct.

Thus, while Microsoft could not "retaliate," it could sue for infringement, thereby completely eviscerating the ban on retaliation.

    1. Infringement Suits by Microsoft Based on Its Massive Intellectual Property Portfolio Could Stop Competitive Operating Systems or Middleware

These intellectual property exemptions could permit Microsoft to completely prevent any competition from other operating systems or middleware, both at the development level and downstream throughout the development and distribution chain.

ISVs, i.e., non-Microsoft entities that develop or market software products, would include developers and vendors of competitive operating systems. See Proposed Final Judgment Section VI.I.4 A patent suit against such a developer or vendor for infringement of Microsoft's patents covering competitive operating systems could result in an injunction against making, using, selling, or offering to sell the competitive system, as well as damages (which could be trebled) and attorney fees for any sales. See 35 U.S.C. §§ 283-285. If that occurred, downstream ISVs, IHVs, and OEMs would not have any competitive operating systems with which they could work.

ISVs also would include downstream developers and vendors of middleware or applications software. A patent suit against them for infringement of Microsoft's patents would prevent them from, e.g., using a competitive operating systems to develop their software. Downstream IHVs and OEMs would include developers and vendors of personal computers. A patent suit against them for infringement of those Microsoft patents would prevent them from, e.g., making or selling any computers using competitive operating systems.

The same would apply to competitive middleware. A patent suit against an ISV that develops competitive middleware would preclude the availability of competitive middleware. A patent suit against downstream developers or vendors of applications software would preclude them from using competitive middleware to develop their software. And a patent suit against downstream IHVs and OEMs would preclude them from making or selling computers using competitive middleware.

Microsoft has amassed a large portfolio of numerous patents and other intellectual property that potentially covers competitive operating systems and middleware. While any infringement analysis must be specific to a particular software, it is clear that Microsoft has numerous patents that potentially could be asserted against that competitive software. The chart attached as Exhibit H lists over 1400 patents owned by Microsoft in December 2001 that are in Patent and Trademark Office classes that include operating systems and middleware software. Additional Microsoft patents covering operating systems and middleware may be in other classes.

If Microsoft were to bring suit on multiple patents, the accused infringer would have to win against every patent to avoid an injunction and damages. The odds of losing are so great that only the most well financed competitive operating system or middleware developer or vendor could consider fighting that battle. The result would be the same downstream. If the competitive operating system or middleware developer or vendor indemnified its downstream customers (ISVs, IHVs, OEMs, and ultimate consumers), it would face the same problem. If it did not indemnify the downstream customers, those customers would face the problem directly. As a result, a threat of suit by Microsoft could be enough to stop the making, using, selling, or offering to sell competitive operating systems and middleware at all levels in the development-distribution chain.

      1. Microsoft Intends to Enforce Its Intellectual Property

Microsoft clearly declared its intent to enforce its intellectual property rights against competitors by including the exemption for infringement suits in Section III.I of the Proposed Final Judgment and by arguing that the non-settling states were seeking to confiscate its intellectual property. See, Defendant Microsoft Corporation's Remedial Proposal at 2. (Dec. 12, 2001) ("Microsoft Remedial Proposal"). Similarly, Craig Mundie, Microsoft's Senior Vice President of Advanced Strategies, reportedly told the audience at an Open Source convention last July:

Well, at the end of the day, if you have a patent, you enforce the patent if it's valuable to you. And so I think that Microsoft and other people who have patents will ultimately decide to enforce those patents.

Shared Source v. Open Source: Panel Discussion, O'Reilly Network, Aug. 9, 2001, at http://linux.oreillynet.com/pub/a/linux/2001/08/09/oscon panel.html (Ex. I attached hereto.). The threat of Microsoft's patent enforcement has caused concern among the open-source community, as reported last August. Galli, Peter, "Microsoft Patents a Threat to Open Source," eWEEK, Aug. 28, 2001, at http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2808548.00.html ("Members of the open-source community are becoming increasingly concerned by ongoing moves from Microsoft Corp. to acquire a range of software patents that the company can potentially use down the line to attack and try to restrict the development and distribution of open-source software.") (Ex. J attached hereto.).

      1. The Intellectual Property Problem Can Be Fixed by Defining Retaliation to Include Infringement Suits and Eliminating the Exemptions

The Proposed Final Judgment should define "retaliate" in Section VI of the Proposed Final Judgment. While the term should remain broad to bar any type of retaliation, it can specifically include bringing infringement suits:

"Retaliate" means any type of retaliation and is intended to be construed broadly. It specifically includes threatening or bringing a suit for infringement of any intellectual property rights owned or licensable by Microsoft.

In addition, the exemption sections should be modified to prevent infringement suits against the protected groups for engaging in conduct that the Proposed Final Judgment would prohibit Microsoft from retaliating against:

For OEMs, Section III.A should be modified as follows -- after the sentence "Nothing in this provision shall prohibit Microsoft from enforcing any provision of any license with any OEM or any intellectual property right that is not inconsistent with this Final Judgment," add the following:

Acts that would be inconsistent with this Final Judgment include, but are not limited to, threatening or bringing suit for infringement of any intellectual property rights that would restrict the OEM from developing, distributing, promoting, using, selling, or licensing any software that competes with Microsoft Platform Software or any product or service that distributes or promotes any Non-Microsoft Middleware.

For ISVs and IHVs, Section III.F.3 should be modified as follows -- after the sentence "Nothing in this section shall prohibit Microsoft from enforcing any provision of any agreement with any ISV or IHV, or any intellectual property right, that is not inconsistent with this Final Judgment," add the following:

Acts that would be inconsistent with this Final Judgment include, but are not limited to, threatening or bringing suit for infringement of any intellectual property rights that would restrict the ISV or IHV from developing, using, distributing, promoting, or supporting any software that competes with Microsoft Platform Software or any software that runs on any software that competes with Microsoft Platform Software, or exercising any of the options or alternatives provided for under this Final Judgment.

Also, Section II1.1.2. should be deleted and replaced as follows --

the scope of any such license (and the intellectual property rights licensed thereunder) need be no broader than is necessary to ensure that an ISV, IHV, IAP, ICP or OEM is able to exercise the options or alternatives expressly provided under this Final Judgment, and to engage in conduct against which this Final Judgment prohibits Microsoft from retaliating;

To enable those third parties to obtain those licenses, Section VIII of the Proposed Final Judgment should be modified as follows:

Nothing in this Final Judgment is intended to confer upon any other persons any rights or remedies of any nature whatsoever hereunder or by reason of this Final Judgment, except as provided in Section III.I.

      1. The Proposed Relief Requiring Licensing of Microsoft's Intellectual Property Is Proper and Consistent with Precedent

The proposed modifications would require Microsoft to license certain of its intellectual property: that which potentially covers competitive operating systems, middleware, or other software or hardware and is necessary to ensure that the protected groups are free to engage in the conduct against which the Proposed Final Judgment would prohibit Microsoft from retaliating. Compulsory licensing of intellectual property to remedy monopolization is consistent with Supreme Court and Justice Department precedent, including the Proposed Final Judgment as it now stands, even though abuse of intellectual property rights was not found to be predatory conduct.

To achieve the goal of restoring competitive conditions to the marketplace discussed above, the court has "'large discretion' to fit the decree to the special needs of the individual case." Ford Motor Co. v. United States, 405 U.S. 562, 573 (1972) (quoting International Salt Co. v. United States, 332 U.S. 392, 401 (1947)). That discretion includes prohibiting acts that may otherwise be valid, if necessary to correct the effects of the violation. "Equity has power to eradicate the evils of a condemned scheme by prohibition of the use of admittedly valid parts of an invalid whole." United States v. Bausch & Lomb Optical Co., 321 U.S. 707, 814 (1944). As the Court similarly instructed in United States v. Paramount Pictures, Inc., 334 U.S. 131,148 (1948), to achieve effective relief a court can include restrictions on otherwise lawful conduct: "[E]quity has the power to uproot all parts of an illegal scheme -- the valid as well as the invalid -- in order to rid the trade or commerce of all taint of the conspiracy."

Compulsory licensing of patents was ordered to remedy monopolization in, for example, United States v. United Shoe Mach. Corp., 110 F. Supp. 295 (D. Mass. 1953), aff'd, 347 U.S. 521 (1954), even though enforcement of the patents was not an alleged predatory act. The court concluded that the defendant had not improperly asserted its patents, but they were a barrier to entry into the monopolized market. See 110 F. Supp. at 297,332-33. In determining the remedy, the court's goals were not only to eliminate specific predatory practices that had caused or would cause monopolization, but also "to restore workable competition in the market." Id. at 346-47. The court explained that licensing of patents was proper as part of the remedy to reduce the effects of the defendant's monopolization caused by non-patent predatory business practices:

Defendant is not being punished for abusive practices respecting patents, for it engaged in none .... It is being required to reduce the monopoly power it has, not as a result of patents, but as a result of business practices. And compulsory licensing, on a reasonable royalty basis, is in effect a partial dissolution, on a non-confiscatory basis.

Id. at 351. Fifteen years later, the Supreme Court again concluded that the relief granted was within the proper scope of relief for an antitrust violation. United States v. United Shoe Mach. Corp., 391 U.S. 244, 251 (1968).

Similarly, the Justice Department has required compulsory licensing of intellectual property as part of the remedy in proposed final judgments in antitrust cases. One of the latest examples, and perhaps the most pertinent, is this Proposed Final Judgment's requirement that "Microsoft shall offer to license to ISVs, IHVs .... and OEMs any intellectual property rights owned or licensable by Microsoft that are required to exercise any of the options or alternatives expressly provided to them under this Final Judgment .... "(Proposed Final Judgment Section III.I.) Indeed, the Competitive Impact Statement provides that some of those provisions "are designed specifically to prevent Microsoft from using its intellectual property rights to frustrate the intended effectiveness of the Proposed Final Judgment's disclosure provisions." Competitive Impact Statement at 49. The exemption from retaliation by infringement suits, however, allows that frustration.

The issue, therefore, is not whether the remedy can properly include compulsory licensing of Microsoft's intellectual property. Instead, the issue is the scope of the licensing required. As shown above, the scope of the proposed modifications to the intellectual property provisions is reasonable and required to remedy the monopolization and restore competition to the market.

The proposed modifications would not "result in... wholesale confiscation of Microsoft's intellectual property," a criticism that Microsoft wrongly asserted against the non-settling states' proposed remedy. Microsoft Remedial Proposal at 2. It would require only licensing that is necessary to prevent frustration of the anti-retaliation provisions. Moreover, the licenses could include royalties or other consideration on a reasonable and non-discriminatory basis, as provided in Section III.I. 1.

Nor would the proposed modifications be a significant disincentive to innovation by Microsoft. Since the Proposed Final Judgment would expire in five years (see Proposed Final Judgment, Section V), the obligation to license would exist only for that limited time period. Any future innovation by Microsoft also would be free of this obligation after those five years. Any arguable effect on Microsoft's incentives to innovate during those five years would be limited and only to the extent necessary to provide effective relief from Microsoft's monopolization.

In opposing the non-settling states' proposed relief, Microsoft pointed to the Court of Appeals' comment that the relief in this case "`should be tailored to fit the wrong creating the occasion for the remedy.'" Microsoft Remedial Proposal at 5 (quoting Microsoft, 253 F.3d at 107). Microsoft also relied upon this Court's statement that the "'scope of any proposed remedy must be carefully crafted so as to ensure that the enjoin[ed] conduct falls within the penumbra of behavior which was found to be anticompetitive.'" Microsoft Remedial Proposal at 6 (quoting Sept. 8, 2001 Tr. at 8). Removing the infringement suit exemption and defining retaliation to include threatening or bringing suit for infringement of Microsoft's intellectual property portfolio would fall well within that scope.

    1. Conclusion Regarding Intellectual Property

The scope of the required intellectual property licensing under the Proposed Final Judgment is far too narrow to remedy the monopolization of, and restore competitive conditions to, the market the courts held Microsoft monopolized -- Intel-compatible operating systems. The modifications to the scope proposed above would be no broader than that which is necessary to allow the groups protected under the Proposed Final Judgment to engage in the specific conduct that the Proposed Final Judgment allows them to engage in without fear of retaliation from Microsoft.

As shown above, unless the scope of the licensing is expanded, and the exemptions for infringement suits removed, "the Government has won a lawsuit and lost a cause." International Salt, 332 U.S. at 401.

  1. COMMENTS TO SECTION III -- PROHIBITED CONDUCT

A focus of any final judgment in this litigation must be to put in place safeguards and protections against future actions by Microsoft that may not fit the known pattern, but that will obtain a familiar result -- unlawful continuation of the Microsoft monopoly. An important aspect of this focus is to make sure that the participants in the marketplace are given a chance at viability in a competitive marketplace. As worded, Section III does not provide the safeguards and protections that are necessary. Prohibiting actual retaliatory conduct by Microsoft is simply insufficient to obtain the goals of the final judgment.

    1. Section III.A

The Department of Justice set forth a clear intent for the impact of Section III.A. As stated in the Competitive Impact Statement, the perceived effect of Section III.A is to "ensure[] that OEMs have the contractual and economic freedom to make decisions about distributing and supporting non-Microsoft software products that have the potential to weaken Microsoft's personal computer operating system monopoly without fear of coercion or retaliation by Microsoft." Competitive Impact Statement at 9.

Unfortunately, Section III.A fails to protect the ability of OEMs to make business choices in a non-coercive atmosphere, for reasons in addition to those discussed above concerning intellectual property.

The conduct that is prohibited in Section III.A is actual retaliatory action by Microsoft against OEMs for, inter alia, dual booting personal computers with other operating systems. More specifically, Section III.A provides that "Microsoft shall not retaliate against an OEM by altering Microsoft's commercial relations with that OEM, or by withholding newly introduced forms of non-monetary Consideration (including but not limited to new versions of existing forms of non-monetary Consideration) from that OEM, because it is known to Microsoft that the OEM is or is contemplating .... " Proposed Final Judgment, Section III.A. As worded, the only point at which injunctive relief is available is after an OEM can show actual retaliation.

The problem with prohibiting only action "after the fact," is that it provides for enforcement only after Microsoft has taken negative action against an OEM. It is no secret that Microsoft is an important business partner to may OEMs and even the potential or implication of the change in an OEMs business relationship with an OEM can be sufficient to prevent action. Section III.A does not remove the business threat that will prevent OEMs from "crossing" Microsoft. Therefore, the parameters of the prohibitions on Microsoft's conduct need to be extended so that enforcement is not triggered only after an OEM has been harmed. By then, it may be too late and an OEM may find itself competitively or financially crippled by an impairment in its relationship with Microsoft. Moreover, by the time the retaliation is remedied, the OEM may even be out of the market. Ideally, Microsoft must be prohibited from maintaining the intimidating business environment that it has created -- an environment that inhibits OEMs from the free exercise of competitive decision making. The language of the Proposed Final Judgment ignores what the Competitive Impact Statement and the Court of Appeals have acknowledged.

Thus, the actions prohibited under Section III.A must encompass a range of activities and not just after the fact retaliation in order to ensure that Microsoft does not continue to maintain unlawfully its monopoly. A possible modification of Section III.A is as follows:

A. Microsoft shall not retaliate against an OEM by threatening to or altering Microsoft's commercial relations with that OEM, or by threatening to or withholding newly introduced forms of non-monetary Consideration (including but not limited to new versions of existing forms of non-monetary Consideration) from that OEM, because it is known to Microsoft that the OEM is or is contemplating: ....

    1. Section III.D

An underlying premise of the Proposed Final Judgment is that if middleware software developers are able to develop and market middleware that can be used on either Microsoft or non-Microsoft operating systems or "that would have assisted competing operating systems in gaining access to applications and other needed complements" (Competitive Impact Statement at 9), then the competitive harm to the operating system market caused by Microsoft's unlawful maintenance of its monopoly will be remedied.

With respect to Section III.D, the Competitive Impact Statement indicates an intent by the Department of Justice to:

ensure[ ] that developers of competing middleware -- software that over time could begin to erode Microsoft's Operating System monopoly -- will have full access to the same interfaces and related information as Microsoft Middleware has to interoperate with Windows Operating Products. Microsoft will not be able to hamper the development or operation of potentially threatening software by withholding interface information or permitting its own products to use hidden or undisclosed interfaces.

Competitive Impact Statement at 12.

The Proposed Final Judgment makes an effort to provide the interface and related technical information "transparency" to the entities that the Department of Justice believes will need access to Microsoft software in order to develop software compatible with Microsoft and non-Microsoft operating systems. While the named entities include ISVs, however, they do not specifically include entities that provide non-Microsoft Operating Systems. An argument can be made that the definition for "ISVs" appears to be broad enough to include providers of non-Microsoft operating systems because under the definition "'ISV'" means an entity other than Microsoft engaged in the development or marketing of software products." Proposed Final Judgment, Section VI.I. The question and possible loophole remains, however, that Microsoft might argue that the transparency extends only to entities that develop middleware, but not to entities such as Red Hat -- entities that provide non-Microsoft operating systems. In order to ensure that the protections are as inclusive as possible, the definition of "Independent Software Vendor" can be supplemented to include specifically entities that compete in the operating system market. Thus, under the Section VI -- Definitions -- "ISV" would be modified to mean an entity other than Microsoft that is engaged in the development, marketing or providing of software products or services, including Operating System Providers.

    1. Section III.F

According to the Competitive Impact Statement, Section III.F "redresses conduct by Microsoft specifically found unlawful by the District Court and the Court of Appeals." By addressing only actual retaliatory conduct, however, Section III.F suffers from the same infirmity as Section III.A, and may provide injunctive relief only after Microsoft has taken action that will harm a business entity. Microsoft must not be prohibited only from actual retaliation, but must also be prohibited from intimidating, threatening to withhold business from, coercing or retaliating against any ISV or IHV because of activities that will further competing middleware or operating systems. See comment on Section III.A, supra.

    1. Section III.J

As worded, Section III.J provides exceptions to Microsoft's disclosure obligations that have a serious potential to defeat the intent of the Proposed Final Judgment. The Competitive Impact Statement makes it clear that the exception to Microsoft's disclosure obligations is meant to be a "narrow exception limited to specific end-user implementations of security items such as actual keys, authorization tokens or enforcement criteria, the disclosure of which would compromise the security of a `particular installation or group of installations' of the listed security features." Competitive Impact Statement at 18. The nature of security, however, requires that Section III.J should be modified so that there is a detailed specification of what Microsoft must provide under the mandates of the Proposed Final Judgment, rather than what it is excluded from providing within the context of security. Because of the potentially wide-ranging negative impact of this Section, Red Hat believes some background on the nature of security is required.

All security experts agree that there is no such thing as perfect security, and indeed this pessimistic view extends to the field of computer security. In his book "Secrets and Lies: Digital Security in a Networked World", noted security expert Bruce Schneier explains "modem systems have so many components and connections -- some of them not even known by the systems' designers, implementers, or users -- that insecurities always remain. No system is perfect." If no computer system can be made perfectly secure, then any computer system can potentially suffer a security compromise. Moreover, it is not knowable whether the security compromise will be a result of people having access to information about a security weakness (which they can exploit) or people not having access to such information (which allows others to exploit something one might otherwise be able to defend against). Thus, on the one hand, one could argue that divulging any information whatsoever could lead to a security compromise, but on the other hand, that not divulging any information of any kind could also lead to a security compromise. Such is the nature of computer security (indeed, all security).

One of the main issues in the antitrust case against Microsoft is the fact that Microsoft has controlled information about and permission to use system APIs, Documentation, licenses, and Communications Protocols to discriminate against or retaliate against one or more parties (or classes of parties), and has done so strategically to protect, extend, and indeed abuse its monopoly powers. Certainly any valid remedy for this anti-trust case would enjoin Microsoft from such conduct in the future.

While the Proposed Final Judgment attempts to set guidelines under which Microsoft would be required to document, disclose, or license to third parties portions of APIs or Documentation or portions or layers of Communications Protocols, Section III.J(1) carves out a specific exemption: the case where the disclosure of such would compromise the security of anti-piracy, anti-virus, software licensing, digital fights management, encryption or authentication systems, including without limitation, keys, authorization tokens or enforcement criteria. While this may sound like a fair and reasonable exemption, it is not because Microsoft could legitimately argue that any requirement to document, disclose, or license anything to third parties could, in theory, result in a security compromise of one or more of these systems. Such is the nature of computer security. Thus, Section III.J(1) grants Microsoft legal protection for the very behavior that this Proposed Final Judgment was designed to remedy.

As noted, the Competitive Impact Statement interprets Section III.J(1) as being an extremely limited exemption, essentially only extending to specific keys and security tokens, not to technologies, interfaces or interoperability. This interpretation, however, is not carried over to the language of the Proposed Final Judgment, which gives almost blanket permission to Microsoft to invoke the exemption. An appropriate modification of Section III.J(1) -- other than removing it entirely-- is as follows:

No provision of this Final Judgment shall:

1. Require Microsoft to disclose to any specific end-user implementations of security items such as actual end-user keys, authorization tokens, or enforcement criteria, the disclosure of which would compromise the security of a particular installation or group of installations of the security item. Notwithstanding the foregoing, if any such implementation of a security item requires a specific end-user key, authorization token, enforcement criteria, or analogous information to fully and equitably interoperate with Microsoft Platform Software, Microsoft Middleware, APIs, Communication Protocols, Microsoft applications software, or Microsoft network services (such as e-commerce or internet services), then Microsoft must either (a) disclose such specific end-user key, authorization token, enforcement criteria, or analogous information, (b) provide alternative end-user keys, authorization tokens, enforcement criteria, or analogous information that enable third parties to fully and equitably interoperate with those software, products, or services, or (c) disclose how to make such end-user keys, authorization tokens, enforcement criteria, or analogous information that will fully and equitably interoperate with such software, products, or services; Microsoft must disclose or provide such keys, authorization tokens, enforcement criteria, or analogous information to third parties upon request and in a nondiscriminatory manner. In no event, however, shall Microsoft reserve to itself any functionality for such keys, authorization tokens, enforcement criteria, or analogous information.

    1. Section III.J(2)

Section III.J(2) presents another loophole that Microsoft can manipulate to avoid disclosure of necessary information. Under the provisions of Section III.J(2), Microsoft is permitted to require a certification of the "authenticity and viability" of any business seeking a license of "any API, Documentation or Communications Protocol related to anti-piracy systems, anti-virus technologies, license enforcement mechanisms, authentication/authorization security, or third party intellectual property protection mechanisms of any Microsoft Product." Although the certification is required to be pursuant to "reasonable and objective standards," those standards are established by Microsoft and there is no independent third party approval either of the development or of the implementation of those standards. The Competitive Impact Statements indicates that:

the requirements of this subsection cannot be used as a pretext for denying disclosure or licensing, but instead are limited to the narrowest scope of what is necessary and reasonable, and are focused on screening out only individuals or firms that should not have access to or use of the specified security-related information either because they have a history of engaging in unlawful conduct related to computer software (e.g., they have been found to have engaged in a series of willful violations of intellectual property rights or of one more violations consisting of conduct such as counterfeiting), do not have any legitimate basis for needing the information, or are using the information in a way that threatens the proper operation and integrity of the systems and mechanisms to which they relate.

Competitive Impact Statement at 19. This will not be the case if there is no safeguard on the development or implementation of the standards. For example, Microsoft may decide to include financial or organizational requirements in order for a (1) an entity to be considered a "business" and (2) an entity to be considered an "authentic and "viable" business. Microsoft may decide to require that, in order for an entity to be a "business," it must operate in the market in a currently "traditional" manner, such as Microsoft operates, but not as many open source companies operate. Will a company need to undertake its own software development? Will a company need to own and license its software? Unless Microsoft is held to certain independent guidelines or policing, this provision may gut the intent of the Proposed Final Judgment.

The potential for abuse with this provision is particular Feat when considering the open source development community. Most open source software is not developed or owned by a for-profit business entity. It is the result of collaborative development, with software code contributed by its author for the benefit of all. The restrictive language of Section III.J(2) would expressly permit Microsoft to deny access to such open source development projects.

  1. COMMENTS TO VI -- DEFINITIONS

A fair reading of the Proposed Final Judgment supports that the protections extend to the direct participants in the market in which Microsoft was found to have unlawfully maintained its monopoly -- the providers of competing operating systems. The Proposed Final Judgment, however, needs to ensure that the protections extend to all possible readings. It cannot be ignored that the clear finding Upheld by the Court of Appeals is that Microsoft unlawfully maintained its monopoly in the PC-compatible operating system market. Thus, if there is any possibility that Microsoft can find a loophole, that possible loophole should be closed. It is in this vein that we recommend that the definitions should be expanded to include providers of competing operating systems -- the participants in the market in which Microsoft unlawfully has maintained its monopoly. Operating System Providers, then, should be specifically included within the "ISV" definition -- as recommended, supra. Furthermore, a proposed definition for Operating System Providers follows:

"OSP" means an operating system provider that provides a non-Microsoft software code that, inter alia, (i) controls the allocation and usage of hardware resources (such as the microprocessor and various peripheral devices) of a Personal Computer, (ii) provides a platform for developing applications by exposing functionality to ISVs through APIs, and (iii) supplies a user interface that enables users to access functionality of the operating system and in which they can run applications.

  1. COMMENTS TO SECTION IV -- COMPLIANCE AND ENFORCEMENT PROCEDURES

    1. Special Master

By not providing for the appointment of a Special Master to ensure enforcement of the Proposed Final Judgment, the Justice Department has left the injunctive relief toothless. There is absolutely nothing in the Proposed Final Judgment that provides a speedy vehicle for the resolution of complaints from an independent third party, such as Red Hat, that Microsoft has violated the Proposed Final Judgment. As suggested by the Litigating States in their proposed final judgment, the appointment of a Special Master could be made pursuant to Rule 53 of the Federal Rules of Civil Procedure.

    1. Section IV.B - Appointment of a Technical Committee

The Technical Committee ("TC") as constituted and mandated has no real authority or ability to address quickly and thoroughly third-party complaints regarding Microsoft's compliance with the Proposed Final Judgment. Moreover, it is structured as a committee of compromise and not enforcement. One of the members of the TC is to be selected by Microsoft, one of the members is selected by the plaintiffs and the third member is a joint selection. All of the members are to be "experts in software design and programming." This narrowly restricts the scope of the TC to technical interpretations. It takes out of the realm of the TC's expertise issues relating to business practices and acts that may have a competitive impact on the market.

The TC should be supplemented with or assisted by a Special Master with the authority to order compliance with the Proposed Final Judgment. The Special Master will be able to address complaints relating to business practices as well as complaints relating to software disclosure or use.

    1. Section IV.D -- Voluntary Dispute Resolution

Section D sets forth the actual procedures for the Technical Committee to follow in the event that a third party makes a complaint regarding Microsoft's compliance with the Proposed Final Judgment. The procedures are general and the intent is to resolve complaints, not handle issues of enforcement. The Justice Department states that "It]his dispute resolution function reflects the recognition that the market will benefit from rapid, consensual resolution of issues, where possible. It complements, but does not supplant, Plaintiffs' other methods of enforcement. If the TC concludes that a complaint is meritorious, the TC will so advise Plaintiffs and Microsoft and propose a remedy." Competitive Impact Statement at 20. Despite this statement, the provision does nothing to ensure a resolution of issues. There is no requirement that Microsoft accept the remedy and no sanctions if Microsoft does not accept the remedy. In effect, there appears to be no ultimate control on Microsoft's conduct except for a separate action or convincing the Justice Department to seek an order to enforce the Proposed Final Judgment. This dispute resolution provision should be removed from the TC. The Special Master should administer the process for resolving third party complaints and have the authority to develop and administer a speedy process for resolving complaints and to order compliance if Microsoft is found to have violated the Proposed Final Judgment.

 Respectfully submitted,

_____________/s/_____________
PATRICIA G. BUTLER
DANIELLE R. ODDO
Howrey Simon Arnold & White, LLP
1299 Pennsylvania Ave., N.W.
Washington, D.C. 20004
(202) 783-0800

KENNETH M. FRANKEL
Finnegan, Henderson, Farabow, Garrett &
Dunner, L.L.P.
1300 1 Street, N.W.
Washington, DC 20005
(202) 408-4000

Attorneys for non-party Red Hat, Inc.

Dated: January 28, 2002


FOOTNOTES

1. The Litigating States have filed their own Proposed Final Judgment and, to the extent it contains additional modifications to DOJ's revised proposed Final Judgment, Red Hat supports those modifications.

2. Under the Proposed Final Judgment: OEM is an "original equipment manufacturer of Personal Computers that is a licensee of a Windows Operating System Product"; ISV is an "entity other than Microsoft that is engaged in the development or marketing of software products"; and IHV is an "independent hardware vendor that develops hardware to be included in or used with a Personal Computer running a Windows Operating System Product." See Proposed Final Judgment, Sections VI.O, I, II.

3. "Microsoft Platform Software" is defined as including "a Windows Operating System Product" (either alone or with a middleware product), which in turn is defined as "the software code.., distributed commercially by Microsoft for use with Personal Computers as Windows 2000 Professional .... " Proposed Final Judgment, Section VI.L, U. An Operating System is defined as "the software code that, inter alia, (i) controls the allocation and usage of hardware resources ... of a Personal Computer, (ii) provides a platform for developing applications by exposing functionality to ISVs through APIs, and (iii) supplies a user interface that enables users to access functionality of the operating system and in which they can run applications." Id., Section VI?

4. See. also, discussion in Parts IV.B. and V, infra, concerning the definition of ISVs.


Exhibit A

Microsoft Executive Says Linux Threatens Innovation (Update1)
2/14/01 4:57 PM
Source:Bloomberg News

Redmond, Washington, Feb. 14 (Bloomberg) -- Microsoft Corp.'s Windows operating-system chief, Jim Allchin, says that freely distributed software code such as rival Linux could stifle innovation and that legislators need to understand the threat.

The result will be the demise of both intellectual property rights and the incentive to spend on research and development, he said yesterday, after the company previewed its latest version of Windows. Microsoft has told U.S. lawmakers of its concern while discussing protection of intellectual property rights.

Linux is developed in a so-called open-source environment in which the software code generally isn't owned by any one company. That, as well as programs such as music-sharing software from Napster Inc., means the world's largest software maker has to do a better job of talking to policymakers, he said.

''Open source is an intellectual-property destroyer,'' Allchin said. ''I can't imagine something that could be worse than this for the software business and the intellectual-property business.''

Microsoft distributes some of its programs without charge to customers, although it generally doesn't release its programming code, and it retains the ownership rights to that code. Linux is the most widely known open-source product, though other programs including the popular Apache system for Web server computers also are developed the same way.

Corel Inquiry

Allchin made his comments several hours before Microsoft confirmed that its $135 million investment in software maker Corel Corp. last October is being reviewed by the U.S. Justice Department. Corel said last month it willl drop efforts to develop the Linux operating system, though it will continue to make Linux applications. Corel said it hadn't consulted with Microsoft before making that decision.

Brian Behlendorf, founder of open-source company CollabNet Inc., said most companies that use the open-source development model do retain the rights to some of their intellectual property.

''I think Microsoft is trying to paint the open-source community as being fascist; that all software have has to be free, or none of it can be,'' said Behlendorf, whose company helps businesses run their own open-source projects.

Allchin said he's concerned that the open-source business model could stifle initiative in the computer industry.

''I'm an American, I believe in the American Way,'' he said. ''I worry if the government encourages open source, and I don't think we've done enough education of policy makers to understand the threat.''

Linux Adoption

Some leading computer companies including International Business Machines Corp. and Hewlett-Packard Co. are selling Linux- based products and working on open-source projects, noted Jeremy Allison, a VA Linux Systems Inc. software developer. He's also a leader in a project develop an open-source file and printer server program.

Microsoft only began significant lobbying efforts in the last few years. The Redmond, Washington-based company also talks to lawmakers about issues including the need for more visas for people with computer skills and computer privacy and security.

Linux is the fastest-growing operating system program for running server computers, according to research firm IDC. It accounted for 27 percent of unit shipments of server operating systems in 2000. Microsoft's Windows was the most popular on that basis, with 41 percent.

Despite Linux's success in some markets, Allchin says he isn't concerned about sales competition from the product. Microsoft provides support to change and develop products based on its operating system software that Linux companies don't, he said. Companies that use Linux in their products then must pay someone else for support, he said.

''We can build a better product than Linux,'' he said. ''There is always something enamoring about thinking you can get something for free".

Copyright ©1995-2002 CNET Networks, Inc. All rights reserved.


Exhibit B

Microsoft CEO takes launch break with the Sun-Times

June 1, 2001

It's hard to find a computer that doesn't run a Microsoft product, particularly in Chicago. Microsoft's Chicago-based Midwest district office, which covers Illinois, Indiana and Wisconsin, is the tech giant's biggest moneymaker in the country, with more than 500 customers generating $500 million in revenue annually for Microsoft.

It should come as no surprise, then, that the Seattle-area company sent its No. 2 man, CEO Steve Ballmer, for the official launch of its new Office XP software Thursday at the United Center (yes, Bill Gates went to New York).

Between appointments in a whirlwind visit to Chicago--which included a lunch with 100 local companies and back-to-back-to-back media interviews--Ballmer sat down with Chicago Sun-Times reporter Dave Newbart to discuss the local tech economy, Microsoft's dominance in the market, the federal antitrust case, Microsoft's new licensing requirements and the open-source movement (in effect, free software on the Web, which he called a ''cancer'').

Q: Boeing recently moved to Chicago. Why doesn't Microsoft relocate here?

A: [laughs] We are quite comfortable with our headquarters in Seattle. Chicago is a great city. I'm from Detroit. I like it here. But we have 20,000 people comfortably ensconced in Seattle.

Q: More seriously, in Chicago we do seem to have an inferiority complex about our place in the tech world. Rankings frequently put us toward the bottom among major cities in terms of our tech presence. How do you view the state of our tech economy?

A: I think there is a lot of great stuff going on in Chicago. There are a lot of innovative users in the Chicago area, which is exciting. We have a lot of great partners. I'll be on stage with a company called Genesis [Consulting], which I'm very excited about. We have a local partner named Calypso [Systems]. We literally have dozens of partners doing very innovative work with customers here.

I don't know what the national surveys say. Other than Silicon Valley, I think it's hard to point to any one place and say, "That's where it's all happening."

Q: Microsoft's market dominance and financial position are stronger than ever, despite the government's antitrust case and the weakening economy. Has the government's case had any impact on the way you do business?

A: There has been no legal ruling put into effect. We have and continue to innovate within the spirit and letter of the law. We continue to do what we have always done, because we think it's 100 percent correct. We add new capabilities to our product, we keep our prices low, we try to offer our customers better and better values. The laws were designed to encourage that and protect that behavior, because it's good for consumers.

Q: Microsoft has expanded to a number of markets, especially with the development of the Xbox and a smart phone. What's next, and is there any area that you don't see yourself entering?

A: We have a lot on our plate. We have a big dream about what XML (a markup language for documents containing structured information, such as words and graphics) can do for the world. The way software gets built will change over the years, which we are pursuing with our .Net platform. But we are hardly trying to do everything. I won't sit here and try to rule out that we might do other things in the future, but we have a few clear priorities.

Q: The new Windows XP software, I've seen a trial version, contains a number of free products--media player, a CD burner, an Internet firewall. Could that bundling hurt smaller competitors who make stand-alone software? Isn't this kind of bundling that you offered with Windows and Internet Explorer?

A: Just as with Internet Explorer, our job is to offer customers what they want. We are trying to provide more functionality at the same or better prices every day. [A]ll the new capabilities of Windows XP are open to software developers to add onto, to build value around. I think Windows XP ought to be a real boon to the kinds of innovations that come from smaller companies. The inclusion of Internet Explorer with Windows has been absolutely great ... for innovation in the software industry. Whether it was great for Netscape is a different question.

Q: Independent analyses of your new licensing policy indicate that unless a company upgrades its software every two years, it could face costs from one-third to double what they are paying now to upgrade. What do you think of the criticism that says Microsoft is forcing companies to upgrade to Windows XP by October or face much higher costs later?

A: We are trying to simplify our licensing practices in many ways. We are clearly providing some incentive to upgrade more regularly. Your better customers get a better price. An analysis we've done, 80 percent of our customers are going to see the same or lesser prices, and 20 percent are going to see very small to somewhat larger increases.

Q: The new software also allows a user to install it only twice. You have recently cracked down on corporate piracy and large-scale pirating operations. Are home users next?

A: Intellectual property should be protected. That's the only way that a newspaper or a software company or record company or artist can get a fair return on their work. Our goal is to try to educate people on what it means to protect intellectual property and pay for it properly. We are trying to help customers understand when they are crossing the line by putting some bumps in the road so they can't do the wrong thing.

Q: Do you view Linux and the open-source movement as a threat to Microsoft?

A: Yeah. It's good competition. It will force us to be innovative. It will force us to justify the prices and value that we deliver. And that's only healthy. The only thing we have a problem with is when the government funds open-source work. Government funding should be for work that is available to everybody. Open source is not available to commercial companies. The way the license is written, if you use any open-source software, you have to make the rest of your software open source. If the government wants to put something in the public domain, it should. Linux is not in the public domain. Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That's the way that the license works.

Q: You've been on this job [as CEO] almost 18 months. What has it been like replacing Bill Gates?

A: [I]n a weird and strange way I probably feel more pressure now, no reason I should, but I feel a little more pressure, responsibility. The great thing is we get a chance to do two things. Bill gets a chance to put the highest possible percentage of time into our strategy. My particular capability and focus are really about building a management team, the business processes, etc. Bill and I are going to be around for a lot of years, but we are not going to be around forever. In some senses I'll put a little more time and energy into setting us up so the business is a business that doesn't depend on one guy, even a guy who is as talented as Bill Gates.

Copyright 2000, Digital Chicago Inc.


Exhibit C

Why Microsoft is wary of open source

By Joe Wilcox and Stephen Shankland
Staff Writers, CNET News.com
June 18, 2001, 11:00 AM PT

update There's more to Microsoft's recent attacks on the open-source movement than mere rhetoric: Linux's popularity could hinder the software giant in its quest to gain control of a server market that's crucial to its long-term goals.

Recent public statements by Microsoft executives have cast Linux and the open-source philosophy that underlies it as, at the minimum, bad for competition, and, at worst, a "cancer" to everything it touches.

Behind the war of words, analysts say, is evidence that Microsoft is increasingly concerned about Linux and its growing popularity. The Unix-like operating system "has clearly emerged as the spoiler that will prevent Microsoft from achieving a dominant position" in the worldwide server operating-system market, IDC analyst Al Gillen concludes in a forthcoming report.

While Microsoft's overall operating-system market leadership is by no means in jeopardy, Linux's continued gains make it harder for Microsoft to further its core plan for the future, Microsoft.Net. The plan is a software-as-a-service initiative similar to plans from competitors including Hewlett-Packard, IBM and Sun Microsystems.

One of the cornerstones of .Net is HailStorm, which is built around the company's Passport authentication service.

Microsoft.Net and HailStorm make use of XML (Extensible Markup Language) to pass information between computers based on Windows and computers using other operating systems. However, many .Net components--such as Passport and server-based software including the company's SQL Server database software and BizTalk e-commerce server--run only on Windows.

"The infrastructure to operate XML Web services relies on the Windows operating system and the .Net Enterprise Servers," Microsoft's marketing literature states.

Microsoft needs to control the server operating-system market if HailStorm and all the .Net services and subscriptions associated with it are to succeed, analysts say.

"HailStorm itself by definition needs Microsoft-provided or -partnered services, which means Microsoft's or its partners' servers," said Gartner analyst David Smith. "In that sense, Linux is a threat to .Net."

Microsoft is expected to spend hundreds of millions of dollars marketing and developing .Net. Virtually every product from the company ties in to the plan at some point.

While Linux hasn't displaced Windows, it has made serious inroads. Linux accounted for 27 percent of new worldwide operating-system licenses in 2000, and Microsoft captured 41 percent of new licenses, according to IDC.

Overall, Gartner estimates Linux runs on nearly 9 percent of U.S. servers shipped in the third quarter of 2000, with worldwide projected Linux server sales of nearly $2.5 billion in 2001 and about $9 billion in 2005.

But Linux continues to gain credibility, particularly because of the massive support provided by IBM, which has pledged to spend $1 billion on Linux development.

In attacking Linux and open source, Microsoft finds itself competing "not against another company, but against a grassroots movement," said Paul Dain, director of application development at Emeryville, Calif.-based Wirestone, a technology services company.

"My guess is that they are now under pressure to defend themselves against the criticism from the open-source and free-software communities--whether it's justified or not--as well as companies like IBM that are aggressively marketing Linux," Dain said. "In order to combat that, they have to use strong language to get their point across."

Increasing Linux use makes it more difficult to spread the .Net message. That, in turn, has led to a string of comments from Microsoft executives publicly denouncing Linux and open source. "Linux is a cancer that attaches itself in an intellectual property sense to everything it touches," Chief Executive Steve Ballmer said in an interview with the Chicago Sun-Times.

Despite Microsoft's criticism, the company still uses open-source code in some products. Servers for the company's Hotmail e-mail service use FreeBSD for some DNS (domain name server) functions.

"This is a legacy issue that came from Hotmail when we originally got it," said Microsoft spokesman Rick Miller. "We haven't gone out, purchased and put into place FreeBSD. It came when we purchased other companies. We didn't build any of our infrastructure on FreeBSD. We build it on Windows."

In the mid 1980s, Microsoft licensed its TCP/IP (transmission control protocol/Internet protocol) networking stack from another company that used open-source code. "You could say it had its genesis in FreeBSD, but it's now absolutely Windows," Miller said. The code first appeared in Windows NT and also was used in Windows 2000.

Critical of change
Microsoft has also criticized the General Public License (GPL) that governs the heart of Linux. Under this license, changes to the Linux core, or kernel, must also be governed by the GPL. The license means that if a company changes the kernel, it must publish the changes and can't keep them proprietary if it plans to distribute the code externally.

Other open-source projects, such as FreeBSD, allow changes that are kept proprietary. That provision was one reason FreeBSD proved appealing to Wind River Systems, the dominant seller of operating systems for non-PC "embedded" computing devices such as network routers.

Microsoft's open-source attacks come at a time when the company has been putting the pricing squeeze on customers. In early May, Microsoft revamped software licensing, raising upgrades between 33 percent and 107 percent, according to Gartner. A large percentage of Microsoft business customers could in fact be compelled to upgrade to Office XP before Oct. 1 or pay a heftier purchase price later on.

The action "will encourage--'force' may be a more accurate term--customers to upgrade much sooner than they had otherwise planned," Gillen noted in the IDC report. "Once the honeymoon period runs out in October 2001, the only way to 'upgrade' from a product that is not considered to be current technology is to buy a brand-new full license.'"

This could make open-source Linux's GPL more attractive to some customers feeling trapped by the price hike, Gillen said. "Offering this form of 'upgrade protection' may motivate some users to seriously consider alternatives to Microsoft technology."

Ray Bailey, information services manager at The Bergquist Company, said a recent meeting with Microsoft changed the technology direction of his company, which manufactures electronic components and other goods.

"Our IS team agreed that, due to Microsoft's changing of the licensing rules and the manner in which they have given us less-than-adequate time to process those changes, we are seriously looking at other platforms," he said. "Linux is a strong contender for our next server because of the low-cost nature of the licensing."

Internally, Microsoft seems somewhat torn on how to approach the open-source movement. While the company denounces the move toward free software, it does recognize at least some of the value of open-source development.

"Microsoft views open source as a competitor, but it's hard to treat it as a competitor," Gartner's Smith said. "So they have to attack basic tenets, mentality, way of life and thought processes."

Since last year, Microsoft has made available to hundreds of its larger customers copies of its closely guarded Windows source code. The company hopes its best customers can help it improve Windows.

Microsoft has been touting plans to broaden Windows source-code access to business partners in an initiative it calls its "shared-source philosophy."

In particular, Microsoft wants to emulate the spirit of cooperation that has spawned groups of volunteer Linux programmers. "Having a sense of community is a good thing. It's one thing we've watched with interest," Craig Mundie, senior vice president of advanced strategies at Microsoft, said in a recent interview. "The more of that we can foster in our community, the better."

Building a better community
Microsoft hopes to imbue its programmer network with some of this community spirit, Mundie said. "The Microsoft Developer Network hasn't been one where there was a lot of dialogue between (developers) and with Microsoft developers."

Though Microsoft will be expanding how it engages directly with those who see its source code, the company isn't going to extend the right granted to many members of the open-source community--the power to change the software. People may submit bug fixes, but "customers aren't trying to buy the rights to produce derivatives," Mundie said. "In general, we're going to control that reintegration. We worry a lot about uniformity and avoiding fragmentation."

But how far Microsoft is willing to go with open source appears limited, said Smith, who noted that while attacking Linux, the company promises to support the Unix variant through .Net.

It's "a nice PR story for Microsoft to talk about the possibilities about .Net on Linux," he said. "It is true that Linux can participate in those .Net services, but don't expect Microsoft to provide any incentive or anything else that would make that possible."

Dain said Microsoft's attacks on Linux and open source may in the long run benefit technology buyers. "Personally, I think the talk on both sides--Microsoft vs. open source--will end up benefiting consumers in the workplace and at home. There definitely is competition in the marketplace, and this battle simply proves the point."

And while Microsoft may have the advantage in the consumer market with Windows, it's still the underdog in the large-scale business server market.

"To many people, including myself, implementing a Microsoft solution is a much more cost-effective way to go than a Sun or other high-end Unix/mainframe solution," Dain said.

Copyright ©1995-2002 CNET Networks, Inc. All rights reserved.


Exhibit D

Microsoft license spurns open source

By Stephen Shankland
Staff Writer, CNET News.com
June 22, 2001, 12:05 PM PT

Microsoft lawyers have joined the company's campaign against open-source software, restricting how developers may use what it terms "viral software" in connection with Microsoft programming tools.

The license of the second beta version of Microsoft's Mobile Internet Toolkit--software used so programmers can create server software to connect with handheld computers over the Internet--prohibits customers from using the Microsoft software in conjunction with "potentially viral software."

In describing this category of software, Microsoft includes the most common licenses used for publishing open-source software, such as the Linux operating system. Licenses specifically excluded by Microsoft include the General Public License, the Lesser General Public License, the Mozilla Public License and the Sun Industry Standards License.

While the provision in Microsoft's license isn't surprising, Fenwick & West intellectual property attorney Dana Hayter said the company could have picked a more neutral term, such as "open software."

"The choice of the term says more about Microsoft's view than the rest of it," Hayter said. "I think it's a pejorative and misleading term. To suggest that open-source software is somehow 'viral' is to confuse harm to your customers' machines and data with harm to Microsoft's profits."

Microsoft representatives weren't immediately available for comment.

The license provision, posted Thursday at Linux Today, is the latest step in an increasingly vocal campaign by Microsoft Chairman Bill Gates, Senior Vice President Craig Mundie and Chief Executive Steve Ballmer to disparage open-source software.

The campaign, in which the executives have compared open-source software to viruses and cancer, comes at a time when some observers believe Microsoft is worried that Linux--the best-known open-source project--will undermine the Microsoft.Net strategy for joining desktop computer users with sophisticated Internet services.

Some open-source fans weren't happy with Microsoft's view of the software world and its use of the term "viral software."

"The GPL is not a virus, it is a vaccine, an inoculation against later abuse of your code by having someone, such as Microsoft, take your hard work, incorporate it into a proprietary product which is then extended and kept closed, marginalizing your project in the process," said one comment at discussion site Slashdot.

The Microsoft license seeks to prevent the possibility that a program that links both to Microsoft and open-source software components could force Microsoft to expose the now-secret source code of its software, Hayter said.

"They're saying you cannot use (Microsoft) software in a way that would create in Microsoft any obligations to do anything with (Microsoft's) code, for example to make the source public," Hayter said.

One example of a forbidden move would be to create software that used prepackaged components called libraries from Microsoft as well as a library covered by the GPL, Hayter said. Under the terms of the GPL, software covered by it may be directly incorporated only into other GPL software.

But a legally grayer area is creating software that merely calls upon such libraries rather than incorporating the library code directly. The Free Software Foundation created the LGPL license for precisely such occasions; this license allows links to proprietary software.

One example is the use of a library called "readline" that lets people use arrow keys and perform some other tasks when typing information into a computer, said PostgreSQL database developer Bruce Momjian. Because PostgreSQL is released under a BSD-style license that has different terms than the GPL, GPL code may not be freely mixed within PostgreSQL.

"If we required the readline library, then the entire PostgreSQL software would have to be GPL'd," Momjian said, noting that programs such as the BSD-licensed libedit software offer an alternative. "If you use (readline) in any application, your entire application is GPL."

Regardless of the legalities involved, the provision in the license is significant, Hatyer said. "This demonstrates they're taking open source seriously."

Copyright ©1995-2002 CNET Networks, Inc. All rights reserved.


Exhibit E

Microsoft memo touts Linux

By Mike Ricciuti
Staff Writer, CNET News.com
November 5, 1998, 11:20 AM PT

Microsoft engineers see Linux as a "best-of-breed" Unix that outperforms the company's own Windows NT operating system and is a "credible alternative" to commercially developed servers, according to an internal memo posted to the Web this week.

The admission, contained in the second so-called Halloween memo posted to the Web this week by programmer Eric Raymond, is counter to the company's public statements downplaying the significance of Linux, and its suggestions that Fortune 1,000 companies have little interest in open source software (OSS).

The new memo also contains a single sentence suggesting that the company may investigate the use of patents and copyrights to combat Linux. Microsoft representatives were not immediately available to comment further on the statement.

In a preface to the memo, Raymond states that the document had been leaked to him by a former Microsoft employee. A Microsoft representative today said the document appears to be authentic, and said it is the second in "what could be a series" of similar memos posted to the Web.

Yesterday, a Microsoft representative downplayed the significance of the initial memo.

According to the new memo, written by Microsoft engineer Vinod Valloppillil, Linux "represents a best-of-breed Unix, that is trusted in mission critical applications, and--due to its open source code--has a long term credibility which exceeds many other competitive OS's."

In what the memo's author considers the "worst case" scenario for Microsoft, Linux will "provide a mechanism for server OEMs to provide integrated, task-specific products and completely bypass Microsoft revenues in this space."

Another new revelation contained in the new memo is that Microsoft considers Linux to be a threat on both server and client systems. "Long term, my simple experiments do indicate that Linux has a chance at the desktop market..," the memo states. The initial memo only cited the server market as a competitive battleground between Linux and Windows NT, now renamed Windows 2000.

The first memo, posted to the Web over the weekend, showed that Microsoft executives fear that the growing popularity of Linux and other open source software poses a direct threat to the company's revenue stream, and suggests the company could respond by modifying open Internet protocols to become proprietary technologies that tie consumers and developers to Microsoft products.

In the new memo, some of the reasons for the company's fears are more clearly defined. The memo states:

  • "Most of the primary apps that people require when they move to Linux are already available for free. This includes Web servers, POP clients, mail servers, text editors, etc."

  • "An advanced Win32 GUI user would have a short learning cycle to become productive [under Linux]."

  • "I previously had [Internet Explorer and Windows NT] on the same box and by comparison the combination of Linux /[Netscape Navigator] ran at least 30 to 40 percent faster when rendering simple HTML + graphics."

  • "Linux's (real and perceived) virtues over Windows NT include: Customization. Availability/Reliability. Scalability/Performance. Interoperability."

    The author of the memo also writes that he believes consumers "love" Linux.

    Copyright ©1995-2002 CNET Networks, Inc. All rights reserved.


    Exhibit F

    Microsoft sues Linux start-up over name

    By Joe Wilcox and David Becker
    Staff Writers, CNET News.com
    December 20, 2001, 3:50 PM PT

    update  Microsoft asked a court on Thursday to stop a Linux start-up from using a name the software giant contends infringes on the Windows trademark.

    The Redmond, Wash.-based software giant filed a motion with the U.S. Court for the Western District of Washington against Lindows, which is developing a version of the Linux operating system that will run popular applications written for Microsoft's Windows OS.

    Microsoft contends the company, which plans to formally release its product next year, purposely is trying to confuse Lindows with Windows. The suit asks the court to order the start-up to stop using the Lindows name and also seeks unspecified monetary damages.

    "We're not asking the court to stop the company from making their products," said Microsoft spokesman Jon Murchinson. "What we're saying is they should not use a name that could confuse the public and infringe on our valuable trademark."

    Lindows is based on the Wine project, an open-source effort to mimic the commands that Windows programs use. The San Diego-based Lindows company was launched earlier this year by Michael Robertson, former CEO of digital music site MP3.com.

    Robertson characterized the move as another attempt by Microsoft to thwart a viable threat to its Windows empire.

    "If they're alleging that people are going to be confusing Microsoft Corp. with Lindows.com, I think there's zero potential of that happening," he said. "If people are confused, just remember that we're not the convicted monopolist."

    Murchinson said Microsoft considered legal action a last resort.

    "Clearly we prefer to work with them to resolve this problem voluntarily. Their product name infringes on our trademark," Murchinson said. "We hope they will work with us to resolve this problem without the need for legal action."

    Robertson said he had heard from nobody at Microsoft regarding the name dispute. "They just filed lawsuits," he said.

    Microsoft has been involved in an increasingly fractious war of words with Linux supporters this year, with Microsoft executives castigating the open-source distribution model behind Linux as a sure road to commercial failure and on blight for software development.

    Emmett Stanton, an attorney at Palo Alto, Calif.-based Fenwick & West, said Microsoft has not been overzealous in the past about protecting its trademark, allowing spoof sites and others to go unchallenged.

    "They're not the type to sue at the drop of a hat," he said, concluding that there appears to be solid ground for the Lindows complaint. "Superficially, you would have to say there's some potential for confusion, and the defendant may be trying to trade on Microsoft's position in the marketplace."

    Robertson said he hoped to have a preview version of Lindows ready for download by next week, with a full version ready early next year. He said the company is targeting small and medium-sized business that might be interested in switching to a less expensive operating system but have invested in Windows applications such as Office.

    "We're trying to give consumers a choice, where there's really no choice today," he said.

    Copyright ©1995-2002 CNET Networks, Inc. All rights reserved.


    Exhibit G

    U.S. Department of Justice Seal and Letterhead
    FOR IMMEDIATE RELEASE
    FRIDAY, NOVEMBER 2, 2001 
    WWW.USDOJ.GOV/ATR
    AT
    (202) 514-2007
    TDD: (202) 514-1888


    DEPARTMENT OF JUSTICE AND MICROSOFT CORPORATION
    REACH EFFECTIVE SETTLEMENT ON ANTITRUST LAWSUIT

    Settlement Provides Enforcement Measures to Stop Microsoft's
    Unlawful Conduct, Prevent Its Recurrence, and Restore Competition

    WASHINGTON, D.C. ­ The Department of Justice reached a settlement today with Microsoft Corporation that imposes a broad range of restrictions that will stop Microsoft's unlawful conduct, prevent recurrence of similar conduct in the future and restore competition in the software market, achieving prompt, effective and certain relief for consumers and businesses.

      The settlement reached today accomplishes this by:

    • creating the opportunity for independent software vendors to develop products that will be competitive with Microsoft's middleware products on a function-by-function basis;
    • giving computer manufacturers the flexibility to contract with competing software developers and place their middleware products on Microsoft's operating system;
    • preventing retaliation against computer manufacturers, software developers, and other industry participants who choose to develop or use competing middleware products; and
    • ensuring full compliance with the proposed Final Judgment and providing for swift resolution of technical disputes.

    "A vigorously competitive software industry is vital to our economy and effective antitrust enforcement is crucial to preserving competition in this constantly evolving high-tech arena," said Attorney General John Ashcroft. "This historic settlement will bring effective relief to the market and ensure that consumers will have more choices in meeting their computer needs."

    The settlement, which will be filed today in U.S. District Court in the District of Columbia with Judge Colleen Kollar-Kotelly, if approved by the court, would resolve the lawsuit filed by the Department on May 18, 1998.

    "This settlement will promote innovation, give consumers more choices, and provide the computer industry as a whole with more certainty in the marketplace," said Charles A. James,

    Assistant Attorney General for the Antitrust Division. "The goals of the government were to obtain relief that stops Microsoft from engaging in unlawful conduct, prevent any recurrence of that conduct in the future, and restore competition in the software market­we have achieved those goals."

    Today's proposed settlement is modeled on the conduct provisions in the original Final Judgment entered by Judge Jackson, but includes key additions and modifications that take into account the current and anticipated changes in the computer industry, including the launch of Microsoft's new Windows XP operating system, and the Court of Appeals decision revising some of the original liability findings.

    The proposed Final Judgment includes the following key provisions:

    Broad Scope of Middleware Products­ The proposed Final Judgment applies a broad definition of middleware products which is wide ranging and will cover all the technologies that have the potential to be middleware threats to Microsoft's operating system monopoly. It includes browser, e-mail clients, media players, instant messaging software, and future new middleware developments.

    Disclosure of Middleware Interfaces­ Microsoft will be required to provide software developers with the interfaces used by Microsoft's middleware to interoperate with the operating system. This will allow developers to create competing products that will emulate Microsoft's integrated functions.

    Disclosure of Server Protocols­ The Final Judgment also ensures that other non-Microsoft server software can interoperate with Windows on a PC the same way that Microsoft servers do. This is important because it ensures that Microsoft cannot use its PC operating system monopoly to restrict competition among servers. Server support applications, like middleware, could threaten Microsoft's monopoly.

    Freedom to Install Middleware Software--Computer manufacturers and consumers will be free to substitute competing middleware software on Microsoft's operating system.

    Ban on Retaliation--Microsoft will be prohibited from retaliating against computer manufacturers or software developers for supporting or developing certain competing software. This provision will ensure that computer manufacturers and software developers are able to take full advantage of the options granted to them under the proposed Final Judgment without fear of reprisal.

    Uniform Licensing Terms­ Microsoft will be required to license its operating system to key computer manufacturers on uniform terms for five years. This will further strengthen the ban on retaliation.

    Ban on Exclusive Agreements­ Microsoft will be prohibited from entering into agreements requiring the exclusive support or development of certain Microsoft software. This will allow software developers and computer manufacturers to contract with Microsoft and still support and develop rival middleware products.

    The proposed Final Judgment also includes key additional provisions related to enforcement:

    Licensing of Intellectual Property­ Microsoft also will be required to license any intellectual property to computer manufacturers and software developers necessary for them to exercise their rights under the proposed Final Judgment, including for example, using the middleware protocols disclosed by Microsoft to interoperate with the operating system. This enforcement measure will ensure that intellectual property rights do not interfere with the rights and obligations under the proposed Final Judgment.

    On-Site Enforcement Monitors­ The proposed settlement also adds an important enforcement provision that provides for a panel of three independent, on-site, full-time computer experts to assist in enforcing the proposed Final Judgment. These experts will have full access to all of Microsoft's books, records, systems, and personnel, including source code, and will help resolve disputes about Microsoft's compliance with the disclosure provisions in the Final Judgment.

    The core allegation in the lawsuit, upheld by the Court of Appeals in June 2001, was that Microsoft had unlawfully maintained its monopoly in computer-based operating systems by excluding competing software products known as middleware that posed a nascent threat to the Windows operating system.

    Specifically, the Court of Appeals found that Microsoft engaged in unlawful exclusionary conduct by using contractual provisions to prohibit computer manufacturers from supporting competing middleware products on Microsoft's operating system; prohibiting consumers and computer manufacturers from removing Microsoft's middleware products from the operating system; and reaching agreements with software developers and third parties to exclude or disadvantage competing middleware products.

    The proposed Final Judgment will be published by the Federal Register, along with the Department's Competitive Impact Statement, as required by the Antitrust Procedures and Penalties Act. Any person may submit written comments concerning the proposed consent decree within 60 days of its publication to: Renata Hesse, Trial Attorney, 325 7th Street, N.W., Suite 500, Washington, D.C. 20530, (202-616-0944). At the conclusion of the 60-day comment period, the Court may enter the proposed consent decree upon a finding that it serves the public interest.

    The proposed Final Judgment will be in effect for a five year period and may be extended for an additional two-year period if the Court finds that Microsoft has engaged in multiple violations of the proposed Final Judgment.

    ###

    01-569


    Exhibit H

    Patent Number Title Issue Date
    6330670 Digital rights management operating system 11-Dec-01
    6330589System and method for using a client database to manage conversation threads generated from email or news messages11-Dec-01
    6330566Apparatus and method for optimizing client-state data storage11-Dec-01
    6330563Architecture for automated data analysis11-Dec-01
    6330003Transformable graphical regions11-Dec-01
    6327705Method for creating and maintaining user data04-Dec-01
    6327702Generation a compiled language program for an interpretive runtime environment04-Dec-01
    6327699Whole program path profiling04-Dec-01
    6327652Loading and identifying a digital rights management operating system04-Dec-01
    6327617Method and system for identifying and obtaining computer software fro a remote computer04-Dec-01
    6327608Server administration tool using remote file browser04-Dec-01
    6327589Method for searching a file having a format unsupported by a search engine04-Dec-01
    6326964Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system04-Dec-01
    6326953Method for converting text corresponding to one keyboard mode to text corresponding to another keyboard more04-Dec-01
    6326947Ractile character input in computer-based devices04-Dec-01
    6324587Method, computer program product, and data structure for publishing a data object over a store and forward transport27-Nov-01
    6324571Floating single master operation27-Nov-01
    6324546Automatic logging of application program launches27-Nov-01
    6324544File object synchronization between a desktop computer and a mobile device27-Nov-01
    6324492Server stress testing using multiple concurrent client simulation27-Nov-01
    6321334Administering permissions associated with a security zone in a computer system security model20-Nov-01
    6321276Recoverable methods and systems for processing input/output requests including virtual memory addresses20-Nov-01
    6321275Interpreted remote procedure calls20-Nov-01
    6321274Multiple procedure calls in a single request20-Nov-01
    6221243Laying out a paragraph by defining all the characters as a single text run by substituting, and then positioning the glyphs20-Nov-01
    6321226Flexible keyboard searching20-Nov-01
    6321225Abstracting cooked variables from raw variables20-Nov-01
    6321219Dynamic symbolic links for computer file systems20-Nov-01
    6320978Stereo reconstruction employing a layered approach and layer refinement techniques20-Nov-01
    6317880Patch source list management13-Nov-01
    6317818Pre-fetching of pages prior to a hard page fault sequence13-Nov-01
    6317774Providing predictable scheduling of programs using a repeating precomputed schedule13-Nov-01
    6317760Extensible ordered information within a web page13-Nov-01
    6317748Management information to object mapping and correlator13-Nov-01
    6314562Method and system for anticipatory optimization of computer programs06-Nov-01
    6314533System and method for forward custom marshaling event filters06-Nov-01
    6314417Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers06-Nov-01
    6313851User friendly remote system interface06-Nov-01
    6311323Computer programming language statement building and information tool30-Oct-01
    6311228Method and architecture for simplified communications with HID devices30-Oct-01
    6311216Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS30-Oct-01
    6311209Methods for performing client-hosted application sessions in distributed processing systems30-Oct-01
    6308274Least privilege via restricted tokens23-Oct-01
    6308273Method and system of security location discrimination23-Oct-01
    6308266System and method for enabling different grades of cryptography strength in a product23-Oct-01
    6308222Transcoding of audio data23-Oct-01
    6308173Methods and arrangements for contro??ing resource access in a networked computing environment23-Oct-01
    6307566Methods and apparatus for performing image rendering and rasterization operations23-Oct-01
    6307547Method and system for providing enhanced folder racks23-Oct-01
    6307538EMC enhanced peripheral device23-Oct-01
    6305008Automatic statement completion16-Oct-01
    6304928Compressing/decompressing bitmap by performing exclusive- or operation setting differential encoding of first and previous row therewith outputting run-length encoding of row16-Oct-01
    6304918Object interface control system16-Oct-01
    6304917Negotiating optimum parameters in a system of interconnected components16-Oct-01
    6304914Method and apparatus for pre-compression packaging16-Oct-01
    6304879Dynamic data cache for object-oriented computing environments16-Oct-01
    6304878Method and system for improved enumeration of tries16-Oct-01
    6304261Operating system for handheld computing device having program icon auto hide16-Oct-01
    6304258 Method and system for adding application defined properties and application defined property sheet pages 16-Oct-01
    6303924Image sensing operator input device16-Oct-01
    6301616Pledge-based resource allocation system09-Oct-01
    6301612Establishing one computer as a replacement for another computer09-Oct-01
    6301601Disabling and enabling transaction committal in transactional application components09-Oct-01
    6298440Method and system for providing multiple entry point code resources02-Oct-01
    6298391Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes02-Oct-01
    6298373Local service provider for pull based intelligent caching system20-Oct-01
    6298342Electronic database operations for perspective transformations on relational tables using pivot and unpivot columns02-Oct-01
    6298321Trie compression using substates and utilizing pointers to replace or merge identical, reordered states02-Oct-01
    6297837Method of maintaining characteristics information about a system component either modified by an application program or a user initiated change02-Oct-01
    6295608Optimized allocation of data elements among cache lines25-Sep-01
    6295556Method and system for configuring computers to connect to networks using network connection objects25-Sep-01
    6295529Method and apparatus for indentifying clauses having predetermined characteristics indicative of usefulness in determining relationships between different texts25-Sep-01
    6292934Method and system for improving the locality of memory references during execution of a computer program18-Sep-01
    6292857Method and mechanism for coordinating input of asynchronous data18-Sep-01
    6292840Voice/audio data communication with negotiated compression scheme and data header compressed in predetermined scheme18-Sep-01
    6292834Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network18-Sep-01
    6292822Dynamic load balancing among processors in a parallel computer18-Sep-01
    6292194Image compression method to reduce pixel and texture memory requirements in graphics applications18-Sep-01
    6289464Receiving wireless information on a mobile device with reduced power consumption11-Sep-01
    6289458Perproperty access control mechanism11-Sep-01
    6289390System and method for performing remote requests with an on-line service network11-Sep-01
    6288726Method for rendering glyphs using a layout services library11-Sep-01
    6288720Method and system for adding application defined properties and application defined property sheet pages11-Sep-01
    6286131Debugging tool for linguistic applications04-Sep-01
    6286013Method and system for providing a common name space for long and short file names in an operating system04-Sep-01
    6285998System and method for generating reusable database queries04-Sep-01
    6285374Blunt input device cursor04-Sep-01
    6285363Method and system for sharing applications between computer systems04-Sep-01
    6282712Automatic software installation on heterogeneous networked computer systems28-Aug-01
    6282621Method and apparatus for reclaiming memory28-Aug-01
    6282561Method and system for resource management with independent real-time applications on a common set of machines28-Aug-01
    6282327Maintaining advance widths of existing characters that have been resolution enhanced28-Aug-01
    6282294System for broadcasting to, and programming, a motor device in a protocol, device, and network independent fashion28-Aug-01
    6281881System and method of adjusting display characteristics of a displayable data file using an ergonomic computer input device28-Aug-01
    6281879Timing and velocity control for displaying graphical information28-Aug-01
    6279111Security model using restricted tokens21-Aug-01
    6279032Method and system for quorum resource arbitration in a server cluster21-Aug-01
    6279016Standardized filtering control techniques21-Aug-01
    6279007Architecture for managing query friendly hierarchical values21-Aug-01
    6278989Histogram construction using adaptive random sampling with cross-validation for database systems21-Aug-01
    6278462Flexible schemes for applying properties to information in a medium21-Aug-01
    6278450System and method for customizing controls on a toolbar21-Aug-01
    6278448Composite Web page built from any web content21-Aug-01
    6278434Non-square scaling of image data to be mapped to pixel sub-components21-Aug-01
    6275957Using query language for provider and subscriber registrations14-Aug-01
    6275938Security enhancement for untrusted executable code14-Aug-01
    6275912Method and system for storing data items to a storage device14-Aug-01
    6275868Script Engine interface for multiple languages14-Aug-01
    6275857System and method for freeing shared resources in a computer system14-Aug-01
    6275829Representing a graphic image on a web page with a thumbnail-sized image14-Aug-01
    6275496Content provider for pull based intelligent caching system14-Aug-01
    6272631Protected storage of core data secrets07-Aug-01
    6272593Dynamic network cache directories07-Aug-01
    6272581System and method for encapsulating legacy data transport protocols for IEEE 1394 serial bus07-Aug-01
    6272545System and method for interaction between one or more mobile devices07-Aug-01
    6271858Incremental update for dynamic/animated textures on three-dimensional models07-Aug-01
    6271855Interactive construction of 3D models from panoramic images employing hard and soft constraint characterization and decomposing techniques07-Aug-01
    6271847Inverse texture mapping using weighted pyramid blending and view-dependent weight maps07-Aug-01
    6271839Method and system for sharing applications between computer systems07-Aug-01
    6269477Method and system for improving the layout of a program image using clustering31-Jul-01
    6269403Browser and publisher for multimedia object storage, retrieval and transfer31-Jul-01
    6269382Systems and methods for migration and recall of data from local and remote storage31-Jul-01
    6269377System and method for managing locations of software components via a source list31-Jul-01
    6368855Method and system for sharing applications between computer systems31-Jul-01
    6268852System and method for facilitating generation and editing of event handlers31-Jul-01
    6266729Computer for encapsulating legacy data transport protocol for IEEE 1394 serial bus24-Jul-01
    6266665Indexing and searching across multiple sorted arrays24-Jul-01
    6266658Index tuner for given workload24-Jul-01
    6266064Coherent visibility sorting and occlusion cycle detection for dynamic aggregate geometry24-Jul-01
    6266059User interface for switching between application modes24-Jul-01
    6266054Automated removal of narrow, elongated distortions from a digital image24-Jul-01
    6266043Apparatus and method for automatically positioning a cursor on a control24-Jul-01
    6263492Run time object layout model with object type that differs from the derived object type in the class structure at design time and the ability to store the optimized run time object layout model17-Jul-01
    6263491Heavyweight and lightweight instrumentation17-Jul-01
    6263379Method and system for referring to and binding to objects using identifier objects17-Jul-01
    6263367Server-determined client refresh periods for dynamic directory services17-Jul-01
    6263352Automated web site creation using template driven generation of active server page applications17-Jul-01
    6263337Scalable system for expectation maximization clustering of large detabases17-Jul-01
    6263334Density-based indexing method for efficient execution of high dimensional nearest-neighbor queries on large databases17-Jul-01
    6262733Method of storing and providing icons according to application program calls and user-prompted system metric changes17-Jul-01
    6262730Intelligent user assistance facility17-Jul-01
    6262712Handle sensor with fade-in17-Jul-01
    6260148Methods and systems for message forwarding and property notifications using electronic subscriptions10-Jul-01
    6260043Automatic file format converter10-Jul-01
    6256780Method and system for assembling software components03-Jul-01
    6256668Method for identifying and obtaining computer software from a network computer using a tag03-Jul-01
    6256650Method and system for automatically causing editable text to substantially occupy a text frame03-Jul-01
    6256642Method and system for file system management using a flash-erasable, programmable, read-only memory03-Jul-01
    6256634Method and system for purging tombstones for deleted data items in a replicated database03-Jul-01
    6256623Network search access construct for accessing web-based search services03-Jul-01
    6256069Generation of progressive video from interlaced video03-Jul-01
    6256031Integration of physical and virtual namespace03-Jul-01
    6256028Dyanmic site browser03-Jul-01
    6256013Computer pointing device03-Jul-01
    6256009Method for automatically and intelligently scrolling handwritten input03-Jul-01
    6253374Method for validating a signed program prior to execution time or an unsigned program at execution time26-Jun-01
    6253324Server verification of requesting clients26-Jun-01
    6253255System and method for batching data between transport and link layers in a protocol stack26-Jun-01
    6253241Selecting a cost-effective bandwidth for transmitting information to an end user in a computer network26-Jun-01
    6253195Optimized query tree26-Jun-01
    6253194System and method for performing database queries using a stack machine26-Jun-01
    6252608Method and system for improving shadowing in a graphics rendering system26-Jun-01
    6252593Assisting controls in a windowing environment26-Jun-01
    6252589Multilingual user interface for an operating system26-Jun-01
    6249908System and method for representing graphical font data and for converting the font data to font instructions19-Jun-01
    6249866Encrypting file system and method19-Jun-01
    6249826System and method for media status notification19-Jun-01
    6249822Remote procedure call method19-Jun-01
    6249792On-line dynamic file shrink facility19-Jun-01
    6249284Directional navigation system in layout managers19-Jun-01
    6249274Computer input device with inclination sensors19-Jun-01
    6247061Method and computer program product for scheduling network communication packets originating from different flows having unique service requirements12-Jun-01
    6247057Network server supporting multiple instance of services to operate concurrently by having endpoint mapping subsystem for mapping virtual network names to virtual endpoint IDs12-Jun-01
    6247042Method and system for restoring the state of physical memory as the focus changes among application programs in a computer12-Jun-01
    6246977Information retrieval utilizing semantic representation of text and based on constrained expansion of query words12-Jun-01
    6246412Interactive construction and refinement of 3D models from multiple panoramic images12-Jun-01
    6246409Method and system for connecting to, browsing, and accessing computer network resources12-Jun-01
    6246404Automatically generating code for integrating context-sensitive help functions into a computer software application12-Jun-01
    6243825Method and system for transparently failing over a computer name in a server cluster05-Jun-01
    6243821System and method for managing power consumption in a computer system05-Jun-01
    6243766Method and system for updating software with smaller patch files 
    6243764Method and system for aggregating objects05-Jun-01
    6243753Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters05-Jun-01
    6243721Method and apparatus for providing automatic layout capabilities for computer forms05-Jun-01
    6243701System and method for sorting character strings containing accented and unaccented characters05-Jun-01
    6243093Methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects and which visually groups matching objects05-Jun-01
    6243070Method and apparatus for detecting and reducing color artifacts in images05-June-01
    6240472Method and system for sharing a communications port29-May-01
    6240465Method and system for aggregating objects29-May-01
    6240456System and method for collecting printer administration information29-May-01
    6239814Method for indicating the existence of a control object29-May-01
    6239783Weighted mapping of image data samples to pixel sub-components on a display device29-May-01
    6237144Use of relational databases for software installation22-May-01
    6236390Methods and apparatus for positioning displayed characters22-May-01
    6233731Program-interface converter for multiple-platform computer systems15-May-01
    6233624System and method for layering drivers15-May-01
    6233606Automatic cache synchronization15-May-01
    6233570Intelligent user assistance facility for a software program15-May-01
    6232976Optimizing dynamic/animating textures for use in three-dimensional models15-May-01
    6232974Decision-theoretic regulation for allocating computational resources among components of multimedia content to improve fidelity15-May-01
    6232972Method for dynamically displaying controls in a toolbar display based on control usage15-May-01
    6232966Method and system for generating comic panels15-May-01
    6232958Input device with multiplexed switches15-May-01
    6232957Technique for implementing an on-demand tool glass for use in a desktop user interface15-May-01
    6230318Application programs constructed entirely from autonomous component objects08-May-01
    6230312Automatic detection of per-unit location constraints08-May-01
    6230269Distributed authentication system and method08-May-01
    6230212Method and system for the link tracking of objects08-May-01
    6230173Method for creating structured documents in a publishing system08-May-01
    6230172Production of a video stream with synchronized annotations over a computer network08-May-01
    6230159Method for creating object inheritance08-May-01
    6230156Electronic mail interface for a network server08-May-01
    6229539Method for merging items of containers of separate program modules08-May-01
    6229537Hosting windowed objects in a non-windowing environment08-May-01
    6226747Method for preventing software piracy during installation from a read only storage medium01-May-01
    6226742ciphertext message through use of a message authentication code formed through cipher block chaining of the plaintext message01-May-01
    6226689Method and mechanism for interprocess communication using client and server listening threads01-May-01
    6226665Application execution environment for a small device with partial program loading by a resident operating system01-May-01
    6226635Layered query management01-May-01
    6226628Cross-file pattern-matching compression01-May-01
    6226407Method and apparatus for analyzing computer screens01-May-01
    6226017Methods and apparatus for improving read/modify/write operations01-May-01
    6225973Mapping samples of foreground/background color image data to pixel sub-components01-May-01
    6223292Authorization systems, methods, and computer program products24-Apr-01
    6223212Method and system for sharing negotiating capabilities when sharing an application with multiple systems24-Apr-01
    6223207Input/output completion port queue data structures and methods for using same24-Apr-01
    6223171What-if index analysis utility for database systems24-Apr-01
    6222937Method and system for tracking vantage points from which pictures of an object have been taken24-Apr-01
    6222182Apparatus and method for sampling a phototransistor24-Apr-01
    6219782Multiple user software debugging system17-Apr-01
    6219675Distribution of a centralized database17-Apr-01
    6219025Mapping image data samples to pixel sub-components on a striped display device17-Apr-01
    6216177Method for transmitting text data for shared application between first and second computer asynchronously upon initiation of a session without solicitation from first computer10-Apr-01
    6216175Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations10-Apr-01
    6216154Methods and apparatus for entering and evaluating time dependence hypotheses and for forecasting based on the time dependence hypotheses entered10-Apr-01
    6216141System and method for integrating a document into a desktop window on a client computer10-Apr-01
    6216134Method and System for visualization of clusters and classifications10-Apr-01
    6215503Image generator and method for resolving non-binary cyclic occlusions with image composting operations10-Apr-01
    6215496Sprites with depth10-Apr-01
    6212676Event architecture for system management in an operating system03-Apr-01
    6212617Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication03-Apr-01
    6212574User mode proxy of kernel mode operations in a computer operating system03-Apr-01
    6212553Method for sending and receiving flags and associated data in e-mail transmissions03-Apr-01
    6212541System and method for switching between software applications in multi-window operating system03-Apr-01
    6212526Method for apparatus for efficient mining of classification models from databases03-Apr-01
    6212436Dynamic inheritance of software object services03-Apr-01
    6209093Technique for producing a privately authenticatable product copy indicia and for authenticating such an indicia27-Mar-01
    6209089Correcting for changed client machine hardware using a server-based operating system27-Mar-01
    6209088Computer hibernation implemented by a computer operating system27-Mar-01
    6209041Method and computer program product for reducing inter-buffer data transfers between separate processing components27-Mar-01
    6209040Method and system for interfacing to a type library27-Mar-01
    6209011Handheld computing device with external notification system27-Mar-01
    6208996Mobile device having notification database in which only those notifications that are to be presented in a limited predetermined time period27-Mar-01
    6208952Method and system for delayed registration of protocols27-Mar-01
    6208337Method and system for adding application defined properties and application defined property sheet pages27-Mar-01
    6205561Tracking and managing failure-susceptible operations in a computer system27-Mar-01
    6205498Method and system for message transfer session management20-Mar-01
    6205492Method and computer program product for interconnecting software drivers in kernel mode20-Mar-01
    6202202Pointer analysis by type inference for programs with structured memory objects nd potetially inconsistent memory object accesses13-Mar-01
    6202121System and method for improved program launch time13-Mar-01
    6202089Method for configuring at runtime, identifying and using a plurality of remote procedure call endpoints on a single server process13-Mar-01
    6202085System and method for incremental change synchronization between multiple copies of data13-Mar-01
    6201549System and method for drawing and painting with bitmap brushes13-Mar-01
    6201540Graphical interface components for in-dasn automotive accessories13-Mar-01
    6199166Method and system for managing data while sharing application programs06-Mar-01
    6199107Partial file caching and read range resume system and method06-Mar-01
    6199082Method for delivering separate design and content in a multimedia publishing system06-Mar-01
    6199081Automatic tagging of documents and exclusion by content06-Mar-01
    6199061Method and apparatus for providing dynamic help topic titles to a user27-Mar-01
    6198852View synthesis from plural images using a trifocal tensor data structure in a multi-view parallax geometry06-Feb-01
    6195655Automatically associating archived multimedia content with27-Feb-01
    6195622Methods and apparatus for building attribute transition probability models for use in pre-fetching resources27-Feb-01
    6192487Method and system for remapping physical memory20-Feb-01
    6192432Caching uncompressed data on a compressed drive20-Feb-01
    6192360Methods and apparatus for class fying text and for building a text classifier20-Feb-01
    6191790Inheritable property shading system for three-dimensional rendering of user interface controls20-Feb-01
    6189146System and method for software licensing13-Feb-01
    6189143Method and system for reducing an intentional program tree represented by high-level computational constructs13-Feb-01
    6189100Ensuring the integrity of remote boot client data13-Feb-01
    6189069Optimized logging of data elements to a data storage device13-Feb-01
    6189019Computer system and computer-implemented process for presenting document connectivity13-Feb-01
    6189016Journaling ordered changes in a storage volume13-Feb-01
    6189000System and method for accessing user properties from multiple storage mechanisms13-Feb-01
    6188405Methods, apparatus and data structures for providing a user interface, which exploits spatial memory, to objects13-Feb-01
    6188401Script-based user interface implementation defining components using a text markup language13-Feb-01
    6188387Computer input peripheral13-Feb-01
    6188358Method and apparatus for displaying images such as text13-Feb-01
    6185579Method and system for expanding a buried stack frame06-Feb-01
    6185569Linked data structure integrity verification system which verifies actual node information with expected node information stored in a table06-Feb-01
    6185568Classifying data packets processed by drivers included in a stack06-Feb-01
    6185564Generation and validation of reference handles in a multithreading environment06-Feb-01
    6184891Fog simulation for partially transparent objects06-Feb-01
    6182286Dynamic versioning system for multiple users of multi-module software systems30-Jan-01
    6182160Method and system for using editor objects to connect components30-Jan-01
    6182133Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching30-Jan-01
    6182108method and system for multi-threaded processing30-Jan-01
    6182029Method and system for converting between structured language elements and objects embeddable in a document30-Jan-01
    6182086Client-server computer system with application recovery of server applications and client applications30-Jan-01
    6181351Synchronizing the moveable mouths of animated characters with recorded speech30-Jan-01
    6178529Method and system for resource monitoring of disparate resources in a server cluster23-Jan-01
    6178423System and method for recycling numerical values in a computer system23-Jan-01
    6177945Advanced graphics controls23-Jan-01
    6175916Common-thread inter-process function calls invoked by jumps to invalid addresses16-Jan-01
    6175900Hierarchical bitmap-based memory manager16-Jan-01
    6175879Method and system for migrating connections between receive-any and receive-direct threads16-Jan-01
    6175878Integration of systems management services with an underlying system object model16-Jan-01
    6175863Storage of sitemaps at server sites for holding information regarding content16-Jan-01
    6175834Consistency checker for documents containing Japanese text16-Jan-01
    6175833System and method for interactive live online voting with tallies for updating voting results16-Jan-01
    6173421Centrally handling runtime errors09-Jan-01
    6173406Authentication systems, methods, computer program products09-Jan-01
    6173404Software object security mechanism09-Jan-01
    6173325Method computer program product, and system for assessing the performance of a packet schedule09-Jan-01
    6173317Streaming and displaying a video stream with synchronized annotations over a computer network09-Jan-01
    6172354Operator input device09-Jan-01
    6169993Method, data structure, and computer program product for object state storage02-Jan-01
    6169984Global incremental type search navigation directly from printable keyboard character input02-Jan-01
    6169983Index merging for database systems02-Jan-01
    6169546Global viewer scrolling system02-Jan-01
    6167565Method and system of custom marshaling of inter-language parameters26-Dec-00
    6167423Concurrency control of state machines in a computer system using cliques26-Dec-00
    6166738methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects26-Dec-00
    6166732Distributed object oriented multi-user domain with multimedia presentations26-Dec-00
    6163855method and system for replicated and consistent modifications in a server cluster19-Dec-00
    6163841Technique for producing privately authenticatable cryptographic signatures and for authenticating such signatures19-Dec-00
    6163809System and method for preserving delivery status notification when moving from a native network to a foreign network19-Dec-00
    616377System and method for reducing location conflicts in a database19-Dec-00
    6163324Median calculation using SIMD operations19-Dec-00
    6161176System and method for storing configuration settings for transfer from a first system to a second system12-Dec-00
    6161130Technique which utilizes a probabilistic classifier to detect "junk" e-mail by automatically updating a training and re-training the classifier based on the updated training set12-Dec-00
    6161084Information retrieval utilizing semantic representation of text by identify hyponyms and indexing multiple tokenized semantic structures to a same passage of text12-Dec-00
    6160553Methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects and in which object occlusion is avoided12-Dec-00
    6160550Shell extensions for an operating system12-Dec-00
    6157942Imprecise caching of directory download responses for dynamic directory services05-Dec-00
    6157905Identifying language and character set of data representing text05-Dec-00
    61577473-dimensional image rotation method and apparatus for producing image mosaics05-Dec-00
    6157618Distributed internet user experience monitoring system05-Dec-00
    6157383Control polyhedra for a three-dimensional (3D) user interface05-Dec-00
    6154843Secure remote access computing system28-Nov-00
    6154767Methods and apparatus for using attribute transition probability models for pre-fetching resources28-Nov-00
    6154220Rectilinear layout28-Nov-00
    6154219System and method for optimally placing labels on a map28-Nov-00
    6154205Navigating web-based content in a television-based system28-Nov-00
    6151708Determining program update availability via set intersection over a sub-optical pathway21-Nov-00
    6151632Method and apparatus for distributed transmission of real-time multimedia information21-Nov-00
    6151618Safe general purpose virtual machine computing system21-Nov-00
    6151607Database computer system with application recovery and dependency handling write cache21-Nov-00
    6151022Method and apparatus for statically testing visual resources21-Nov-00
    6148325Method and system for protecting shared code and data in a multitasking operating system14-Nov-00
    6148304Navigating multimedia content using a graphical user interface with multiple display regions14-Nov-00
    6148296Automatic generation of database queries14-Nov-00
    6147685System and method for editing group information14-Nov-00
    6145003Method of web crawling utilizing address' mapping07-Nov-00
    6144964Methods and apparatus for tuning a match between entities having attributes07-Nov-00
    6144378Symbol entry system and methods07-Nov-00
    6144377Providing access to user interface elements of legacy application programs07-Nov-00
    6141722Method and apparatus for reclaiming memory 31-Oct-00
    6141705System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed31-Oct-00
    6141696Secure decentralized object exporter31-Oct-00
    6141018Method and system for displaying hypertext documents with visual effects31-Oct-00
    6141003Channel bar user interface for an entertainment System31-Oct-00
    6138128Sharing and organizing world wide web references using distinctive characters24-Oct-00
    6138112Test generator for database management systems24-Oct-00
    6137492Method and system for adaptive refinement of progressive meshes24-Oct-00
    6137491Method and apparatus for reconstructing geometry using geometrically constrained structure from motion with points on planes24-Oct-00
    6134658Multi-server location-independent authentication certificate management system17-Oct-00
    6134602Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system17-Oct-00
    6134596Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates17-Oct-00
    6134594Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects17-Oct-00
    6134582System and method for managing electronic mail messages using a client-based database17-Oct-00
    6134577Method and apparatus for enabling address lines to access the high memory area17-Oct-00
    6134566Method for controlling an electronic mail preview pane to avoid system disruption17-Oct-00
    6133925Automated system and method for annotation using callouts17-Oct-00
    6133917Tracking changes to a computer software application when creating context-sensitive help functions 17-Oct-00
    6133915System and method for customizing controls on a toolbar17-Oct-00
    6131192Software installation10-Oct-00
    6131102Method and system for cost computation of spelling suggestions and automatic replacement10-Oct-00
    6131051Interface between a base module and a detachable faceplate in an in-dash automotive accessory10-Oct-00
    6128737Method and apparatus for producing a message authentication code in a cipher block chaining operation by using linear combinations of an encryption key10-Oct-00
    6128713Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system03-Oct-00
    6128661Integrated communications architecture on a mobile device03-Oct-00
    6128653Method and apparatus for communication media commands and media data using the HTTP protocol03-Oct-00
    6128633Method and system for manipulating page-breaks in an electronic document03-Oct-00
    6128629Method and apparatus, for automatically updating data files in a slide presentation program03Oct-O0
    6128012User interface for a portable data management device with limited size and processing capability 03-Oct-00
    6125373Identifying a driver that is an owner of an active mount point26-Sep-00
    6125369Continuous object sychronization between object stores on different computers26-Sep-00
    6125366Implicit session context system with object state cache26-Sep-00
    6125352System and method for conducting commerce over a distributed network26-Sep-00
    6122658Custom localized information in a networked server for display to art end user19-Sep-00
    6122649 Method and system for user defined and linked properties19-Sep-00
    6122644System for halloween protection in a database system19-Sep-00
    6121981Method and system for generating arbitrary-shaped animation in the user interface of a computer 19-Sep-00
    6121968Adaptive menus19-Sep-00
    6121964Method and system for automatic persistence of controls in a windowing environment19-Sep-00
    6119153Accessing content via installable data sources12-Sep-00
    6119131Persistent volume mount points12-Sep-00
    6119120Computer implemented methods for constructing a compressed data structure from a data string and for using the data structure to find data patterns in the data string12-Sep-00
    6119115Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment12-Sep-00
    6115708Method for refining the initial conditions for clustering with applications to small and large database clustering05-Sep-00
    6115705Relational database system and method for query processing using early aggregation05-Sep-00
    6112216Method and system for editing a table in a document29-Aug-00
    6112214Method and system for the direct manipulation of cells in an electronic spreadsheet program or the like29-Aug-00
    6111574Method and system for visually indicating a selection query29-Aug-00
    63111567Seamless multimedia branching29-Aug-00
    6110227systems and methods for pre-processing variable initializers29-Aug-00
    6108784Encryption of applications to ensure authenticity22-Aug-00
    6108715Method and system for invoking remote procedure calls22-Aug-00
    6108706Transmission announcement system and method for announcing upcoming data transmissions over a broadcast network22-Aug-00
    6108661system for instance customization22-Aug-00
    6108006Method and system for view-dependent refinement of progressive meshes22-Aug-00
    6106575Nested parallel language preprocessor for converting parallel language programs into sequential code22-Aug-00
    6105041Using three-state references to manage garbage collection of referenced objects15-Aug-00
    6105039Generation and validation of reference, handles15-Aug-00
    6105038Hysteresis System and method for achieving a mean constant cost per action in a computer system 15-Aug-00
    6105024System for memory management during run formation for external sorting in database system15-Aug-00
    6104377Method and system for displaying an image at a desired level of opacity15-Aug-00
    6104359Allocating display information15-Aug-00
    6102967Testing a help system of a computer software application without executing the computer software application15-Aug-00
    6101546Method and system for providing data files that are partitioned by delivery time and data type08-Aug-00
    6101513Method and apparatus for displaying database information according to a specified print layout and page for mat08-Aug-00
    6101510Web browser control for incorporating web browser functionality into application programs08-Aug-00
    6101499Method and computer program product for automatically generating an internet protocol (IP) address08-Aug-00
    6101325Parameterized packaging system for programming languages08-Aug-00
    6098081Hypermedia navigation using soft hyperlinks01-Aug-00
    6097888Method and system for reducing an intentional program tree represented by high-level computational constructs01-Aug-00
    6097854Image mosaic construction system and apparatus with patch-based alignment, global block adjustment and pair-wise motion-based local warping01-Aug-00
    6097392Method and system of altering an attribute of a graphic, object in a pen environment01-Aug-00
    6097380Continuous media stream control01-Aug-00
    6097371System and method of adjusting display characteristics of a displayable data file using an ergonomic computer input device01-Aug-00
    6096095Producing persistent representations of complex data structures01-Aug-00
    6094680system and method for managing distributed resources networks25-Jul-00
    6094679Distribution of software in a computer network environment25-Jul-00
    6092208System and method for waking a computer having a plurality of power resources from a system state using a data structure18-Jul-00
    6092144Method and system for interrupt-responsive execution of communications protocols18-Jul-00
    6092067Desktop information manager for recording and viewing important events data structure18-Jul-00
    6091411Dynamically updating themes for an operating system shell18-Jul-00
    6091409Automatically activating a browser with internet shortcuts on the desktop18-Jut-00
    6088739Method and system for dynamic, object clustering11-Jul-00
    6088718Meth0ds and apparatus for using resource transition probability models for pre-fetching resources11-Jul-00
    6088711Method and system for defining and applying a style to a paragraph11-Jul-00
    6088708System and method for creating an online table from a layout of objects11-Jul-00
    6088511Nested Parallel 2D Delaunay triangulation method11-Jul-00
    6088041Method of dropout control for scan conversion of a glyph comprising a plurality of discrete segments11-Jul-00
    6086618Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration11-Jul-00
    6085247Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different, computers04-Jul-00
    6085226Method and apparatus for utility-directed prefetching of web pages into local cache using continual computation and user models04-Jul-00
    6085206Method and system for verifying accuracy of spelling and grammatical composition of a document04-Jul-00
    6084592Interactive construction of 3D models from panoramic images04-Jul-00
    6084582Method and apparatus for recording a voice narration to accompany a slide show04-Jul-00
    6083282Cross-project namespace compiler and method04-Jul-00
    6081898Unification of directory service with file system service27-Jun-00
    6081846Method and computer program product for reducing intra-system data copying during network packet processing27-Jul-00
    6081816Method for placing text around Polygons and other constraints27-Jun-00
    6081802System and method for accessing compactly stored map element information from memory27-Jun-00
    6081775Bootstrapping sense, characterizations of occurrences of polysemous words in dictionaries27-Jun-00
    6081598Cryptographic system and method with fast decryption27-Jun-00
    6081264optimal frame rate selection user interface27-Jun-00
    6078999Recovering from a failure using a transaction table in connection with shadow copy transaction processing20-Jun-00
    6078942Resource management for multimedia devices in a computer20-Jun-00
    6078746Method and system for reducing an intentional program tree represented by high-level computational constructs20-Jun-00
    6077313Type partitioned dataflow analyses20-Jun-00
    6076100Server-side chat monitor13-Jun-00
    6976051Information retrieval utilizing semantic representation of text13-Jun-00
    6075545Methods and apparatus for storing, accessing and processing images through the use of row and column Pointers13-JUn-00
    6075540Storage of appearance attributes in association with wedges in a mesh data model for computer graphics13-Jun-00
    6075532Efficient redrawing of animated windows13-Jun-00
    6073226system and method for minimizing page tattles in virtual memory systems06-Jun-00
    6073214Method and system for identifying and obtaining, computer software from a remote computer06-Jun-00
    6073137Method for updating and displaying the hierarchy of a data store06-Jun-00
    6072950Pointer analysis by type inference combined with a non-pointer analysis06-Jun-00
    6072496Method and system for capturing and representing 3D geometry, color and shading of facial expressions and other animated objects06-Jun-00
    6072486System and method for creating and customizing a deskbar06-Jun-00
    6072485Navigating with direction keys in an environment that permits navigating with tab keys06-Jun-00
    6072480Method and apparatus for controlling composition and performance of soundtracks to accompany a slide show06-Jun-00
    6070007Method and system for reducing an intentional program tree represented by high-level computational constructs30-May-00
    6069622Method and system for generating comic panels30-May-00
    6067639Method for integrating automated software testing with software development23-May-00
    6067578Container independent control architecture23-May-00
    6067569Fast-forwarding and filtering of network packets in a computer system23-May-00
    6067565Technique for prefetching a web page of potential future interest in lieu of continuing a current information download23-May-00
    6067559Server architecture for segregation of dynamic content generation applications into separate process spaces23-May-00
    6067551Computer implemented method for simultaneous multi-user editing of a document23-May-00
    6067550Database computer system with application recovery and dependency handling, write cache23-May-00
    6067547Hash table expansion and contraction for use with internal searching23-May-00
    6067541Monitoring document changes in a file system of documents with the document change information stored in a persistent log23-May-00
    6067412Automatic bottleneck detection by means of workload reconstruction from performance measurements23-May-00
    6067095Method for generating mouth features of an animated or physical character23-May-00
    6067087Method for building menus during idle times23-May-00
    6065035Method and system for procedure boundary detection16-May-00
    6065020Dynamic adjustment of garbage collection16-May-00
    6065012System and method for displaying and manipulating user-relevant data16-May-00
    6065011System and method for manipulating a categorized data set16-May-00
    6065008System and method for secure font subset distribution16-MAY-00
    6065003System and method for finding the closest match 0f a data entry16-May-00
    6064999Method and system for efficiently performing database table aggregation using a bitmask-based index16-May-00
    6064406Method and system for caching presentation data of a source object in a presentation cache16-MAY-00
    6064393Method for measuring the fidelity of warped image layer approximations in a real-time graphics rendering pipeline16-May-00
    6064383Method and system for selecting an emotional appearance and prosody for a graphical character16-May-00
    6061792System and method for fair exchange of time-independent information goods over a network09-May-00
    6061695Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document09-MAY-00
    6061692System and method for administering a meta database as an integral component of an information server09-May-00
    6061684Method and system for controlling user access to a resource in a networked computing environment 09-May-00
    6061677Data base query system and method09-May-00
    6059838Method and system for licensed design and use of software objects09-May-00
    6058263Interface hardware design using internal and e external interfaces02-May-00
    6057841System and method for processing electronic messages with rules representing a combination of conditions, actions or exceptions02-May-00
    6057837On-screen indentification and manipulation of sources that an object depends upon02-May-00
    6057836System and method for resizing and rearranging a composite toolbar by direct manipulation02-May-00
    6055548Computerized spreadsheet with auto-calculator25-Apr-00
    6055314system and method for secure purchase and very of video content- Programs25-Apr-00
    6054989Methods, apparatus and data structures for providing a user interface, which exploits spatial memory in three-dimensions, to objects and which provides spatialized audio25-Apr-00
    6052735Electronic mail object synchronization between a desktop computer and mobile device18-Apr-00
    6052710System and method for making function calls over a distributed network18-Apr-00
    6052707Preemptive multi-tasking with cooperative groups of tasks18-Apr-00
    6052698Reorganization of collisions in a hash bucket of a hash table to improve system performance18-Apr-00
    6052697Reorganization of collisions in a hash bucket of a hash table to improve system performance18-Apr-00
    6049869Method and system detecting and identifying text or data encoding system11-Apr-00
    6049809Replication optimization system and method11-Apr-00
    6049805Dynamic event mechanism for objects with associational relationships11-Apr-00
    6049671Method for identifying and obtaining computer software from a network computer11-Apr-00
    6049663Method and facility for uninstalling a computer program package11-Apr-00
    6049636Determining a rectangular box encompassing a digital picture within a digital image11-Apr-00
    6049341Edge cycle collision detection in graphics environment11-Apr-00
    6047307Providing application programs with unmediated access to a contested hardware resource04-Apr-00
    6047300System and method for automatically correcting a misspelled word04-Apr-00
    6047297Method and- system for editing actual work records04-Apr-00
    6046744Selective refinement of progressive meshes04-Apr-00
    6044408Multimedia device interface for retrieving and exploiting software and hardware capabilities28-Mar-00
    6044387Single command editing of multiple files28-Mar-00
    6044366Use of the UNPIVOT relational operator in the efficient gathering of sufficient statistics for data mining28-Mar-00
    6044181Focal length estimation method and apparatus for Construction of panoramic mosaic images28-Mar-00
    6044155Method and system for securely archiving core data secrets28-Mar-00
    6043826Transferring outline fonts to devices requiring raster fonts28-Mar-00
    6043817Method and apparatus for arranging displayed graphical representations on a computer interface 28-Mar-00
    6041359Data delivery system and method for delivering computer data over a broad, cast network21-Mar-00
    6041345Active stream format for holding multiple media streams21-Mar-00
    6041333Method and apparatus for automatically updating a data file from a network21-Mar-00
    6041311Method and apparatus for item recommendation using automated collaborative filtering21-Mar-00
    6040841Method and system for virtual cinematography21-Mar-00
    6038628System and method for encapsulating legacy data transport Protocols for IEEE 1394 serial bus14-Mar-00
    6038610Storage of sitemaps at server sites for holding information regarding content14-Mar-00
    6038567Method and system for propagating object properties in a desktop publishing program14-Mar-00
    6038551System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer14-Mar-00
    6037932Method for sending computer network data as part of vertical blanking interval14-Mar-00
    6036495interactive simulation including force feedback14-Mar-00
    6035379Transaction processing for user data employing both togging and shadow copying07-Mar-00
    6035342Method and computer program product for implementing object relationships07-Mar-00
    6035327SMTP extension to preserve per-message and per-recipient properties07-Mar-00
    6035269Method for detecting stylistic errors and generating replacement strings in a document containing Japanese text07-Mar-00
    6035119Method and apparatus for automatic generation of text and computer-executable code07-Mar-00
    6032197Data packet header compression for unidirectional transmission29-Feb-00
    6032188Method and system for controlling data flow29-Feb-00
    6031989Method of formatting and displaying nested documents29-Feb-00
    6031534Operating system function for specifying a checked image representation and an unchecked image representation of a menu item29-Feb-00
    6031518Ergonomic input device29-Feb-00
    6029200Automatic protocol rollover in streaming multimedia data delivery system22-Feb-00
    6029147Method and system for providing an interface for supporting multiple formats for on-line banking services22-Feb-00
    6028604User friendly remote system interface providing previews of applications22-Feb-00
    6026417Desktop publishing software for automatically changing the layout of content-filled documents15-Feb-00
    6026416System and method for storing, viewing, editing, and processing ordered sections having different file formats15-Feb-00
    6026239Run-time code compiler for data block transfer15-Feb-00
    6026238Interface conversion modules based upon generalized templates for multiple platform computer systems15-Feb-00
    6026233Method and apparatus for presenting and selecting options to modify a programming language statement15-Feb-00
    6025841Method for managing simultaneous display of multiple windows in a graphical user interface15-Feb-00
    6023744Method and mechanism for freeing disk space in a file system08-Feb-00
    6023714Method and system for dynamically adapting the layout of a document to an output device08-Feb-00
    6023710System and method for long-term administration of archival storage08-Feb-00
    6023523Method and system for digital plenoptic imaging08-Feb-00
    6023275System and method for resizing an input Position indicator for a user interface of a computer system08-Feb-00
    6023272Continuously accessible computer system interface08-Feb-00
    6021412Method and system for automatically adding graphics to a document to illustrate concepts referred to therein01-Feb-00
    6021262System and method for detection of, notification of, and automated repair of problem conditions in a messaging system01-Feb-00
    6021203Coercion resistant one-time-pad cryptosystem that facilitates transmission of messages having different levels of security01-Feb-00
    6018619Method, system and apparatus for client-side usage tracking of information server systems25-Jan-00
    6018349Patch-based alignment method and apparatus for construction of image mosaics25-Jan-00
    6018340Robust display management in a multiple monitor environment25-Jan-00
    6016520Method of viewing at a client viewing station a multiple media title stored at a server and containing a plurality of topics utilizing anticipatory caching18-Jan-00
    6016515Method, computer program product, and data structure for validating creation of and routing messages to file object18-Jan-00
    6016508Server-determined client refresh periods for dynamic directory services18-Jan-00
    6016497Methods and system for storing and accessing embedded information in object-relational databases 18-Jan-00
    6016492Forward extensible property modifiers for formatting information in a program module18-Jan-00
    6016488Method arid System for constructing queries18-Jan-00
    6016150Sprite compositor and method for performing lighting and shading operations using a compositor to combine factored image layers18-Jan-00
    6016145Method and system for transforming the geometrical shape of a display window for a computer system18-Jan-00
    6014744State governing the performance of optional booting operations11-Jan-00
    6014733Method and System for creating a perfect hash using an offset table11-Jan-00
    6014706Methods and apparatus for implementing control functions in a streamed vide° display system11-Jan-00
    6014701Selecting a cost-effective bandwidth for transmitting information to an end user in a computer network11-Jan-00
    6014681Method for saving a document using a background save thread11-Jan-00
    6014666Declarative and programmatic access control of component-based server applications using roles11-Jan-00
    6014518Terminating polymorphic type inference program analysis11-Jan-00
    6012096Method and system for peer-to-peer network latency measurement04-Jan-00
    6012075Method and System for background grammar checking an electronic document04-Jan-00
    6012058Scalable system for K-means clustering of large databases04-Jan-00
    6012052resources, editing resource link topology, building resource link topology templates, and collaborative filtering04-Jan-00
    6009459Intelligent automatic searching for resources in a distributed environment28-Dec-99
    6009462Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances28-Dec-99
    6009441Selective response to a comment line in a computer file28-Dec-99
    6009190Texture map construction method and apparatus for displaying panoramic image mosaics28-Dec-99
    6009188Method and system for digital plenoptic imaging28-Dec-99
    6008820processor for controlling the display of rendered image layers and method for controlling same28-Dec-99
    6008816Method and system for managing color specification using attachable palettes and palettes that refer to other palettes28-Dec-99
    6008807Method and system for controlling the display of objects in a slide show presentation28-Dec-99
    6008806Shell extensions for an, operating system28-Dec-99
    6008803System for displaying programming information287Dec-99
    6008799Method and system for entering data using an improved on-screen keyboard28-Dec-99
    600633Recovery of online sessions for dynamic directory services21-Dec-99
    6006241Production of a video stream with synchronized annotations over a computer network21-Dec-99
    6006239Method and system for allowing multiple users to simultaneously edit a spreadsheet21-Dec-99
    6006218Methods and apparatus for retrieving and/or processing retrieved information as a function of a user's estimated knowledge21 -Dec-99
    6005582Method and system for texture mapping images with anisotropic filtering21-Dec-99
    6005575Foreground window determination through, process and thread initialization21-Dec-99
    6005551Offline force effect rendering21-Dec-99
    6003108Method and system for interrupt-responsive execution of communications protocols14-Dec-99
    6003097System for automatically configuring a network adapter without manual intervention by using a registry data structure maintained within a computer system memory14-Dec-99
    6003061Method and system for scheduling the use of a computer system resource using a resource planner and a resource provider14-Dec-99
    6003050Method for integrating a virtual machine with input method editors14-Dec-9
    6002852Method and system for confirming receipt of data opportunistically broadcast to client computer systems14-Dec-99
    5999996Adapter for wirelessly interfacing a full-size stand alone keyboard with a handheld computing device07-Dec-99
    5999986Method and system for providing an event system infrastructure07-Dec-99
    5999979Method and apparatus for determining a most advantageous protocol for use in a computer network 07-Dec-99
    5999938System and method for creating a new data structure in memory populated with data from an existing data structure07-Dec-99
    5999896Method and system for identifying and resolving commonly confused words in a natural language parser07-Dec-99
    5999711Method and system for providing certificates holding authentication and authorization information for users/machines07-Dec-99
    5995997Apparatus and methods for optimally allocating currently available computer resources to future task instances versus continued execution of current task instances30-Nov-99
    5995940Method and system for editing multivalued properties of an object30-Nov-99
    5995922Identifying information related to an input word in an electronic dictionary30-Nov-99
    5991804Continuous media file server for cold restriping following capacity change by repositioning data blocks in the multiple data servers23-Nov-99
    5991802Method and system for invoking methods of objects over the internet23-Nov-99
    5991794Component integration system for an application program23-Nov-99
    5991777System and method for performing defined actions when grafting the name space of one storage medium into the name space of another storage medium23-No799
    5990905System provided child window controls23-Nov-99
    5990904Method and system for merging pixel fragments in a graphics rendering system23-Nov-99
    5990901Model based image editing and correction23-Nov-99
    5990899Method for compressing journal streams23-Nov-99
    5990886Graphically creating e-mail distribution lists with geographic area selector on map23-Nov-99
    5990883Unified presentation of programming from different physical sources23-Nov-99
    5990871Ergonomic pointing device23-Nov-99
    5987517System having a library of protocol independent reentrant network interface functions for providing common calling interface for communication and application protocols16-Nov-99
    5987481Method and apparatus for using label references in spreadsheet formulas16-Nov-99
    5987376System and method for the distribution and synchronization of data and state information between clients in a distributed processing system 16-Nov-99
    5987257Metafile optimization16-Nov-99
    5987164Block adjustment method and apparatus for construction of image mosaics16-Nov-99
    5986675System and method for animating an object in three-dimensional space using a two-dimensional input device16-Nov-9
    5986668Deghosting method and apparatus for construction of image mosaics16-Nov-99
    5986623System and method for interlaced display device data transmission16-Nov-99
    5983274Creation and use of control information associated with packetized network data by protocol drivers and device drivers09-Nov-99
    5983242Method and system for preserving document integrity09-Nov-99
    5983240Method and system of converting data from a source file system to a target file system09-Nov-99
    5982389Generating optimized motion transitions for computer animated objects09-Nov-99
    5982381Method and apparatus for modifying a cutout image for compositing09-Nov-99
    5978815File system primitive Providing native file system support for remote storage02-Nov-99
    5978814Native data signatures in a file system02-Nov-99
    5978802System and method for providing opportunistic file access in a network environment02-Nov-99
    5978795Temporally ordered binary search method and system02-Nov-99
    5978566Client side deferred actions within multiple MAPI profiles02-Nov-99
    5978484system and method for safety distributing executable objects02-Nov-99
    5977977Method and system for multi-pass rendering02-Nov-99
    5977973window linking02-Nov-99
    5977971free view control02-Nov-99
    5977966System-provided window elements having adjustable dimensions02-Nov-99
    5977951System and method for substituting an animated character when a remote control physical character is unavailable02-Nov-99
    5974483Multiple transparent access to in put peripherals26-Oct-99
    5974454Method and system for installing and updating program module components26-Oct-99
    5974427Method and computer system for implementing concurrent accesses of a database record by multiple users26-Oct-99
    5974421Cache-efficient object loader26-Oct-99
    597416Method of creating a tabular data stream for sending rows of data between client and server26-Oct-99
    5974410Method and system for filtering in a uniform data interface26-Oct-99
    5974409System and method for locating information in an on-line network26-Oct-99
    5970496Method and system for storing information in a computer system memory using hierarchical data node relationships19-Oct-99
    5970173Image compression and affine transformation for image motion compensation19-Oct-99
    5968121Method and apparatus for representing and applying network topological data19-oct-99
    5966719Method for inserting capitalized Latin characters in a non-Latin document12-Oct-99
    5966716Automatic spreadsheet forms12-Oct-99
    5966705Tracking a user across both secure and non-secure areas on the Internet wherein the users is initially tracked using a globally unique identifier12-Oct-99
    5966686Method and system for computing semantic logical forms from syntax trees12-Oct-99
    5966140Method- for creating progressive simplicial complexes12-Oct-99
    5966133Geomorphs and variable resolution control of progressive meshes12-Oct-99
    5964886Method and system for recovering text from a damaged electronic file12-Oct-99
    5964843System for enhancing device drivers12-Oct-99
    5963945Synchronization of a client and a server in a prefetching resource allocation system05-Oct-99
    5963894Method and system for bootstrapping statistical processing into a rule-based natural language Parser05-Oct-99
    5963893Identification of words in Japanese text by a computer system05-Oct-99
    5963209Encoding and progressive transmission of progressive meshes05-Oct-99
    59631973-D cursor positioning device05-Oct-99
    5961591Downloading data while rejection of its use may be overridden05-Oct-99
    5960423Database system index selection using candidate index selection for a workload28-Sep-99
    5959621System and method for displaying data items in a ticker display pane on a client computer28-Sep-99
    5958004Disabling and enabling transaction committal in transactional application components28-Sep-99
    5956724Method for compressing a data file using a separate dictionary file21-Sep-99
    5956721Method and computer program product for classifying network communication packets processed in a network stack21-Sep-99
    5956715Method and system for controlling user access to a resource in a networked computing environment21-Sep-99
    5956509System and method for performing remote requests with an 0n-line service network21-Sep-99
    5956489Transaction replication system and method for supporting replicated transaction-based services21-Sep-99
    5956483System and method for making function calls from a web browser to a local application21-Sep-99
    5956481Method and apparatus for protecting data files on a computer from virus infection21-Sep-99
    5956033Document control interface and method for graphical message document software21-Sep-99
    5953729Using sparse file technology to stage data that will then be stored in remote storage14-Sep-99
    5953012Method and system for connecting to, browsing, and accessing computer network resources14-Sep-99
    5951694Method of redirecting a client service session to a second application server without interrupting the session by forwarding service-specific it]formation to the second server14-Sep-99
    5951653Method and system for coordinating access to objects of different thread types in a shared memory space14-Sep-99
    5950221Variably-sized kernel memory stacks07-Sep-99
    5950193Interactive records and groups of records in an address book database07-Sep-99
    5950186Database system index selection using cost evaluation of a workload for multiple candidate index configurations07-Sep-99
    5949975Method and system for negotiating capabilities when sharing an application program with multiple computer systems07-Sep-99
    5949430Peripheral lenses for simulating peripheral vision on a display device07-Sep-99
    5949429Method for performing pixel addressing operations for a tiled image07-Sep-99
    5949428Method and apparatus for resolving pixel data in a graphics rendering system07-Sep-99
    5949418Operating system for handheld computing device having graphical window minimization/enlargement functionality07-Sep-99
    5948113System and method for centrally handling runtime errors07-Sep-99
    5946698Database computer system with application recovery31-Aug-99
    5946697Rapid transfer of HTML files31-Aug-99
    5946696Object property lists31-Aug-99
    5946691Method of presenting, storing, and updating a filing identifier for a data record31-Aug-99
    5946648Identification of words in Japanese text by a computer system31-Aug-99
    5945987Interactive entertainment network system and method for providing short sets of preview video trailers31-Aug-99
    5945981Wireless input device, for use with a computer, employing a movable light-emitting element and a stationary light-receiving element3-Aug-99
    5943048Method and apparatus for testing a graphic control area24-Aug-99
    5941947System and method for controlling access to data entities in a computer network24-Aug-99
    5941944Method for providing a substitute for a requested inaccessible object by identifying substantially similar objects using weights corresponding to object features24-Aug-99
    5940847System and method for automatically correcting multi-word data entry errors17-Aug-99
    5940833Compressing sets of integers17-Aug-99
    5938752System and method for encapsulating legacy data transport protocols for IEEE 1394 serial bus17-Aug-99
    5938729System and method for monitoring server performance at a client computer17-Aug-99
    5936616Method and system for accessing and displaying a compressed display image in a computer system 10-Aug-99
    5935224Method and apparatus for adaptively coupling an external peripheral device to either a universal serial bus Port on a computer or hub or a game port on a computer10-Aug-99
    5935211Distributed notification10-Aug-99
    5935210Mapping the structure of a collection of computer resources10-Aug-99
    5933842Method and system for compressing publication documents in a computer system by selectively eliminating redundancy from a hierarchy of constituent data structures03-Aug-99
    5933838Database computer system with application recovery and recovery log sequence numbers to optimize recovery03-Aug-99
    5933822Apparatus and methods for an information retrieval system that employs natural language processing of search results to improve overall precision03-Aug-99
    5933599Apparatus for presenting the content of an interactive on-line network03-Aug-99
    5933535Object-based video compression process employing arbitrarily-shaped features03-Aug-99
    5933145Method and system for visually indicating a selection query03-Aug-99
    5933139Method and apparatus for creating help functions03-Aug-99;
    5931935File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system03-Aug-99
    5929860Mesh simplification and construction of progressive meshes27-Jul-99
    5929840System and method for computer cursor control27-Jul-99
    5926813Database system index selection using cost evaluation of a workload for multiple candidate index configurations20-Jul-99
    5926807Method and system for effectively representing query results in a limited amount of memory20-Jul-99
    5926805Dual namespace client having long and short filenames20-Jul-99
    5925127Method and system for monitoring the use of rented software20-Jul-99
    5924108Document summarizer for word processors13-ju799
    5924099Data transfer with expanded clipboard formats13-Jul-99
    5923897System for adapter with status and command registers to provide status information to operating system and processor operative to write eject command to command register13-Jul-99
    5923848System and method for resolving names in an electronic messaging environment13-Jul-99
    5923846Method of uploading a message containing a file reference to a server and downloading a file from the server using the file reference13-Jul-99
    5923328Method and system for displaying a hierarchical sub-tree by selection of a user interface element in a sub-tree bar control13-Jul-99
    5923307Logical monitor configuration in a multiple monitor environment13-Jul-99
    5922058Optical transmission system for generating first-edge-based serial data bit stream by inverting control output line at mark times13-Jul-99
    5920895Mapped file input/output with delayed zeroing06-Jul-99
    5920734System for providing electrical power to a computer input device according to the interface types through the shared use of wires and a voltage clamp06-Jul-99
    5920720Efficient computer based virtual machine object structure06-Jul-99
    5920697Method of automatic updating and use of routing information by programmable and manual routing information configuration based on least lost routing06-Jul-99
    5920327Multiple resolution data display06-Jul-99
    5920316Taskbar with start menu06-Jul-99
    5919264System and method for using data structures to share a plurality of power resources among a plurality of devices06-Jul-99
    5917499Interactive graph display system29-Jun-99
    5917489System and method for creating, editing, and distributing rules for processing electronic messages29-Jun-99
    5917480Method and system for interacting with the content of a slide presentation29-Jun-99
    5915129Method and system for storing uncompressed data in a memory cache that is destined for a compressed file system22-Jun-99
    5914717Methods and system for providing fly out menus22-Jun-99
    5914716Slide out interface bar22-Jun-99
    5914714System and method for changing the characteristics of a button by direct manipulation22-Jun-99
    5913217Generating and compressing universally unique identifiers (UUIDs) using counter having high-order bit to low-order bit15-Jun-99
    5913207Database system index selection using index configuration enumeration for a workload15-Jun-99
    5913206Database system multi-column index selection for a workload15-Jun-99
    5913038system and method for processing multimedia data streams using filter graphs15-Jun-99
    5912661Z-encoder mechanism15-Jun-99
    5911072Method and system for reducing an intentional program tree represented by high-level computational constructs08-Jun-99
    5911068Container independent control architecture08-Jun-99
    5911066Data transfer utilizing a single functionally independent data transfer mechanism08-Jun-99
    5910802Operating system for handheld computing device having taskbar auto hide08-Jun-99
    5910800Usage tips for on-screen touch-sensitive controls08-Jun-99
    5907837Information retrieval system in an on-line network including separate content and layout of published titles25-May-99
    5907685System and method for synchronizing clocks in distributed computer nodes25-May-99
    5905987Method, data structure, and computer program product for object state storage in a repository18-May-99
    5905981Automatically associating archived multimedia content with current textual content18-May-99
    5905894Meta-programming methods and apparatus18-May-99
    5905890Event architecture system management in an operating system18-May-99
    5905884Method and system for registering and retrieving data formats for objects using a persistent registry18-May-99
    5905522Resource allocation method for interactive televideo system18-May-99
    5905508Method and System for dynamically plotting an element on an image using a table18-May-99
    5905492Dynamically updating themes for an operating system shell18-May-99
    5903917Method and system-for alignment of blocks in a program image11-May-99
    5903905Method for simultaneously constructing and displaying a dynamic preview of a document that provides an accurate customized document11-May-99
    5903903System for determining the sequence and placement of pages for a multiple-page document11-May-99
    5903896Method for installing a file on demand using a preview11-May-99
    5903894System and method for using a hierarchical data structure to control and identify devices and represent connections between the devices11-May-99
    5903754Dynamic layered protocol stack11-May-99
    5903728Plug-in control including an independent plug-in process11-May-99
    5903265System-provided window elements having adjustable dimensions11-May-99
    5903255Method and system for selecting a color value using a hexagonal honeycomb11-May-99
    5901312Providing application programs with unmediated access to a contested hardware resource04-May-99
    5900905System and method for linking video, services and applications in an interactive television system04-May-99
    5900004Method and system for interactive formatting of word processing documents with deferred rule evaluation and format editing04-May-99
    5899999Iterative convolution filter particularly suited for use in an image classification and retrieval system04-May-99
    5898868Method and system for file system management using a flash-erasable, programmable, read-only memory27-Apr-99
    5898819System for black and white printing of colored pages27-Apr-99
    5898170Apparatus and method for finding optimal sensitivity level for optical encoding circuit27-Apr-99
    5897650Encapsulation of extracted portions of documents into objects27-Apr-99
    5897642Method and system for integrating an object-based application with a version control system27-Apr-99
    5897640Method and system of associating, synchronizing and reconciling computer files in an operating system27-Apr-99
    5897622Electronic shopping and merchandising system27-Apr-99
    5893915Local font face selection for remote electronic document browsing13-Apr-99
    5893107Method and system for uniformly accessing multiple directory services06-Apr-99
    5893077Method and apparatus for generating and collecting a billing event object within an on-line network06-Apr-99
    5892917System for log record and tog expansion with inserted log records representing object request for specified object corresponding to cached object copies06-Apr-99
    5892904Code certification for network transmission06-Apr-99
    5892521System and method for composing a display frame of multiple layered graphic sprites06-Apr-99
    5890174Method and system for constructing a formula in a spreadsheet30-Mar-99
    5890171Computer system and computer-implemented method for interpreting hypertext links in a document when including the document within another document30-Mar-99
    5890161Automatic transaction processing of component-based server applications30-Mar-99
    5890147Scope testing of documents in a search engine using document to folder mapping30-Mar-99
    5889952Access check system utilizing cached access permissions30-Mar-99
    5889522System provided child window controls30-Mar-99
    5889521System provided child window controls30-Mar-99
    5886701Graphics rendering device and method for operating same23-Mar-99
    5886699Method and system for transferring data to common destinations using a common destination list23-Mar-99
    5886695System provided child window controls23-Mar-99
    5886694Method for automatically laying out controls in a dialog window23-Mar-99
    5884316Implicit session context system with object state cache16-Mar-99
    5884306System and method for directly manipulating fields for grouping items16-Mar-99
    5883633Method and system of variable run length image encoding using sub-palette16-Mar-99
    5883627Advanced graphics controls16-Mar-99
    5881292Dynamic versioning system for multiple users of multi-module software system09-Mar-99
    5881252Method and apparatus for automatically configuring circuit cards in a computer system09-Mar-99
    5881230Method and system for remote automation of object oriented applications09-Mar-99
    5880744Method and apparatus for vector transformation involving a transformation matrix09-Mar-99
    5880737Method and system for accessing texture data in environments with high latency in a graphics rendering system09-Mar-99
    5880733Display system and method for displaying windows of an operating system to provide a three-dimensional workspace for a computer system09-Mar-99
    5880731Use of avatars with automatic gesturing and bounded interaction in on-line chat session09-Mar-99
    5878421Information map02-Mar-99
    5878410File system sort order indexes02-Mar-99
    5878386Natural language parser with dictionary-based part-of-speech probabilities02-Ma-99
    5878282Portable information device and system and method for downloading executable instruction from a computer to the portable information device02-Mar-99
    5877765Method and system for displaying internet shortcut icons on the desktop02-Mar-99
    5877758System and method for using a slider control for controlling parameters of a display item02-Mar-99
    5875289Method and system for simulating auto-init mode DMA data transfers23-Feb-99
    5874960Method and system for sharing applications between computer systems23-Feb-99
    5873660Morphological search and replace23-Feb-99
    5873124Virtual memory scratch pages16-Feb-99
    5873118Method and system for storing file system state information in multiple sectors based on update frequency16-Feb-99
    5873081Document filtering via directed acyclic graphs16-Feb-99
    5872930Load balancing between E-mail servers within a local area network16-Feb-99
    5870763Database computer system with application recovery and dependency handling read cache09-Feb-99
    5870556Monitoring a messaging link09-Feb-99
    5870097Method and system for improving shadowing in a graphics rendering system09-Feb-99
    5867657Distributed scheduling in a multiple data server system02-Feb-99
    5867652Method and apparatus for supporting multiple outstanding network requests on a single connection02-Feb-99
    5867650Out-of-band data transmission02-Feb-99
    5867646Providing secure access for multiple processes having separate directories02-Feb-99
    5867175Method and apparatus for scriping animation02-Feb-99
    5867173Method for rendering a spline for scan conversion of a glyph comprising a plurality of discrete segments02-Feb-99
    5867166Method and system for generating images using Gsprites02-Feb-99
    5867144Method and system for the direct manipulation of information, including non-default drag and drop operation02-Feb-99
    5864848Goal-driven information interpretation and extraction system26-Jan-99
    5864711System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate26-Jan-99
    5864669Method and system for accessing a particular instantiation of a server process26-Jan-99
    5864342Method and system for rendering graphical objects to image chunks26-Jan-99
    5864337Mehtod for automatically associating multimedia features with map views displayed by a computer implemented atlas program26-Jan-99
    5862337Determining throughput dynamically19-Jan-99
    5862318System generating a gapless series of identity values19-Jan-99
    5860073Style sheets for publishing system12-Jan-99
    5859648Method and system for providing substitute computer fonts12-Jan-99
    5857190Event logging system and method for logging events in a network system05-Jan-99
    5854932Compiler and method for avoiding unnecessary recompilation29-Dec-91
    5854931Method and system for accessing virtual base classes29-Dec-98
    5852823Image classification and retrieval system using a query-by-example paradigm22-Dec-98
    5852443Method and system for memory decomposition in a graphics rendering system22-Dec-98
    5852441Shell extensions for an operating system22-Dec-98
    5852436Notes facility for receiving notes while the computer system ??s in a screen mode22-Dec-98
    5850232Method and system for flipping images in a window using overlays15-Dec-98
    5845300Method and apparatus for suggesting completions for a partially entered data item based on previously-entered, associated data items01-Dec-98
    5845293Method and system of associating, synchronizing and reconciling computer files in an operating system01-Dec-98
    5845280Method and apparatus for transmitting a file in a network using a single transmit request from a user mode process to a kernel-mode process01-Dec-98
    5845273Method and apparatus for integrating multiple indexed files01-Dec-98
    5845084Automatic data display formatting with a networking application01-DEC-98
    5845077Method and system for identifying and obtaining computer software from remote c9mputer01-Dec-98
    5844569Display device interface including support for generalized flipping of surfaces01-Dec-98
    5844551Shell extensions for an operating system01-Dec-98
    5842214Distributed file system providing a unified name space with efficient name resolution24-Nov-98
    5842211Method and system for transferring a bank file to an application program24-Nov-9
    5842180Method and system for detecting and correcting errors in a spreadsheet formula24-Nov-98
    5842018Method and system for referring to and binding to objects using identifier objects24-Nov-98
    5842016Thread synchronization in a garb age-collected system using execution barriers24-Nov-98
    5838963Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths17-Nov-98
    5838923Method and system synchronizing computer mail user directories17-Nov-98
    5838336Method and system for displaying images on a display device17-Nov-98
    5838322Shell extensions for an operating system17-Nov-98
    5838320Method and system for scrolling through data17-Nov-98
    5838319System provided child window control far displaying items in a hierarchical fashion17-Nov-98
    5838317Method and apparatus for a arranging displayed graphical representations on a computer interface17-Nov-98
    5838304Packet-based mouse data protocol17-Nov-98
    5835964Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map10-Nov-98
    5835908Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers10-Nov-98
    5835904System and method for implementing database cursors in a client/server environment10-Nov-98
    5835086Method and apparatus for digital painting10-Nov-98
    5835084Method and computerized apparatus for distinguishing between read and unread messages listed in a graphical message window10-Nov-98
    5832528Method and system for selecting text with a mouse input device in a computer system03-Nov-98
    5832514System and method for discovery based data recovery in a store and forward replication process03-Nov-98
    5832502Conversation index builder03-Nov-98
    5832479Method for compressing full text indexes with document identifiers and location offsets03-Nov-98
    5832225Method computer program product and system for maintaining replication topology information03-Nov-98
    5831606Shell e extensions for an operating system03-Nov-98
    5828885Method and system for merging files having a parallel format27-Oct-98
    5828364One-piece case top and integrated switch for a computer pointing device27-Oct-98
    5828361Method and system for rapidly transmitting multicolor or gray scale display data having multiple bits per pixel to a display device27-Oct-98
    5826269Electronic mail interface for a network server20-Oct-98
    5826257Method and structure for maintaining and utilizing a lookup value associated with a stored database value20-Oct-98
    5826041Method and system for buffering network packets that are transferred between a V86 mode network driver and a protected mode computer program20-Oct-98
    5825363Method and apparatus for determining visible surfaces20-Oct-98
    5825357Continuous?? accessible computer system interface20-Oct-98
    5822751Efficient multidimensional data aggregation operator implementation13-Oct-98
    5822526system, and method for maintaining and administering email address names in a network13-Oct-98
    5822525Method and system for Presentation conferencing13-Oct-98
    5819293Automatic Spreadsheet forms06-Oct-98
    5819288Statistically based image group descriptor particularly suited for use in an image classification and retrieval system06-Oct-98
    5819272Record tracking in database replication06-Oct-98
    5819112Apparatus for controlling an I/O port by queuing requests and in response to a predefined condition, enabling the I/O port receive the interrupt requests06-Oct-98
    5819107Method for managing the assignment of device drivers in a computer system06-Oct-98
    5819055Method and apparatus for docking re-sizeable interface boxes06-Oct-98
    5819032Electronic magazine which is distributed electronically from a publisher to multiple subscribers06-Oct-98
    5819030System and method for configuring a server computer for optimal performance for a particular server type06-Oct-98
    5818465Fast display of images having a small number of colors with a VGA-type adapter06-Oct-98
    5818447System and method for in-place editing of an electronic mail message using a separate Program06-Oct-98
    5815793Parallel computer29-Sep-98
    5815705Method and computer system for integrating a compression System with an operating System29-Sep-98
    5815703Computer-based uniform data interface (UDI) method and system using an application programming interface (API)29-Sep-98
    5815689Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism29-Sep-98
    5815682Device independent modem interface29-Sep-98
    5815665System and method for providing trusted brokering services over a distributed network29-Sep-98
    5813013Representing recurring events22-Sep-98
    5813008Single instance Storage of in formation22-Sep-98
    5812844Method and system for scheduling the execution of threads using optional time-specific scheduling constraints22-Sep-98
    5812793System and method for asynchronous store and forward data replication22-Sep-98
    5812784Method and apparatus for supporting multiple, simultaneous services over multiple, simultaneous connections between a client and network server22-Sep-98
    581278??Method, system, and product for assessing a server application performance22-Sep-98
    5812773System and method for the distribution of hierarchically structured data22-Sep-98
    5812430Componentized digital signal processing22-Sep-98
    5812136System and method for fast rendering of a three dimensional graphical object22-Sep-98
    5812123System for displaying Programming information22-Sep-98
    5809564Apparatus and method for swapping blocks of memory between a main memory area and a secondary storage area of a computer system15-Sep-98
    5809329System for managing the configuration of a computer system15-Sep-98
    5809295Method and apparatus for storing compressed file data on a disk where each MDFAT data structure includes an extra byte15-Sep-98
    5808617Method and system for depth complexity reduction in a graphics rendering system15-Sep-98
    5808604Apparatus and method for automatically positioning a cursor on a control15-Sep-98
    5806065Data system with distributed tree indexes and method for maintaining the indexes08-Sep-98
    5805911Word prediction system08-Sep-98
    5805896System for writing main memory address of object to secondary storage when storing object and reading main memory address of object when retrieving object from secondary storage08-Sep-98
    5805885Method and system for aggregating objects08-Sep-98
    5805170Systems and methods for wrapping a closed polygon around an object08-Sep-98
    5805165Method of selecting a displayed control item08-Sep-98
    5805164Data display and entry using a limited-area display panel08-Sep-98
    5802590Method and system for providing secure access to computer resources01-Sep-98
    5802526system and method for graphically displaying and navigating through an interactive voice response menu01-Sep-98
    5802380Method and system for uniform access of textual data01-Sep-98
    5802367Method and system for transparently executing code using a surrogate Process01-Sep-98
    5802305System for remotely waking a sleeping computer in power down state by comparing incoming packet to the list of packets storing on network interface card01-Sep-98
    5802304Automatic dialer responsive to network programming interface accessO1-Sep-98
    5801717Method and System in display device interface for managing surface memory01-Sep-98
    5801701Method and system for ??place interaction with contained objects01-Sep-98
    5801692Audi0-visual user interface controls01-Sep-98
    5801664System and method for transmitting data from a computer to a portable information device using RF emissions from a computer monitor01-Sep-96
    5835881Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers25-Aug-98
    5799321Replicating deletion information using sets of deleted record lbs25-Aug-98
    5799184System and method for identifying data records using solution bitmasks25-Aug-98
    796988Method and system using dedicated location to share information between real mode and protected mode drivers18-Aug-98
    796402Method and system for aligning windows on a computer screen18-Aug-98
    794256Pointer swizzling facility using three-state references to manage access to referenced objects11-Aug-96
    5794253Time based expiration of data objects in a store and forward replication enterprise11-Aug-98
    5794230Method and system for creating and searching directories on a server11-Aug-98
    5794038Method and system for notifiying clients using multicasting and for connecting objects using delayed m?? binding11-Aug-98
    5794006System and method for editing content in an on-line network11-Aug-98
    5793973Method and system for opportunistic broadcasting of data11-Aug-98
    5793970Method and computer program product for converting message identification codes using a conversion map accesible via a data link11-Aug-98
    5793374Specialized shaders for shading objects in computer generated images11-Aug-98
    5793356System and method for the software emulation Of a computer joystick11-Aug-98
    5790863Method and system for generating and displaying a computer program04-Aug-98
    5790858Method and system for selecting instrumentation points in a computer program04-Aug-98
    5790677System and method for secure electronic commerce transactions04-Aug-98
    5790126Method for rendering, a spline for scan conversion of a glyph04-Aug-98
    5790115System for character entry a display screen04-Aug-91
    5787451Method for background spell checking a word processing document28-Jul-98
    5787442Creating interobject reference links in the directory service of a store and forward replication computer network28-Jul-98
    5787417Method and system for selection of hierarchically related information using a content-variable list28-Jul-98
    5787411Method and apparatus for database filter generation by display selection28-Jul-98
    5787262System and method for distributed conflict resolution between data objects replicated across a computes network28-Jul-98
    5787259Digital interconnects of a PC with consumer electronics devices28-Jul-98
    5787247Replica administration without data loss in a store and forward replication enterprise28-Jul-98
    5787246System for configuring devices for a computer system28-Jul-98
    5786818Method and system for activating focus28-Jul-98
    5784628Method and system for controlling power consumption in a computer system21-Jul-98
    5784618Method and system for managing ownership of a released synchronization mechanism21-Jul-98
    5784616Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation21-Jul-98
    5784615Computer system messaging architecture??21-Jul-98
    5784555Automation and dial-time checking of system configuration for internet21-Jul-98
    5781902Method, computer program product, and system for extending the capabilities of an existing process to store and display foreign data14-Jul-98
    5781896Method and system for efficiently performing database table aggregation using an aggregation index14-Jul-98
    5781797Method and system for configuring device driver by selecting a plurality of component drivers to be included in the device driver14-Jul-98
    5781723System and method for self-identifying a portable information device to a computing unit??4-Jul-98
    5781195Method and system for rendering two-dimensional views of a three-dimensional surface14-Jul-98
    578119Method and System for transferring a slide presentation between computers14-Jul-98
    5778403Method for displaying text on a rendering device to accurately represent the text as if displayed on a target device07-Jul-98
    5778??02Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types07-Jul-98
    5778375Database normalizing system07-Jul-98
    5778372Remote retrieval and display management of electronic document with incorporated, images07-Jul-98
    5778361Method and system for fast indexing and searching of text in compound-word languages07-Jul-98
    5778069Non-biased pseudo random number generator07-July-98
    5774725Method and computer program product for simplifying construction of a program for testing computer software subroutines in an application programming interface30-Jun-98
    5774668System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing30-Jun-98
    5774126Method and apparatus for dynamically changing the color depth of objects displayed in a computer system30-Jun-98
    5771399Optical wand having an end shaped to register to the surface of a portable device to align respective optical element pairs for data transfer23-Jun-98
    5771384Method and system for replacement and extension of container interfaces23-Jun-98
    5771381Method and System for adding configuration files for a user23-Jun-98
    5771034Font format23-Jun-98
    5771033Method and system for dissolving an image displayed on a computer screen23-Jun-98
    5768566Method and facility for uninstalling a computer program package16-Jun-98
    5768519Method and apparatus for merging user accounts from a source security domain into a target security domain16-Jun-98
    5768515Method for generating and storing two segments of HTTP message headers with different lifetimes and combining them to form a single response header16-Jun-98
    5767835Method and system for displaying buttons that transition from an active state to an inactive state16-Jun-98
    5765180Method and system for correcting the spelling of misspelled words09-Jun-98
    5765156Data transfer with expanded clipboard formats09-Jun-98
    5764983Method and system for efficiently creating a new file associated with an application program09-Jun-98
    5764913Computer network status monitoring system09-Jun-98
    5764890Method and system for adding a secure network server ??o an existing computer network09-Jun-98
    5764241Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior09-Jun-98
    5761689Autocorrecting text typed into a word processing document02-Jun-98
    5761669Controlling access to objects on multiple operating systems02-Jun-98
    5761510Method for error identification in a program interface02-Jun-98
    5761477Methods for safe and efficient implementations of virtual machines02-Jun-98
    5760788Graphical Programming system and method for enabling a person ??o learn text-based programming02-Jun-98
    5760773Methods and apparatus for interacting with data objects using action handles02-Jun-98
    5760770System and method defining a view to display data02-Jun-98
    5760768Method and system for customizing a user interface in a computer system02-Jun-98
    575836Meta-data structure and handling26-May-98
    5758358Method and system for reconciling sections of documents26-May-98
    5758352Common name space for long and short filenames26-May-98
    5758337Database partial replica generation system26-May-98
    5758184System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads26-May-98
    5758154Method and system for storing configuration data into a common registry26-May-98
    5757920Logon certification26-May-98
    5757371Taskbar with start menu26-May-98
    5754890System for automatic identification of a computer data entry device interface type using a transistor to sense the voltage generated by the interface and output a matching voltage level19-May-98
    5754862Method and System for accessing virtual base classes19-May-98
    5754858Customizable application project generation process and system19-May-98
    5754854Method and system for providing a group of parallel resources as a proxy for a single shared resource19-May-98
    5754175Method and system for in-??ace interaction with contained objects19-May-98
    5752252Storage of file data on disk in multiple representations12-May-98
    5752243Computer method and storage structure for storing and accessing multidimensional data12-May-98
    5752038Method and system for determining an optimal placement order for code portions within a module12-May-98
    5752031Queue object for controlling concurrency in a computer system12-May-98
    5752025Method, computer program product, and system for creating and displaying a categorization table12-May-98
    5751283Resizing a window and an object on a display screen12-May-98
    5751282System and method for calling video on demand using an electronic programming guide12-May-98
    5751276Method for calibrating touch panel displays 12-May-98
    5748980System for configuring a computer system05-May-98
    5748895transmitted from a display device while concurrently displaying human-readable explanation of the Pattern05-May-98
    5748512Adjusting keyboard05-May-98
    5748468Prioritized c0-processor resource manager and method05-May-98
    5748191Method and system for creating voice commands using an automatically maintained log interactions performed by a user05-May-98
    5745904nBuffered table use index28-Apr-98
    5745902Method and system for accessing a file using file names having different filename formats28-Apr-98
    5745767Method and system, for testing the interoperability of application Programs28-Apr-98
    5745764Method and system for aggregating objects28-Apr-98
    5745752Dual namespace client having long and short filenames28-Apr-98
    5745738Method and engine for automating the creation of simulations for demonstrating use of software28-Apr-98
    5745119C01or data conversion using real and virtual address spaces28-Apr-98
    5745110Method and apparatus for arranging and displaying task schedule information in a calendar view format28-Apr-98
    5745103Real-time palette negotiations in multimedia presentations28-Apr-98
    5745095Compositing digital information on a display screen based on screen descriptor28-Apr-98
    5742848System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions21-Apr-98
    5742835Method and system of sharing common formulas in a spreadsheet program and of adjusting the same to conform with editing operations21-Apr-98
    5742829Automatic software installation on heterogeneous networked client computer systems21-Apr-98
    5742826Compiler and method for evaluation or foreign syntax expressions in source code21-Apr-98
    5742825Operating System for office machines21-Apr-98
    5742818Method and system of converting data from a source file system to a target file system21-Apr-98
    5742773Method and System for audio compression negotiation for multiple channels21-Apr-98
    5742756System and method of using smart cards to perform security-critical operations requiring user authorization21-Apr-98
    5742278Force feedback Joystick with digital signal processor controlled by host processor 2??-Apr-98
    5742260System and method for transferring data using a frame-scanning display device21-APr-98
    5740456Methods and system for controlling intercharacter spacing as font size and resolution of output device vary14-Apr-98
    5740439Method and System for referring to and binding to objects ??sing identifier objects14-Apr-98
    5740405Method and system for providing data compatibility between different versions of a software program14-Apr-98
    5737733Method and system for searching compressed data07-Apr-98
    5737611Methods or dynamically, escalating locks On a shared resource07-Apr-98
    5737591Database view generation system07-Apr-98
    5736987Compression of graphic data normals07-APr-98
    5736983Shellextensions for an 0Perating system07-Apr-98
    5734904Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the firs type31-Mar-98
    5734858Method and apparatus for simulating banked memory as a linear address space31-Mar-98
    5734387Method and apparatus for creating and performing graphics operations on device-independent bitmaps31-Mar-98
    5732267Caching/prewarming data loaded from ??24-Mar-98
    5732265Storage optimizing encoder and method24-Mar-98
    5732256CD-ROM optimization and stream splitting24-Mar-98
    5731844Television scheduling system for displaying a grid representing scheduled layout and selecting a programming parameter for display or recording24-Mar-981
    5729748Call template builder and method17-Mar-98
    5729745Methods and apparatus for creating a base class for manipulating external data connections in a computer generated document17-Mar-98
    5729689Network naming services proxy agent17-Mar-98
    5727178System and method for reducing stack physical memory requirements in a multitasking operating system10-Mar-98
    5726687Auto-scrolling with mouse speed computation during dragging10-Mar-98
    5724594Method and system for automatically identifying morphological information from a machine-readable dictionary03-Mar-91
    5724588Method and system for network marshaling of interface pointers for rem0te procedure Calls03-Mar-98
    5724558System and method for dynamic data packet configuration03-Mar-98
    5724492Systems and method for displaying control objects including a plurality of panels03-Mar-98
    5724074Method and system for graphically programming mobile toys03-Mar-98
    5724070common digital representation of still images for data transfer with both slow and fast data transfer rates03-Mar-98
    5724068Joystick with uniform center return force03-Mar-98
    5721919Method and system for the link tracking of objects24-Feb-98
    5721916Method and system for shadowing file system structures from multiple types, of networks24-Feb-98
    5721847Method and system for liking controls with cells of a spread sheet24-Feb-98
    5721781Authentication system and method for smart card transactions24-Feb-98
    5719941Method for changing passwords on a remote computer17-Feb-98
    5717902Method and system for selectively applying an appropriate object ownership model10-Feb-98
    5717845Method and apparatus for transferring a brush pattern to a destination bitmap10-Feb-98
    5715441Method and system for storing and accessing data in a compound document using object linking03-Feb-99
    5715415Computer application with help pane integrated into workspace03-Feb-98
    5713020Method and system for generating database queries containing multiple levels of aggregation27-Jan-98
    5713003Method and system for caching data27-Jan-98
    5713002Modified buddy system for managing storage space 27-Jan-98
    5710941System for substituting protected mode hard disk driver for real mode driver by trapping test transfers to verify matching geometric translation 20-Jan-98
    5710928Method and system for connecting objects in a computer system20-Jan-98
    5710925Method and system for aggregating objects20-Jan-98
    5710880Method and system for creating a graphic image with geometric descriptors20-Jan-98
    5709219Method and apparatus to create a complex tactile sensation20-Jan-9
    5708814Method and apparatus for reducing the rate of interrupts by generating a single interrupt for a group of events13-Jan-98
    5708812Method and apparatus for Migrating from a source domain network controller to a target domain network controller13-Jan-98
    5706505Method and system for binding data in a computer system06-Jan-98
    5706504Method and system for storing06-Jan-98
    5706483Run-time code compiler for data block transfer06-Jan-98
    5706462Self optimizing font width cache06-Jan-98
    5706458Method and system for merging menus of application programs06-Jan-98
    5706450Method and system for presenting alternatives for selection using adaptive learning06-Jan-98
    5706411Printer status user interface and methods relating thereto06-Jan-98
    5701511Redbook audio sequencing23-Dec-97
    5701499Method and system for automatically entering a data series into contiguous cells of an electronic spreadsheet Program or the like23-Dec-91
    5701491Method and system for transitioning the network mode of a workstation23-Dec-97
    5701469Method and System for generating accurate search result using a content-index23-Dec-97
    5701462Distributed file system providing a unified name space with efficient name resolution23-Dec-97
    5701461Method and system for accessing a remote database using pass-through queries23-Dec-97
    5701460Intelligent joining system for a relational database23-Dec-97
    5701424Palladian menus and methods relating thereto23-Dec-97
    5701137Method for separating a hierarchical tree control into one or more hierarchical child tree controls in a graphical user interface23-Dec-97
    5699518System for selectively setting a server node, evaluating to determine server node for executing server code, and downloading server code prior to executing if necessary??6??Dec-91
    696946Method and apparatus for efficient transfer of data to memory09-Dec-97
    5694610Method and system for editing and formatting.data in a dialog window02-Dec-97
    5694606Mechanism for using common code to handle hardware interrupts in multiple processor modes02-Dec-97
    5694563Method and system for transferring data to common destinations using a common destination list02-Dec-97
    5694561Method and System for grouping and manipulating windows02-Dec-97
    5694559on-line help method and system utilizing free text query02-Dec-97
    5694153Input device for providing multi-dimensional position coordinate signals to a computer02-Dec-97
    5692189Method and apparatus for isolating circuit boards in a computer system25-Nov-97
    5692177Method and system for data set storage by iteratively searching for perfect hashing functions25-Nov-9
    5692173Methodarid System for combining prefix and first character searching of a list 25-Nov-97
    5692157Method and system for transferring data between objects using registered data formats25-N0v-97
    5692??44Method and System for depicting an object, springing back from a position25-Now97
    5691745Low power pixel-based visual display device having dynamically changeable number of grayscale shades25-Nov-97
    5689709Method and system for invoking methods of an object18-Nov-97
    5689703Method and system for referring to and binding to objects using identifier objects18-Nov-97
    5689700Unification of directory service with file system services18-Nov-97
    5689664Interface sharing between objects18-Nov-97
    5689663Remote controller user interface and methods relating thereto18-Nov-97
    5689662Shell extensions for an operating system18-Nov-97
    5689638Method for providing access to independent network resources by establishing connection using an application programming interface function call without prompting the user for authentication data 18-Nov-97
    5689565Cryptography System and method for providing cryptographic services for a computer application18-N0v-97
    5687392System for allocating buffer to transfer data when user buffer is mapped to physical region that does not conform to physical addressing limitations of controller??-Nov-97
    5687331Method and system for displaying an animated focus item11-Nov-97
    5685003Method and system for automatically indexing data in a document using a fresh index table04-Nov-97
    5685001Method and system for automatically entering a data series into contiguous cells of an electronic spreadsheet program or the like04-Nov-97
    5684993Segregation of thread-specific information from shared task information04-Nov-97
    5684510Method Of font rendering employing grayscale processing of grid fitted fonts04-Nov-97
    5682536Method and system for referring to and binding to objects using identifier objects28-Oct-97
    5682532System and method having programmable containers with functionality for managing objects28-Oct-97
    5682511.Graphical viewer interface for an interactive network system28-Oct-97
    5682510Method and system for adding application defined properties and application defined property sheet pages28-Oct-97
    5682478Method and apparatus for supporting multiple, simultaneous services over multiple, simultaneous connections between a client and network server28-Oct-97
    5682469software platform having a real world interface with animated characters28-Oct-97
    5680629Method and system for previewing computer output 21-Oct-97
    5680616Method and system for generating and maintaining property sets with unique format identifiers21-Oct-97
    5680582Method for heap coalescing where blocks do not cross page of segment b0ur??dartes21-Oct797
    5680559Shell extensions for an operating system21-00t-97
    5680458Root key compromise recovery2??-Oct-97
    5678034Accessbar arbiter14-Oct-97
    5678014Folder rack icons14-Oct-97
    5678012Method and system for selecting a video piece from a database14-Oct-97
    5678007Method and apparatus for supporting multiple outstanding network requests on a single connection14-Oct-97
    5678002System and method for providing automated customer support14-Oct-97
    5677708System for displaying a list on a display screen14-Oct-97
    5675833Apparatus and method for detecting insertions and removals of floppy disks by monitoring write-protect signal07-Oct-97
    5675831Method for automatic installation of a modem wherein unique identification for the device registry is computed, from modem responses to queries by the system07-Oct-97
    5675813system and method for power control in a universal serial bus07-Oct-97
    5675796Concurrency management component for use by a computer program during the transfer of a message07-Oct-97
    5675793Dynamic allocation of a common buffer for use by a set of software routines07-Oct-97
    5675787Unification of directory service with file system services07-Oct-97
    5675782Controlling access to objects on multiple operating systems07-Oct-97
    5675520Method for extending a common user interface07-Oct-97
    5673401Systems and methods for a customizable sprite-based graphical user interface30-Sep-97
    5673394Method of sharing memory between an operating system and an application program30-Sep-97
    5670955Method and apparatus for generating directional and force vector in an input device23-Sep-97
    5668996Rendering CD redbook audi0 using alternative storage, locations and formats16-8ep-97
    5666526Method and system for supporting scrollable, updatable database queries09-Sep-97
    5666523Method and system for distributing asynchronous input from a system input queue to reduce context switches09-Sep-97
    5666489Method and apparatus for enhancing capabilities of office machines09-Sep-97
    5664228Portable information device and system and method for downloading executable instructions from a computer to the portable in formation device02-Sep-97
    5664191Method and system for improving the locality of memory references during execution of a computer program02-Sep-97
    5664??78Method and system for organizing internal structure of a file 02-Sep-97
    5664173Method and apparatus for generating database queries from a meta-query pattern02-Sep-97
    5664133Context sensitive menu system/menu behavior02-Sep-97
    5659791Encapsulation of extracted portions of documents into objects19-Aug-97
    5659747Multiple level undo/redo mechanism??9??-Aug-97
    5659685Method and apparatus for maintaining network communications on a computer capable of connecting to a WAN and LAN19-Aug-97
    5659674System and method for implementing an operation encoded in a graphics image19-Aug-9
    56.59336Method and apparatus for creating and transferring a bitmap1g-Aug-g??
    5657050Distance control for displaying a cursor12-Aug-97
    5655154Method and system for sharing utilities between operating systems05-Aug-g7
    5655148Method for automatically configuring devices including a network adapter without manual intervention and without prior configuration information05-Aug-97
    5655077Method and System for authenticating access to heterogeneous computing services29-Aug-97
    5652913System for providing intercommunication of I/O access factors stored in a shared data structure, accessed and maintained by both file System and device driver29-Jul-9
    5652901Method and system for previewing computer Output29-Jul-97
    5652888System for interconnecting software components in an object oriented programming environment using a separate editor object/or each run-time object instantiated for each selected component29-Jul-97
    5652883Computer method and system for conservative-stack and generational heap garbage collection29-Jul-97
    5652602Fast serial data transmission using a CRT29-Jul-97
    5651676Method of organizing and storing simulated scenery in a flight simulation system29-Jul-97
    5628005System and method for providing opportunistic file access in a network environment06-May-97
    5627997Method and system for converting computer mail messages using an extensible set of conversion routines06-May-97
    5625799Method and apparatus for determining the logic and functionality of a changeline29-Apr-97
    5625783Automated system and method for dynamic menu construction in a graphical user interface29-Apr-97
    5623674Method for determining steerable interrupt request lines used by PCMCIA controllers22-Apr-97
    5623651Method and system for repairing cross-linked clusters an d reattaching lost directories on a storage device22-Apr-97
    5623613System for displaying programming information22-Apr-97
    5623282Method and system for the direct manipulation of cells in an electronic spreadsheet program or the like22-Apr-97
    5621894System and method for exchanging Computer data processing capabilites15-Apr-97
    5621875Method and system for automatic formatting of user selected text15-Apr-97
    5619688Method and system for constructing database queries using a field selection grid05-Apr-97
    5617569Method and system for implementing pointers to members in a compiler for an object-oriented programming language01-Apr-97
    5617526Operating system provided notification area for displaying visual notifications from application programs01-Apr-97
    5613131Auto-formatting of tables in a spreadsheet program18-Mar-97
    5613124Method and system for generating and storing multiple representations of a source object in object storage18-Mar-97
    5613123Method and system for configuring and executing device drivers based on configuration requirements18-Mar-97
    5613105Efficient storage of objects in a file system18-Mar-97
    5613079System for verifying the proper operation of a replication facility18-Mar-97
    5613058Method and system for in-place interaction with contained objects18-Mar-97
    5613019System and methods for spacing, storing and recognizing electronic representations of handwriting, printing and drawings18-Mar-97
    5611060Auto-scrolling during a drag and drop operation11-Mar-97
    5611040Method and system for activating double click applications with a single click11-Mar-97
    5608909Method and system for caching presentation data of a source object in a Presentation cache04-Mar-97
    5608901Method and system for improving the contiguity of sectors of a file04-Mar-97
    5608853System and method for graphics scaling and localized color enhancement04-Mar-97
    5604897Method and system for correcting the spelling of misspelled words18-Feb-97
    5604887Method and system using dedicated location to share information between real and protected mode device drivers18-Feb-97
    5604856Motion compensated noise reduction method_ and system for computer generated images18-Feb-97
    5604850Method and system for dynamically generating computer instructions for performing a logical operation 0n bit maps18-Feb-97
    5604849Overlay management system, and method18-Feb-97
    5604847System and method of printer banding18-Feb-97
    5603030Method and system for destruction of objects using multiple destructor functions in an object-oriented computer system11-Feb-9
    5602981Quickselect icon button on a computer display which redisplays the last view style activated by the icon button11-Feb-97
    5598563Method of loading device drivers from ROM without requirement of system to have any harddisks or floppy drives and without using config.sys file28-Jam-97
    5598520Methods and apparatus for hinting a font for controlling stem width as font size and resolution of output device vary28-Jan-97
    5598519Method and system for direct cell formatting in a spreadsheet28-Jan-97
    5598183System and method for computer cursor control28-Jan-97
    5596755Mechanism for using common cede to handle hardware interrupts in multiple processor modes21-Jan-97
    5596726Method and system for buffering transient data using a single physical buffer21-Jan-97
    5596347System and method for computer cursor control21-Jan-97
    5594905Exception handler and method for handling interrupts14-Jan-97
    5594898Method and system for joining database tables using compact row mapping structures14-Jan-97
    5594847System and method for selecting free form objects associated with a selection region displayed by a computer14-Jan-97
    5594462Calibrating data transmission line spacing on a frame-scanning display device for optically transmitting data to a Portable programmable device14-Jan-97
    5592670Avoidance of deadlocks in a demand paged video adapter07-Jan-97
    5590347Method and system for specifying alternate behavior of a software system using alternate behavior indicia31-Dec-96
    5590336Method and apparatus for performing overlapping service of multiple IDE peripheral devices31-Dec-96
    5590318Method and system for tracking files pending processing31-Dec-96
    5590267Method and system for scalable borders that provide an appearance of depth31-Dec-96
    5588147Replication facility24-Dec-96
    5588100Method and system for creating .a freeform drawing object24-Dec-96
    5588099Method and system for automatically resizing tables24-Dec-96
    5586328Module dependency based incremental compiler and method17-Dec-96
    5586318Method and system for managing ownership of a released synchronization mechanism17-Dec-96
    5585838Program time guide17-Dec-96
    5583981Method and system for managing the size o? edit C?? graphical user in interface10-Dec-96
    5581760Method and system for referring to and binding to Objects using identifier objects03-Dec-96
    5581736Method and system for dynamically sharing RAM between virtual memory and disk cache03-Dec-96
    5581686Method and system for in-place interaction with contained objects03-Dec-96
    5579517Common name space for long and short filenames26-Nov-96
    5579466Method and system for editing and formatting data in a dialog window26-Nov-96
    5579223Method and system for incorporating modifications made to a computer program into a translated version of the computer program26-Nov-96
    5577224Method and system for caching data19-Nov-96
    5577187Method and system for tiling windows based on previous position and size19-Now-96
    5577173System and method of printer banding19-Nov-96
    5574920Method for controlling power down of a hard disk drive in a computer12-Nov-96
    5574907Two-pass defragmentation of compressed hard disk data with a single data rewrite12-Nov-96
    5574840Method and system for selecting text utilizing a plurality of text using switchable minimum granularity of selection12-Nov-96
    5572589Disc serialization05-Nov-96
    5566068Method and system for locating field breaks within input data15-Oct-96
    5565887Method and apparatus for moving a cursor on a computer screen15-Oct-96
    5565886Method and system for rapidly transmitting multicolor or gray scale display data having multiple bits per pixel to a display device15-Oct-96
    5561788Method and system for executing programs using memory wrap in a multi-mode microprocessor01-Oct-96
    5561786Computer method and system for allocating and freeing memory utilizing segmenting and free block lists01-Oct-96
    5561751System and method for displaying a color image using vector error diffusion01-Oct-96
    5559943Method and apparatus customizing a dual actuation setting of a computer input device switch24-Sep-96
    5559884Method and system for generating and auditing a. signature for a computer program24-Sep-96
    5557723Method and system for customizing forms in an electronic mail system17-Sep-96
    5557714Method and system for rotating a three-dimensional model about two orthogonal axes17-Sep-96
    5557440Noise-insensitive optoencoding techniques with compensation for device variations17-Sep-96
    5553215Method and system of sharing common formulas in a spreadsheet program and of adjusting the same to conform with editing operations03-Sep-96
    5552982Method and System for processing fields in a document processor03-Sep-96
    5551024System for identifying data records in a database using a data structure with linked parameters in a search range27-Aug-96
    5550972Method and apparatus for efficient transfer of data to memory27-Aug-96
    5548759System for storing executable cede within a resource data section of an executable file20-Aug-96
    5548305Method and apparatus for displaying color on a computer output device using dithering techniques20-Aug-96
    5546518System and method for composing a display frame of multiple layered graph sprites13-Aug-96
    5544082Method and system for placing a computer in a reduced power State06-Aug-96
    5537628Method for handling different code pages In text16-Jul-96
    5537589Method and system for efficiently performing database table aggregation using an aggregation index16-Jul-96
    5535324Method and System for dragging and plotting new data onto an embedded graph09-Jul-96
    5530895System and method for computer interface board identification by serially comparing identification address bits and asserting complementary logic patterns for each match25-Jun-96
    5530794Method and system for handling text that includes p-paragraph delimiters of differing formats25-Jun-96
    5528742Method and system for processing documents with embedded fonts18-Jun-96
    5526523Interface between operating system and operating system extension11-Jun-96
    5522068Statistic-based reorganization of B-trees yielding an approximate optimal fill on substantially every page28-May-96
    5519855Summary catalogs21-May-96
    5517645Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a comp0nent manager14-May-96
    5517257Video control user interface for interactive television systems and method for controlling display of a video movie14-May-96
    5515536Method and system for invoking methods of an object through a dispatching interface07-May-96
    5512921Visual display system having low energy data storage subsystem with date compression capabilities, and method f0r operating same30-Apr-98
    5511197Method and system for network marshalling of interface pointers for remote procedure calls23-Apr-96
    5510980Method and system for selecting and executing arithmetic functions and the like23-Apr-96
    5510811Apparatus and method for controlling cursor movement23-Apr-96
    5506983Method and system for transactioning of medifications to a tree structured file09-Apr-96
    5504889Method and system for monitoring file attributes using bitmaps to determine group membership of files and to determine which files have been processed02-Apr-96
    5504500User programmable orientation of cursor movement direction02-Apr-96
    5499369Method and system for connecting objects using alert and running states12-Mar-96
    5499335Method and system for Providing standard resources in different natural languages12-Mar-96
    5499334Method and system for displaying window configuration of inactive programs12-Mar-96
    5497492System and method for loading an operating system through use of a fire system06-Mar-96
    5495571Method and system for performing parametric testing of a functional programming interface27-Feb-96
    5495566Scrolling contents of a window27-Feb-96
    5490274Modified buddy system for managing disk space06-Feb-96
    5485617Method and system for dynamically generating 0bject connections16-Jan-9
    5485574Operating system based performance monitoring 0f programs16-Jam-96
    5485558Method and system for displaying color on a computer output device using dithering techniques16-Jan-96
    5485460System and method for running multiple incompatible network protocol stacks16-Jan-96
    5481667Method and system for instructing a user of a computer system how to perform application program tasks02-Jan-96
    5473691System and method !or computer data transmission05-Dec-95
    54733443-D cursor positioning device05-Dec-95
    5473343Method and apparatus for locating a cursor on a computer screen05-Dec-95
    5471564System and method for dynamic printer timeout28-Nov-95
    5471563System and method for automatic resolution reduction28-Nov-95
    5467472Method and system for generating and maintaining property sets with unique format identifiers14-Nov-95
    5455600Method and apparatus for mapping colors in an image through dithering and diffusion03-Oct-95
    5452406Method and system for scalable borders that provide an appearance Of depth19-Sep-95
    5450536Technique for automatically resizing tables12-Sep-95
    5446887Optimal reorganization of a B-tree29-Aug-95
    5442793Method and system for locating an inherited virtual function member of a derived class15-Aug-95
    5442751Method and apparatus for processing data through a register potion by portion15-Aug-95
    5437036Text checking application programming interface25-Jul-95
    5437013Method and system for network communications using raw mode protocols25-Jul-95
    5437006Spreadsheet command/function capability from a dynamic-link library25-Jul-95
    5432941Method and system for dynamically configuring a software System using configurati0n groups11-Jul-95
    5432936Method for implementing pointers to members in a compiler for an object-oriented programming language11-Jul-95
    5432928Updating objects stored in a permanent container while preserving logical contiguity11-Jul-95
    5432924Method and system for selectively applying an appropriate object ownership model11-Jul-95
    5430878Method for revising a program to obtain compatibility with a computer configuration04-Jul-5
    5426760Method and system for storing index information using a base number of bits20-Jun-95
    5426729Method and system for nonuniformly adjusting a predefined shape20-Jun-95
    5418956Method and System for avoiding selector loads23-May-95
    5416726Method and system for placing a computer in a reduced power state16-May-95
    5414445Ergonomic pointing device09-May-95
    5412807System and method for text searching using an n-ary search tree02-May-95
    5410705Method for generating an object data structure layout for a class in a compiler for an object-oriented programming language25-Apr-95
    5394518Luminance sensitive palette28-Feb-95
    5392427System for updating data stored on a flash-erasable, programmable, read-only memory (FEPROM) based upon predetermined bit value of indicating pointers21-Feb-95
    5381521System and method of rendering curves10-Jan-95
    5381347Method and system for displaying images on a display device using an offscreen video memory10-Jan-95
    5375241Method and system for dynamic-link library20-Dec-94
    5371891Method for object construction in a compiler for an object-oriented programming language06-Dec-94
    5371885High performance file system06-Dec-94
    5371847Method and system for specifying the arrangement of windows on a display06-Dec-94
    5369770Standardized protected-mode interrupt manager29-Nov-94
    5367617System and method of hybrid forward differencing to render Bezier splines22-Nov-94
    5363487Method and system for dynamic volume tracking in an installable file System08-Nov-g4
    5363479System and method for rendering bezier splines08-Nov-94
    5357605Method and System for displaying patterns using a bitmap display18-Oct-94
    5357603Method and system for changing, a shape type while maintaining existing graphic characteristics18-Oct-94
    5341464Luminance emphasized color image rendering23-Aug-94
    5339432Method and system for providing user control of device driver configuration16-Aug-94
    5327562Method for implementing virtual function tables in a compiler for an object-oriented programming language05-Jul-94
    5301326Method and system for controlling the execution of an application program57-Apr-94
    5300946Method for outputting transparent text05-Apr-94
    5297284Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language22-Mar-94
    5287514Method and System for customizing a user interface in a computer system15-Feb-94
    5287417Method and system for recognizing a graphic object's shape, line style, and fill pattern in a pen environment15-Feb-94
    5281958Pointing device with adjustable clamp attachable to a keyboard 25-Jan-94
    5274751System and method for printing graphic objects28-Dec-93
    5272628Method and system for aggregating tables having dissimilar formats21-Dec-93
    5268675Computer command and pointing device with multi-axis engagement assembly07-Dec-93
    5265261Method and system for network communications using raw mode protocols23-Nov-93
    5261101Method for calling and returning from subroutine that is invoked by either a near call or a far call09-Nov-93
    5261051Method and system for open file caching in a networked computer system09-Nov-93
    5257370Method and system for optimizing data caching in a disk-based computer system26-0ct-93
    5255356Method for hiding and showing spreadsheet cells19-0ct-931
    5247658Method and system for traversing linked list record based upon write-once predetermined bit value of secondary Pointers21-Sep-93
    5231577Method and system for processing formatting information in a spreadsheet27-Jut-93
    5220675Method and system for customizing a an user interface in integrated environment15-Jun-93
    5218697Method and system for networking computers having varying file architectures08-Jun-931
    5214755Document processing method and system25-May-92
    5204960Incremental compiler20-Apr-93
    5187468Pointing device with adjustable clamp attachable to a keyboard16-Feb-93
    5146580Method and system for using expanded memory for operating system buffers and application buffers08-Sep-92
    5138303Method and apparatus for displaying color on a computer output device using dithering techniques11-Aug-92
    5125077Method of formatting data from am use23-Jun-92
    5027273Method and operating system for executing programs in a multi-mode microprocessor25-Jun-91
    5021974Method for updating a display bitmap with a character string or the like04-Jun-91
    4974159Method of transferring control in a multitasking computer system27-Nov-90
    4967378Method arid system for displaying a monochrome bitmap on a color display30-Oct-90
    4866602Power Supply for a computer peripheral device which positions a cursor on a computer display12-Sep-89
    4825358Method and operating system for executing programs in a multi-mode microprocessor25-Apr-89
    4779187Method and operating system for executing programs in a multi-mode microprocessor18-Oct-88


    Exhibit I

    Shared Source vs. Open Source: Panel Discussion

    08/09/2001

    Part 1: The Debate

    Tim:
    Sounds like some of Michael's speech was maybe a treaty with the free software people. [laughter]

    Anyway, there probably are divisions within Microsoft just as there are divisions within our community. It's kind of interesting, because the diversity of opinions often leads not to division but to strength, and I think we're going to demonstrate that strength as we hear from a number of people who are prominent in our community and are allied under the banner of the core principles of open source, but who do have different takes on how it works and what's important about it.

    Anyway, I'd like to invite up the rest of our panel. Michael and Craig, you may want to come back up and sit down.

    Panelists: Clay Shirky
    Accelerator Group
    Shirky.com

    Michael Tiemann,
    Chief Technical Officer
    RedHat

    David Stutz
    Software architect
    Microsoft

    Mitchell Baker
    Chief Lizard Wrangler
    Mozilla.org

    Ronald Johnston
    Partner
    Arnold & Porter

    Craig Mundie,
    Senior Vice President Advanced Strategies
    Microsoft

    Brian Behlendorf
    Founder & CTO
    CollabNet

    Tim O'Reilly
    Founder & President
    O'Reilly & Associates

    I have here with us Brian Behlendorf, who's one of the cofounders of the Apache Project. [applause] I'll just start down at the far end, then.

    Clay Shirky is a partner at an incubator called the Accelerator Group. He's also a well-known commentator on coming technologies, and he's recently done some very interesting thinking about some of Microsoft's new technologies, in particular Hailstorm. That's why he's here to talk to us. [applause]

    Dave Stutz is, I believe, now the program manager for the shared source implementation of the common language run time and so forth. Is that the appropriate designation?

    Dave:
    Sure. It'll work.

    Tim:
    Dave is

    Dave:
    Craig's Mini-Me .

    Tim:
    Yeah, I was going to say, I don't know, maybe something like, if you had the hat [reference to the red hats on heads all through the room], I would say, "Mini-Me. Do not chew on your hat." [laughter]

    Next in line is Mitchell Baker, who's known as the Chief Lizard Wrangler at Mozilla.org. Mitchell is also the person who wrote the Mozilla license, so she's done a lot of thinking about free software and open source licenses and the needs of corporations. [applause]

    We have with us Ron Johnson, who's an attorney at Arnold & Porter and the chair of the 22nd Annual Computer and Internet Law Institute.

    And obviously you know Craig, and I already introduced Brian.

    So, Craig, I don't know if you wanted to respond at all to any of Michael's comments [laughter], or whether you want to hear from a few other people before we get there.

    Craig:
    I'll just offer one general thought, which is, you know, in some sense it's easy to poke fun or think you know what is the look-in from the outside and to be at Microsoft.

    We're a company now of 50,000 people, and among any community of 50,000 people, particularly fairly smart people, you're going to have a lot of people who think carefully about a lot of issues, and feel passionately as you do about a lot of issues. So I don't think we're embarrassed at all to find that people would come forward at Microsoft and ask questions or ask whether we do the right thing or not.

    What I can tell you is that there is a single-purpose focus in the management of the company. The leadership of the company is not uncertain about what we're doing. We welcome people asking questions in the company, but ultimately we recognize our job is to make decisions and provide consistent leadership. And so if people don't like what the company wants to do, there's no indentured servitude. You know, they're free to go do something else. But the company is clear about what it will do. And I can just tell you that as a member of a management committee of the company, and while listening to Michael's comments that many of the ways he characterizes what he thinks may go on inside the company in terms of a civil war or anything, frankly [it] just doesn't exist. It may be fine to ruminate about what you think could exist or does exist. I can tell you quite specifically, there's no civil war at the management level and, to me, no observable civil war among the rank and file either. So that's one thought I'd leave with you today.

    Tim:
    So, Brian, you're obviously someone who has, you know, come up from the GPL side of the house but from the university style of license regime. Clearly you have done a lot of thinking about what licenses you would choose and why. Do you have any thoughts on that, or any things you'd like to talk to Craig about with regard to the BSD orientation.... [laughter]

    Brian:
    Sure. [more laughter] You don't want to call on anybody else, do you? [laughter]

    One of the slides in [Craig Mundie's] presentation was actually a very useful slide. It showed that there is a relationship a set of relationships between the public research through universities, corporations, users, and government. I think what we've seen is that it's not one-directional like that. What we've seen is that it's actually bi-directional in all those things in fact, bi-directional across universities and consumers and government and business and all those directions.

    And so while Apache, for example, is under a BSD-style license, it was very important while we were building the Apache community that we not only have other corporations use it and adopt it into their commercial products, but also that we communicate to those companies the need to reinvest back, the need to build Apache itself as a strong force as they build up the momentum behind it. And to us, even though the obligation isn't there to share their code back, the companies that are participating in the Apache Software Foundation and even more broadly, within the BSD communities, understand the need to reinvest, to build it back up. And that's one thing that I think may be missing in some of this debate: the creation of licenses, the creation of regimes that really are bi-directional, that really put all the participants at an equal level.

    I totally welcome Microsoft exploring shared source licenses. I think for proprietary software, I'd much rather have the code to it than not have the code to it. I think we're going to see a big difference in the amount of resources that people will put in to a shared source license regime versus one that is an open source license regime. So it's all a matter of experimentation. I'm all for experimenting with different licenses. I think history has shown that open source is a more efficient way to go in certain circumstances. At the same time, there are 10 million Microsoft developers out there who might have a different opinion. I think it's worth finding out.

    Craig:
    One thought on that. I agree with you that it is bi-directional, and in a way, when you look at all the different licensing regimes, you're correct to point out that there are many different ways to give back. In a sense, giving the code back is just one way. You know giving taxes to the government to give back is essentially another institutionalized way.

    Tim:
    So how much does Microsoft pay in taxes? [laughter]

    Craig:

    It's a lot. I don't know the exact number this year, but it's billions. One of the things that we've been fascinated by, and I guess you could say it's some benchmark of this, [is that] this week, as I kind of predicted in May, we actually came out with this Windows CE source license. I guess we actually posted it three, maybe four days ago. And the first three days, ten thousand people downloaded the entire source tree. And we had had a kit that we had offered to people who just wanted to use it for commercial purposes and we had sold about four hundred of those in the last year. I guess only time will tell whether people will decide that they really want to make an investment or whether they're just curious. But we were quite happy to see that when we offered it for non-commercial use really targeting the academic environment, primarily that ten thousand people in the first three days decided to take it and take a look at it. So we're enthused with that kind of reaction, and it is, you know, some way of giving back. You know, we give back financially, we give back in the standards world, as Michael said, with XML and other things. I mean, well before XML, we've been a big participant in the process of standardization, and so I think we will continue to seek ways to share and give back.

    Copyright 2000-2002 O'Reilly & Associates, Inc. All Rights Reserved.


    Exhibit J

    Microsoft patents a threat to open source

    By Peter Galli
    eWEEK
    August 28, 2001

    Members of the open-source community are becoming increasingly concerned by ongoing moves from Microsoft Corp. to acquire a range of software patents that the company can potentially use down the line to attack and try to restrict the development and distribution of open-source software.

    And much of that concern is being directed toward open-source desktop company Ximian Inc.'s Mono Project, an open-source initiative to replace part of Microsoft's .Net product line, including a way to run C# programs and the .Net Common Language Infrastructure on Linux.

    Leading the charge is Bruce Perens, Hewlett-Packard Co.'s open-source and Linux strategist who helped to craft the Debian Social Contract, which later became the Open Source Definition.

    Perens told eWEEK in an interview on Monday in San Francisco ahead of the LinuxWorld conference that an increasing number of people in the open-source community are very concerned about the Mono Project and by Microsoft's initiative to buy software patents and to patent as much of its own technology as it can.

    "If I were in Microsoft's position, I would be looking through all the patents I had been buying that are potentially being infringed by open-source software," Perens said. "They are going to hold onto these patents until they see what happens with the antitrust case against them. Once that is resolved, they will then use them against the open-source industry."

    But Doug Miller, the director of competitive strategy for Microsoft's Windows division, told eWEEK he was unaware of any intended move by Microsoft to acquire software patents. "Not to say it isn't happening, but I'm not aware of any such planned attack," Miller said.

    "With that being said, we strive to protect our intellectual property, and holding patents is one of the ways we do that. But nothing has changed, we're certainly no more aggressive now about filing patents or other copyright protections than we have been over the past couple of decades," he said.

    But Perens isn't buying this, saying that with regard to the Mono Project, Ximian needs to draw up an advance agreement with Microsoft that states the Redmond, Wash., company does not intend to assert its patents on this technology.

    "If we don't get that agreement, I'll be happy to see Ximian implement this stuff, but I'm not sure I'll touch it," Perens said. "I'm also not sure I want to let it touch the rest of GNOME [GNU Network Object Model Environment] very much because if GNOME becomes dependent on it, it would have a potential weakness there."

    Ximian is an active contributor to the GNOME Project, which has built a desktop environment for the user and a powerful application framework for the software developer. Ximian in fact this week launched two versions of the boxed Ximian Desktop, which includes the GNOME desktop interface.

    No Linux app is safe

    But Miguel de Icaza, the chief technical officer at Ximian, disagreed with Perens, saying that any application that runs on Linux could be infringing on some hidden and unknown patent owned by Microsoft.

    "Microsoft has not historically used its patents in an aggressive way," he said. "They've previously used it to defend themselves. While I suppose they might use it for attack purposes going forward, I don't think they'll go after Mono as we are only in the early stages and are sticking to developing technology from existing concepts. There's nothing new in .Net; it's just a combination of existing technologies."

    Nat Friedman, Ximian's vice president of product development, also stressed that Ximian is not co-operating with Microsoft on the Mono Project. "They are not assisting us in any way," he said. "We have talked to them twice - that's the extent of it.

    "We believe this technology and infrastructure is too important to be controlled and wholly owned by Microsoft. We believe there has to be a free implementation of it out there," he said.

    But while Perens acknowledged that Microsoft has largely not invoked its patent rights to date, he said, "Past performance is not predictive of future behavior. Microsoft's [senior vice president] Craig Mundie has previously said the company intends to enforce all its patents."

    An example of a patent held by Microsoft that could be detrimental to open-source initiatives going forward was clearly demonstrated in the password change protocol found in Samba, he said. Microsoft had modified the password change technology and then patented the new protocol of the password change.

    "This means you cannot make a compatible implementation without potentially infringing on a Microsoft patent," Perens said. "We went ahead and did it anyway, and Microsoft hasn't enforced that patent, but it doesn't mean they never will. This is a telling case as they've taken what was an open protocol and deliberately put in a patent to close it and then introduced the patented feature in all new systems."

    Samba, which develops open-source software that lets a Linux machine share files or manage print jobs like a Windows file server or print server, has included this patented technology. "In the climate of antitrust it would be nice to force them to overplay their hand, and Microsoft overplays their hand consistently," Perens said.

    But while Jeremy Allison, a lead developer for Samba, confirmed that Microsoft holds the patent for the password change protocol, he believed this "was done with no malicious intent at all. All big companies patent software for protection. I also think this is probably a defective patent anyway," he said.

    Microsoft's Mundie said he wasn't familiar with the Samba example, "but in any case where someone reverse-engineers technology -- and there's certainly lots of this in the Linux world -- there's always the risk they'll infringe on someone's patent. We highly value intellectual property and the laws created to protect this," he said.

    But Samba's Allison said the Mono Project is "a very bad idea -- in fact, it's a terrible idea. By doing this they are helping .Net become a standard. .Net will become important if a majority of the clients use it, but it will not be mandatory if only, say, 50 percent use it, as Web sites will then still have to do Java stuff," Allison said. "By implementing an open-source version of this, they are making it easier for Microsoft to get to that magic monopoly figure.

    "And when they've got that on the client, all the servers are in trouble. Look at the way they leveraged their client base to take over services like authentication, e-mail with Exchange, and DNS services by tying Active Directory to DNS. It's a continual case of taking their monopoly on a client system and tying servers to it," he said.

    Copyright 2002 CNET Networks, Inc. All rights reserved. ZDNet is a registered service mark of CNET Networks, Inc. ZDNet Logo is service mark of CNET Networks, Inc. Content originally published in Ziff Davis Media publications is the copyrighted property of Ziff Davis Media. Copyright 2001 Ziff Davis Media. All rights reserved. Titles of Ziff Davis Media publications are trademarks of Ziff Davis Publishing Holdings Inc.