C PROGRAMMING

Borland Nonsense: Ready, Aim, Shoot!

Al Stevens

The marksman: Borland. The target: Borland's foot. The weapon: Borland C++ 4.0's No-Nonsense License Statement.

Read the saga of how a company, known far and wide as the software developer's friend, dropped their guard, let their lawyers rewrite their no-nonsense license statement, and plugged themselves squarely in the pedal extremity.

Our story begins with the patent insanity. Unbeknownst to us, Borland holds a patent on their VROOMM overlay technology, and they have several other software patents pending. Those patents, when granted, will cover algorithms that are implemented within their libraries, DLLs, database engines, and other redistributable modules. In theory, when you build a program with their compiler, the executable code will contain algorithms covered by a Borland patent. Setting aside the question of the validity of software patents in general, the result is that you are distributing a program made with patented components. By law, you need a license from Borland to distribute those components.

Licenses can be obtained in many ways. You can pay a one-time fee for an unlimited license. You can pay a per-copy royalty. The holder can give you a royalty-free license. You can exchange patent licenses. Or you can be denied the license. If the patent holder does not want any competition, or does not want you in business for some reason, they can refuse to grant you a license. You would need to find another way to write your program.

Traditionally, Borland and other compiler vendors include this grant in the license conditions with which you tacitly agree when you break the seal and use the product.

The Borland Dilemma

Prior to version 4.0, Borland's C++ no-nonsense license statement made no mention of patents. It granted to each registered user a license to distribute compiled programs without additional fees being charged. But someone at Borland saw something wrong with that. They reasoned that a major competitor could use Borland technology to build competing tools and applications.

As the self-professed dominant vendor of tools and applications, Borland found itself facing an internal conflict of agendas. The languages division wants to provide software developers with the best software development technology. The applications folks want to maintain dominance in a marketplace where competitors can use those superior Borland tools.

As one Borland spokesman put it, Microsoft could buy one copy of Turbo C++ for $99.00 and receive unlimited use of the patented VROOMM technology in applications that would then compete with Borland applications. Borland wanted to keep the competition from using its patented technology against it and continue at the same time to be responsive to the needs of its language customers. It was the old cliché about having your cake and eating it, too, which is what Borland tried to do. But what it came up with was met by an overwhelming firestorm of user reaction.

What lit the fire? Well, in times past, you could distribute as many copies of programs as you wanted. Under the terms of the new no-nonsense license statement, you could distribute only up to 10,000 copies per year of your Borland-compiled application. To distribute more copies than that, you would have to get Borland's permission. The reasoning behind this peculiar condition, as spokespeople explained later, is that only large competitors are likely to be selling more than 10,000 copies per year.

D-Flat Gets a License

I wanted to learn more, so I set out to get a royalty-free license to distribute more than 10,000 copies of D-Flat. I called Borland and asked for their OEM licensing department, which is what the no-nonsense license statement says I should do. The operator connected me with Karen Rogers. When I asked if this was the OEM no-nonsense licensing department, she hesitated, laughed, and asked what my call was about. Karen is in Corporate Affairs. I told her what I needed, and she transferred me to John Smart, Borland's patent lawyer. I told him what I wanted, and he said no problem. When he got my name, company, and the name of D-Flat, he recognized it, knew I was from the press, and we had a congenial conversation about the situation.

Getting the license was easy. I have it now and may distribute D-Flat without restriction. But the disturbing part is to get this license, users, potential Borland competitors or not, had to tell Borland about the product. Open the books, so to speak.

The Shift Hits the Kahn

Programmers around the world read the 10,000-copy restriction and went ballistic. There are many venues for software distribution where the developer cannot account for numbers. One is shareware. Another is the distribution of royalty-free redistributables that you develop for other programmers to use to develop programs which they distribute. Such as D-Flat. Get's hairy, doesn't it? But for whatever reason, no one gives up freedoms without a fight, particularly when they are taken away in the small print. Programmers felt betrayed and said so, loudly and with some emotion. The Borland forums on CompuServe burned with their complaints. Many vowed to return the package for a refund. Most demanded an explanation.

Borland Responded

Borland reacted to the outcry by posting a Q&A dialog on CompuServe that was supposed to clear up the matter. They announced their intention to revise the no-nonsense license statement to remove some of the restrictions, but the wording of the Q&A was vaguer than the original no-nonsense license statement, and it was not clear how they would deal with the problem short of removing all of the restrictions.

The 10,000-copy restriction was silly at best. Borland's VROOMM patent is the only one it has, although others are pending. One wonders who Borland was trying to contain. The Q&A document stated publicly that the restrictions are directed only at certain large, litigious competitors and that others had nothing to worry about. It said, "If you are not a litigious competitor, then the restriction doesn't apply to you." How does Borland know who is going to sue them? It seems to be saying, "If you sue me, I'm taking my license back."

Smart narrowed the number of litigious competitors to two and would not name them but said that one of them was suing Borland now. That would be Lotus.

Listen up, Philippe. Overlays ain't that hard to figure out. Lotus can hire some fast and loose programmers and do their own overlay manager quicker than you can snap-roll your Waco. It isn't worth all this bad public relations just to force them to do that.

Speculation follows. Could be someone at Borland heard that Lotus wrote everything in Turbo C and is heavily committed to some compiler implementation-dependent stuff. That would be the coup de grace. Rig your no-nonsense license statement so that a big competitor, one who just happens to be suing your eyes out, cannot upgrade to the next version of their principal development tool. This is the only scenario that I can come up with that even remotely explains Borland's changes in attitude about patents. Nonetheless, I wonder about the ethics and legality of a license that is publicly waived for everyone except certain competitors. Borland told us that there are only two targets, and it gave us enough information to guess who the large, litigious competitors are. End of speculation.

Other Restrictions: What You Can Compile

The 10,000-copy limit and the patent threat are only the first half of the story. Most programmers did not notice that Borland C++ 3.1's no-nonsense license statement contains language that restricts what kind of programs you can compile and distribute. You are restricted from developing:

_a compiler, development tool, environment product or library which includes any of the libraries, DLLs or source code included in this package_[or]_a product that is generally competitive with or a substitute for any Borland Language product.

How many of you 3.1 users knew that? You didn't read your no-nonsense license statement, did you? See what it says? You can't develop a programmer's editor because it would compete with Brief. You can't develop a compiler, an IDE, a profiler, a user-interface class library (such as D-Flat++), a resource compiler, and so on.

The patent stuff, which caught everyone's eye, drew attention to these other restrictions. Most of the programmers spoke out as if the noncompete conditions were new to version 4.0. They were not. Nonetheless, users were mad about the noncompete stuff too.

The Paradox Paradox

What was the intent? According to Smart, Borland did not want to restrict you in any of the ways that I just described, even though the language in the new no-nonsense license statement said otherwise. It merely wanted to prevent anyone from buying the Paradox engine, putting a user-interface shell around it, and selling a product that competes with Paradox. There's the real paradox, folks. The languages department wants to provide developers with a comprehensive database engine, but the applications department does not want those developers to use it in ways that the company does not approve of.

More Nonsense

Borland's shot in the foot was a double-barreled blast. The second barrel on their no-nonsense license statement contained the condition that the program you develop "_may not be an operating system."

Wow. I didn't know that Borland was planning to release an operating system. My earlier speculation would not apply to this one. The other large litigious competitor doesn't use Borland's compiler to compile their operating system. That can't be why Borland put this restriction in. My usually reliable sources weren't telling, either, other than to say that one of the lawyers added the language. Makes you wonder. Doesn't anybody outside of the legal department read this stuff before it goes in the big blue and white box?

This operating-system restriction had wide-ranging implications. For one thing, it ruled out UNIX ports. But worse, it hit embedded-system developers squarely between the eyes. An embedded system does not usually use MS-DOS, DR-DOS, or any other general-purpose operating system. The embedded program will be self-contained, which means that it includes an operating system. You couldn't write one of them according to the new terms.

Of course, another outcry was heard 'round the world. Borland reacted quickly by saying in its CompuServe Q&A, "The restriction against creation of an OS is deemed unnecessary and will be dropped."

Why was the restriction necessary one day and not the next? One theory involves Borland's agreement with Microsoft. Borland has a license to distribute certain Windows development materials that are covered by Microsoft's copyright of the Windows API. Without those materials, Borland's users would need to purchase the SDK to develop Windows programs. The theory speculates that Microsoft granted that license on the condition that Borland would somehow prohibit its users from developing operating systems that compete with Microsoft. I do not believe this theory. Microsoft does not have similar restrictions on your use of its own software development products. I believe that Microsoft grants those licenses because its best interests are served when you develop Windows programs regardless of the compiler that you use. No, the story that Smart told me makes more sense. One lawyer, who doesn't know what an operating system is, put the language in, and no one else was smart enough to cross it out.

So, once again, why did the urgency of this operating-system condition disappear so fast? Because it isn't important, and you, their customers, howled, that's why.

The Healing of the Wound

Borland lost a large measure of credibility during this episode. It stuck a toe in to test the patent waters and got it shot off. It tried for some reason to limit the development of operating systems and got the door slammed shut in its face.

To regain some lost esteem, Borland went into damage-control crisis mode. The spin doctors rewrote the no-nonsense license statement to remove the operating system and 10,000-copy restrictions and to water down the non-compete clause to reflect their true, original, noble intentions, which are more palatable. The only restriction 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.

That restriction seems reasonable and reflects Borland's responsiveness to the concerns of its customers. More importantly, it demonstrates the power of the user's voice when a vendor tries to impose unreasonable restrictions on its customers. We, the programmers, won this one by the sheer force of our numbers. I hope that all vendors are watching and that they will have the good sense to let some users look at what the lawyers write before they commit to it.

We hope that Borland learned that lesson. In its zeal to counter their enemies, it forgot who its friends were. It showed us a different face, one that we had not seen before, a mean-spirited one that holds and can enforce software patents if it wants to. We want to believe that the old face has returned and that it is the true one.

Borland is not a litigious company. It has never sued anyone. Borland thought that reputation would hold it in good stead in the face of public reaction to their actions. But when I asked about the future, when the empty suits change occupants, when I asked about how we could be sure that some future regime would continue to overlook those fascist and burdensome no-nonsense license restrictions, Borland could not answer. In the face of overwhelming public disapproval of their actions and the hidden agenda that those actions seemed to reveal, Borland did what it had to do. It took it all back. The version 4.0 no-nonsense license statement is, if anything, more liberal and more absent of nonsense than that of version 3.1.

What We Learned

This episode teaches us something else, too. Read the licensing conditions on whatever software-development tool you use to develop a program that you plan to distribute. Virtually all C++ compiler products have some restrictions. They require that you put a valid copyright notice on your software and do not remove any copyright notices that they include on the redistributable components. You indemnify the vendor from any liability if your programs do not work. You may redistribute the redistributables only as a part of an operating program and not as redistributables themselves. You must be a registered user of their product to distribute programs compiled with their product.

Only Borland and Microsoft have restrictions about what the programs themselves may do. Borland does not want you to distribute sets and subsets of its redistributables, whatever that means. Microsoft does not want you distributing programs that use its libraries, MFC, and VBX redistributables in programs that programmers use to build programs that use VBXs. Interestingly, although Symantec C++ Professional licenses the MFC libraries from Microsoft for just such a purpose, it does not have a similar license restriction about what you can do with them. As you can see, it gets complicated.

Patent-Leather Agenda

Several years ago, every issue of every automobile magazine was sure to have at least one editorial where the author whined about the national 55-mph speed limit. Until the law was repealed those magazines acted as the self-appointed guardians of our right to drive fast. Similarly, every gun magazine today can be depended upon to wedge their editorial agenda against enemies of the people such as Janet Reno and James Brady who would abridge our Second Amendment right to own and bear semi-automatic assault weapons and handguns (in a well-formed militia, of course).

We in the programming-trade press are coming to sound very much like those other self-interest watchdog publications. We are beating this issue of software patents to death. What is the point? Well, in the first place, the issue is a technical one that is being administered with nontechnical criteria, and we, the trade press, are the only public forum that has or will tell the truth. The arguments for software patents are based in power, money, and politics. When you apply nontechnical, interim solutions to a technical problem, you almost always arrive at a final solution that does not work, if only because the technical parts of the problem are unsolved. Unfortunately, we are singing to the choir. You, our readers, already understand.

Every programmer understands that "software patent" is an oxymoron. The lawyers who prepare and file the patent documents do not understand. Neither do the Patent Office bureaucrats who grant the patents. Some of the people who hold the patents understand, but they are motivated by things other than technical purity, such as the promise of gain.

One of our smartest programmers is Bill Gates. His plans for Microsoft include 100 new software patents per year. He knows better, knows that the system does not know better, and plans to use that advantage to expand his power, influence, and wealth. Why am I surprised? Isn't this supposed to be the greed-is-good generation?

Software patents are everywhere. Most of the software-tool vendors who bring their demos to the DDJ conference room proudly announce that they have filed patents on parts of their products. I don't think they read our editorials. I recently attended a briefing of a new version of a well-known database management system. The vendor has a patent pending on his particular use of the B-tree algorithm in the indexes that support interfile relationships. I had to laugh, because years ago I used an identical technique in government software systems. It was obvious then. It is obvious now. The patent will probably be granted.

And yet, we keep thumping the drum. If we educate you about the dangers of software patents and their potential to compromise your livelihood, then we have done some good. At least you will be prepared. If enough of us kick up enough of a fuss, maybe our legislators will get the hint and do something positive about the problem. Maybe we can get the attention of those who need to understand their business and ours a little better. The effort might be in vain, however. Even if we educate the lawyers, they will pretend to continue to operate in a cyberfog. Technical ignorance supports their agenda, which is collecting fees for knowing the law. Educating Patent Office bureaucrats is probably a waste of time, too. As soon as one of them understood software well enough to do the job, they would quit and find work as a programmer. Who wouldn't? And finally, trying to educate wannabe wealthy patent holders and fee collectors is guaranteed to be folly. They have already learned all that they need to know.

Goodbye, Sonny

I want to tell you about an unsung hero in our industry, someone who will never be the subject of a book, who will never receive a prestigious award, and about whom you will never hear, except today in this column.

Almost six years ago, in my first "C Programming" column, I told how my brother Fred got me started with C. He was a microcomputer pioneer with an engineering degree and a love of programming. He had every issue of Dr. Dobb's and was among the first of the home-brew computer makers. He was not one of the famous hackers, but he knew more about it than most. He kept a low profile and kept in touch with everything that was happening. You did not know about him, but he knew about all of you.

It was 1971. I was pounding out Cobol accounting programs when Fred dropped by. He brought a small aluminum hobby box with a front panel sporting four LEDs, four toggle switches, and some push buttons. It was a home-built computer, about the size of a cigar box, running an Intel 4004 microprocessor. I had never seen such a thing. We spent all afternoon loading programs and data into the small memory with switches and buttons and reading the output as binary values in the lights. The 4004 was meant to be used in calculators, but Fred was using it for some kind of black-box application in what we would call today an "embedded system." We got excited about that little box with four data lines and 256 bytes of memory. Someday, we thought, everyone would want one.

Fred grew with and ahead of the technology, always among the first to try new things. He built one of the first Altairs. It's still in his basement lab, still running. He recruited me to write programs for his projects and showed me how to squeeze code into tight spaces, citing Stevens's first law of programming, which said that any program can be reduced by one byte, and Stevens's second law, which said that sometimes Stevens's first law had to be applied recursively. Together we built many diverse embedded systems: a telephone call accounting system, a point-of-sale monitoring device, a power-company remote-station monitoring system, a laboratory etching device. We integrated microprocessors with PBXs, VCRs, TV cameras, cash registers, voice synthesizers, pagers, stepper motors, plating chambers, motion detectors. Fred designed and built the hardware, and I wrote the programs. We worked side by side, days and nights, and every project was a learning experience. Those old 8080 machines served as prototypes for the products and primitive development systems for the firmware. We typed the source code into memory with a TeleType terminal, programmed EPROMS from paper tape, and erased them under UV light. We wire-wrapped and soldered and patched and programmed and hand-assembled our way through dozens of one-of-a-kind machines, each one a wonder to behold and every one finished and performing its mission, some of them still in service today.

Twelve years ago, Fred's diabetes took him out of the action. With the passage of time he lost most of his vision, his kidneys, his legs, and a hand to the ravages of the disease. Not able to see well enough to design and debug hardware again, he returned to software, learning UNIX, Forth, C, and assembly language. His reading and typing were slowed sometimes to a crawl, but he never gave up, always maintained a hearty sense of humor, and never lost his enthusiasm for the work. Even when he could barely lift himself out of bed, he talked about ideas for the next project and held onto the belief that he'd lick the odds and see it through one more time. With his right hand gone and unable to see, he was still at it, figuring out how to integrate a joystick keyboard-emulator program with a voice synthesizer so that he could get back to programming as soon as he got well.

On his fifty-sixth birthday, eight days before Christmas, his frail body gave way to a last heart attack, and Fred died, and his monumental spirit, intelligence, and courage were gone.

This is a lonely time for me. Everything that I know and all that I have done that is good can be traced in one way or another to things that my big brother Fred gave me. By his teaching, his example, and his encouragement, he was my mentor, my friend, and my biggest fan. But the loss is not mine alone. He left a family that he loved unconditionally and many loyal and devoted friends. We will all miss him.


Copyright © 1994, Dr. Dobb's Journal