Source Code and Components

When you pick up a copy of Hardcore Visual Basic, Second Edition you probably think of it as a book with an accompanying CD that contains code samples. I suppose this traditional view is technically correct, but I think of Hardcore Visual Basic, Second Edition as some components with source code and an accompanying book. This is a significant difference from most computer books and a big change from the first edition. It means that you can use the book in several ways:

Before I summarize the components provided with Hardcore Visual Basic,
Second Edition
I want to introduce an idea that will be explained in detail in Chapter 5. When you purchase this book you buy the text of the book and all the source code on the companion CD. You can use that source code any way you see fit (except distribute it to others as your own work). You also buy the compiled programs and components on the companion CD. The components are not licensed and can be distributed to customers with your applications. You bought it. It’s yours.

What you didn’t buy is the right to modify those components. I own the components. You own only the right to use them. ActiveX components come with a contract designed to solve the multiversion compatibility problems common with system DLLs. If everyone who finds a bug in a component fixes the bug, recompiles the component, and ships a slightly different version with the bug fix, incompatible versions will proliferate until the earth explodes in a great ball of fire. Fortunately, most component developers don’t ship source code with their components. Those of us who do have to request your cooperation in maintaining the integrity of our components. Of course there aren’t any bugs in my components, but if you find one anyway, here are the rules.

Send me a bug report and eventually I’ll post an updated component. If you can’t wait for that, you can combine modules from my components into your own component. Just don’t give it the same name or GUIDs as mine. Although you can do this as an out, don’t do it lightly. If your customer purchases another product that uses one of my components, you might end up duplicating code that the customer already has.