by Al Stevens
With the release of C++ 4.0, Borland tightened the wording and added some disturbing language to its license agreement. The new license restricted how many copies you could distribute of the programs that you compiled with C++ 4.0. It also restricted the kinds of programs that you could build. Customer reaction was quick and precise. They did not like these new restrictions and would not use a compiler that imposed such restrictions. Borland responded with an updated license that removed not only the new restrictions but some that existed in prior versions of the C++ compiler product as well.
The most significant restriction involved patents. According to the license, Borland "may have" existing and pending patents that cover material in the compiler. (In fact, Borland holds only one patent, which covers VROOMM overlay technology, although it has a few other patents pending.) The license permitted programmers to use the technology covered by the Borland patents "for the purpose of fulfilling your internal data processing needs." However, you could distribute no more than 10,000 copies of your program per year without specific permission from Borland's OEM licensing department, which Borland would issue willingly if you were not, in its words, a "big, litigious competitor."
The Borland C++ 3.1 license similarly prohibited users from distributing certain programs compiled by the product. Most users ignored or overlooked those restrictions, figuring that they would not be competing with Borland to sell compilers. The 4.0 license was more restrictive. In addition to programs that competed with Borland products, you were prohibited from developing operating systems. If you interpreted that condition literally, you could not use Borland C++ 4.0 to port UNIX or develop an improved DOS task-swapper or window manager. But the most serious implication was felt by embedded-system developers. Self-contained embedded applications are their own operating systems. Under the new terms, you could not use C++ 4.0 to develop an embedded application.
There was no provision in the license for waivers of the restrictions on the kinds of programs users may develop, which gave rise to speculation that Borland had a hidden agenda with respect to controlling its competition.
Programmers who purchased or upgraded to C++ 4.0 reacted forcefully. The Borland forums on CompuServe were rife with public condemnation of the terms. Many programmers intended to return the product unless they received a written reversal. Long-term loyal Borland users were looking at Visual C++, Symantec C++, and Watcom C++ in search of alternatives. In response, Borland posted a Q&A text file to deal with users' concerns and to clarify their position.
Borland's patent lawyer, John Smart, stated unequivocally that it was not Borland's intention to levy the severe restrictions on its users that a literal interpretation of the wording implied. The new terms were aimed squarely at two companies only and everyone else was automatically granted blanket permissions. He did not identify the two, but I suppose with some confidence that they are Microsoft and Lotus. I reviewed the wording of the new license with Smart and he agreed that it contains unintended ambiguity, calling it a bug that needs to be fixed, and expressed his surprise over the reactions from programmers to these new terms. He assured me that Borland is not litigious by nature and has never sued anyone. It is not, he said, in the business of collecting fees for licensing technology or pursuing patent infringements. I expressed my concern that the wording was there nonetheless, wording that gives Borland the means with which to change that position anytime it wants to. He agreed that I had a valid concern and stated Borland's intention to remove the ambiguities to everyone's satisfaction. Borland has since posted a new license statement on CompuServe and has replaced the objectionable one in shipping products. The only restriction with respect to the kinds of programs you may distribute is as follows:
Your programs may not be merely a set or subset of any of the libraries, code, redistributables or other files included in this package.
There is no mention of patents. My guess is that Borland was caught by surprise when users actually took the time to read a license agreement that everyone has come to trust. In the past, the "no-nonsense" agreement was just that, and most programmers ignored it. I suspect that many of them were unaware that previous versions of Borland C++ restricted the kinds of programs that they could develop. It took the ominous addition of the patent factor to call attention to the whole thing. The users reacted, and Borland did the only thing it could do--it publicly retracted the objectionable terms. It is remarkable, though, that no one at Borland could foresee this outcome. It is one of the worst public-relations disasters--and one of the most predictable--the software-development industry has seen in a long time.
(For an in-depth analysis of this topic, see Al Stevens's column in the April issue of Dr. Dobb's Journal.)