Reverse Engineering Source Code of Software is Not Limited to Accessing and Testing
On October 24, 2017, the Court of Appeals for the Fourth Circuit decided SAS Institute, Inc. v. World Programming Ltd., 874 F.3d 370. In this case, the parties disputed whether defendant/appellant breached a software license by accessing the software’s source code. Plaintiff/appellee alleged that by accessing the source code, and then incorporating certain functionalities into its own competing software, defendant had breached the license’s anti-reverse engineering provision.
The Fourth Circuit held that the license’s definition of reverse engineering was unambiguous and favored the plaintiff’s broader interpretation, which expanded the purview of impermissible conduct to defendant’s decompiling and reverse engineering of plaintiff’s business analytics software. The Court also rejected defendant’s attempt to introduce extrinsic evidence purportedly showing the ambiguity of the anti-reverse engineering provision, on grounds that defendant’s evidence showed only that the software could be reverse engineered by defendant’s method, not that this type of reverse engineering was the exclusive method.
Accordingly, the Court affirmed the district court’s ruling of summary judgment in Plaintiff’s favor. The Court subsequently denied defendant’s motions for en banc rehearing and for a stay. Defendant’s writ of certiorari to the Supreme Court remains pending.
Facts and Procedural Background
Plaintiff SAS Institute, Inc. (Plaintiff) sells proprietary statistical analysis software collectively known as the “SAS System.” Users operate the SAS System by authoring instructions, also known as “SAS Programs”, in a computer programming language. Plaintiff offers a “Learning Edition” of its software, which provides full functionality of the SAS System. To install Learning Edition, the licensee must execute a license (the License), which includes a prohibition on “reverse engineering.” Specifically, the License provides that the licensee “may not reverse assemble, reverse engineer, or decompile the Software or otherwise attempt to recreate the Source Code . . . .”
Defendant World Programming Limited (Defendant) is a United Kingdom-based company that develops competing software (WPS). While modifying and enhancing WPS, Defendant acquired several copies of Learning Edition. Defendant then ran an SAS Program through both Plaintiff’s Learning Edition software and WPS, and then altered WPS’ code to make it and Learning Edition achieve parity in outputs. A number of former SAS customers replaced SAS System software with WPS.
In 2010, Plaintiff sued Defendant alleging that, inter alia, Defendant breached the License by purportedly reverse engineering the source code the License made accessible. The United States District for the Eastern District of North Carolina (hereinafter the “District Court”) dismissed the suit on forum non conveniens grounds, given pending parallel litigation in the U.K. In 2012, the Fourth Circuit reversed and remanded to the District Court.
The District Court Grants Plaintiff Summary Judgment on its Breach of License Claim
Two years later, the District Court granted summary judgment to Plaintiff on its License breach claim. The District Court held that under North Carolina contract law, the unambiguous term “reverse engineering” encompassed not just a prohibition against decompiling and recreating the source code of Learning Edition, but likewise prohibited analyzing the software to learn details of its design, construction and production as a means of producing a copy or “improved” version.
The Fourth Circuit Hears Differing Interpretations of “Reverse Engineering” as Contemplated in the License
On appeal, Defendant did not dispute its conduct, but argued that summary judgment was inappropriate because the term “reverse engineering” was ambiguous. Under North Carolina law, “non-technical terms” are to be given a “meaning consistent with the sense in which they are used in ordinary speech, unless the context clearly requires otherwise.” 874 F.3d at 380 (citation omitted). Courts “may resort to dictionaries to identify the ‘common and ordinary meaning of words and phrases.’” Id. (citation omitted).
Unsurprisingly, the parties offered differing definitions of “reverse engineering.” Defendant argued for a narrow interpretation that the term proscribed only “decompiling or otherwise accessing and recreating the source code of a program.” Plaintiff countered with a broader interpretation that “reverse engineering” encompassed Defendant’s attempt to “analyze a product to learn the details of its design, construction, or production in order to produce a copy or improved version.”
Legal Analysis and Conclusion
The Term “Reverse Engineer” in the License is Unambiguous and Broad
The Fourth Circuit sided with Plaintiff. It agreed that the meaning of the phrase “reverse engineering” is “not self-evident” when devoid of context. Consequently, North Carolina law permits the use of dictionary definitions and interpretation of the License as a whole to determine the ordinary meaning of “reverse engineering.” According to one dictionary definition, “reverse engineer” is to “examine (a product) in order to determine its construction, composition, or operation, typically with a view to manufacturing a similar product.” According to the appeals court, this definition, as well as a similar one from another dictionary, “is more consistent with the broad understanding offered by [Plaintiff] than the narrower interpretation offered by [Defendant].” The Fourth Circuit also observed that Defendant did not point to, nor had the Court discovered, any technical dictionaries revealing a more restrictive definition in the software context.
The Fourth Circuit also held that Plaintiff’s interpretation “better complies” with the requirement of North Carolina contract interpretation to give effect to every word of the License, if possible. The reverse engineering provision of the License was paired with prohibitions on “reverse assembl[ing] and “decompil[ing]”. Defendant’s interpretation of the reverse engineering prohibition would affect only those who reverse engineered the software by decompiling and reverse assembling it (as it was to alleged to have done). According to the Court, this interpretation would thus render the phrase “reverse engineer” entirely meaningless. Consequently, the broader and plain meaning interpretation of the “reverse engineering” – advanced by Plaintiff – avoids making the provision redundant and superfluous.
Extrinsic Evidence is Impermissible and Unavailing Given the Unambiguousness
Finally, the Fourth Circuit rejected Defendant’s reliance on extrinsic evidence purporting to show ambiguity, given its previous finding of unambiguousness. See also Reply Br. of Appellant, Flour Fed. Solutions v. PAE Applied Technologies, LLC, No. 17-1468, 2017 WL 5997802, at *8 (4th Cir. Oct. 27, 2017) (citing holding in SAS Institute that a party may not “sk[ip] over [the] traditional tools of contract interpretation, instead relying on extrinsic evidence it claims shows ambiguity”). In any event, the appeals court found Defendant’s supposed extrinsic evidence unavailing. Such evidence consisted of Defendant’s showing that Learning Edition can be reverse engineered by the way it described – decompiling and recreating the source code --, which “does nothing to suggest that no other type of reverse engineering is possible,” i.e., in a way consonant with Plaintiff’s broader interpretation of the License provision.
Since “it is clear that [Defendant] violated the unambiguous reverse engineering prohibition,” the Court affirmed summary judgment in Plaintiff’s favor.
The Appeals Court Denies Defendant’s En Banc Petition and Motion for Stay
On November 7, 2017, Defendant filed a petition for rehearing en banc, which the Court denied on November 21, 2017. On November 28, 2017, Defendant filed a motion for stay pending its writ of certiorari petition to the Supreme Court, which the Court denied on November 30, 2017. Plaintiff’s judgment took effect on December 8, 2017.