Chapter 4. Due Diligence, License Proliferation, and Compatibility

Today's software development takes place overwhelmingly in a heterogeneous landscape. Most software code bases today include all kinds of software—open source software, free software, and proprietary software—or any other categories of license one cares to name.

What is the Problem with Combining Software?

Putting different kinds of software together is like holding a dinner party for my relatives. Maybe, if I go to a lot of work, I can serve food everyone will eat: My middle-age uncle on his low-carb diet wants meat and fish; my sister the vegan wants only locally grown vegetables; and my teenage nephew will eat anything as long as it comes from McDonald's. But what if all the dinner guests have not only their own preferences, but a vehement, polemical disgust for the foods the others eat? It is hard to bring everyone to the same table. That is what the software world can be like today.

Like many problems in the world, the difficulty in the software world comes not from the participants being different but from participants being unable to coexist with the others. Software licenses, like people who are certain that they are right, place restrictions on the others with whom they coexist. With enough restrictions, and when those restrictions are mutually exclusive, coexistence is difficult or impossible.

Avoiding this incompatibility in the software world can be a difficult job. Developers using software in a code base ...

Get The Open Source Alternative: Understanding Risks and Leveraging Opportunities now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.