Richard Stallman has some good ideas on what should be done:
So I propose three remedies that would help enable free software operating systems such as GNU/Linux compete technically while respecting users' freedom. These three remedies directly address the three biggest obstacles to development of free operating systems, and to giving them the capability of running programs written for Windows. They also directly address the methods Microsoft has said (in the "Halloween documents") it will use to obstruct free software. It would be most effective to use all three of these remedies together.
1. Require Microsoft to publish complete documentation of all interfaces between software components, all communications protocols, and all file formats. This would block one of Microsoft's favorite tactics: secret and incompatible interfaces.
To make this requirement really stick, Microsoft should not be allowed to use a nondisclosure agreement with some other organization to excuse implementing a secret interface. The rule must be: if they cannot publish the interface, they cannot release an implementation of it.
It would, however, be acceptable to permit Microsoft to begin implementation of an interface before the publication of the interface specifications, provided that they release the specifications simultaneously with the implementation.
Enforcement of this requirement would not be difficult. If other software developers complain that the published documentation fails to describe some aspect of the interface, or how to do a certain job, the court would direct Microsoft to answer questions about it. Any questions about interfaces (as distinguished from implementation techniques) would have to be answered.
Similar terms were included in an agreement between IBM and the European Community in 1984, settling another antitrust dispute. See
http://www.cptech.org/at/ibm/ibm1984ec.html. 2. Require Microsoft to use its patents for defense only, in the field of software. (If they happen to own patents that apply to other fields, those other fields could be included in this requirement, or they could be exempt.) This would block the other tactic Microsoft mentioned in the Halloween documents: using patents to block development of free software.
We should give Microsoft the option of using either self-defense or mutual defense. Self defense means offering to cross-license all patents at no charge with anyone who wishes to do so. Mutual defense means licensing all patents to a pool which anyone can join--even people who have no patents of their own. The pool would license all members' patents to all members.
It is crucial to address the issue of patents, because it does no good to have Microsoft publish an interface, if they have managed to work some patented wrinkle into it (or into the functionality it gives access to), such that the rest of us are not allowed to implement it.
3. Require Microsoft not to certify any hardware as working with Microsoft software, unless the hardware's complete specifications have been published, so that any programmer can implement software to support the same hardware.
Secret hardware specifications are not in general Microsoft's doing, but they are a significant obstacle for the development of the free operating systems that can provide competition for Windows. To remove this obstacle would be a great help. If a settlement is negotiated with Microsoft, including this sort of provision in it is not impossible--it would be a matter of negotiation.