Software patents have received a great deal of attention in the academicliterature. Unfortunately, most of that attention has been devoted to theproblem of whether software is or should be patentable subject matter. Withroughly 40,000 software patents already issued, and the Federal Circuitendorsing patentability without qualification, those questions are for thehistory books. The more pressing questions now concern the scope to beaccorded software patents. In this paper, we examine the implications ofsome traditional patent law doctrines for innovation in the softwareindustry. We argue that patent law needs some refinement if it is topromote rather than impede the growth of this new market, which ischaracterized by rapid sequential innovation, reuse and re-combination ofcomponents, and strong network effects that privilege interoperablecomponents and products. In particular, we argue for two sorts of new rulesin software patent cases.First, we advocate a limited right to reverse engineer patented computerprograms in order to gain access to and study those programs and toduplicate their unprotected elements. Such a right is firmly established incopyright law, and seems unexceptional as a policy matter even in patentlaw. But because patent law contains no fair use or reverse engineeringexemption, patentees could use the grant of rights on a single component ofa complex program to prevent any "making" or "using" of the program as awhole, including those temporary uses needed in reverse engineering. Whilepatent law does contain doctrines of "experimental use" and "exhaustion,"it is not at all clear that those doctrines will protect legitimate reverseengineering efforts. We suggest that if these doctrines cannot be readbroadly enough to establish such a right, Congress should create a limitedright to reverse engineer software containing patented components forresearch purposes.Second, we argue that in light of the special nature of innovation withinthe software industry, courts should apply the doctrine of equivalentsnarrowly in infringement cases. The doctrine of equivalents allows afinding of infringement even when the accused product does not literallysatisfy each element of the patent, if there is substantial equivalence asto each element. The test of equivalence is the known interchangeability ofclaimed and accused elements at the time of (alleged) infringement. Anumber of factors unique to software and the software industry - a cultureof reuse and incremental improvement, a lack of reliance on systems offormal documentation used in other technical fields, the short effectivelife of software innovations, and the inherent plasticity of code -severely complicate post hoc assessments of the "known interchangeability"of software elements. A standard for equivalence of code elements thatignores these factors risks stifling legitimate, successful efforts todesign around existing software patents. To avoid this danger, courtsshould construe software claims narrowly, and should refuse a finding ofequivalence if the accused element is "interchangeable" with prior art thatshould have narrowed the original patent, or if the accused improvement istoo many generations removed from the original invention.