“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.”