WebTechniques: Can CORBA Sidestep Open-Source Licensing?Apr 01, 2001, 16:00 (15 Talkback[s])
(Other stories by Michael Trachtman)
"The open-source movement has sparked an explosion of new software and code, all freely available to developers. Companies that were once locked into costly licenses can now access the source code for everything from compilers, editors, and scripting interpreters to packages like MySQL and Linux. This is great for businesses that would rather extend existing code than reinvent the wheel-but there's a catch. If you rerelease the original code, most open-source licenses (with the notable exception of BSD-style licenses) require that you also give away the code to any improvements you've made. And a number of open-source licenses state that you may not use the code in commercial software you plan to license restrictively on a per-copy basis."
"Essentially, this means that if you improve open-source software, those improvements must also be open. In many cases, developers in this scenario are stuck. How do you use open source code in your product without being required to give away your intellectual property? Many argue that this question is pointless because such a desire goes against the entire spirit, intention, and license of the open-source movement. However, it's possible to extend the functionality of an open-source program without actually changing the source code. What's more, you get to keep your code to yourself. (Of course, if you let your customers use software based on open-source code, you should still determine the legality of the licenses you give them.)"
"The Common Object Request Broker Architecture (CORBA) is an industry standard that lets programs communicate with each other whether they're on different machines, running under different operating systems, or even written in different languages. For example, a Java program running on a Linux system can use CORBA to communicate with a C++ program that's running on a Windows PC. The Java program could also access the C++ program's remote objects as though they were running locally. To facilitate such communication, simply write a few lines of standard startup code and create an IDL (Interface Definition Language) file that specifies the classes and methods you want to access."