GCC and LLVM - What's in a licence?

The effects of modularity and licence degradation continue to be at the heart of debates among the GCC Community, and centre around the age-old arguments about whether the GPL or BSD approach (some would say the free or open source approach) to licensing offer a better manifestation of free software.

The BSD licence has an idealistic and permissive relationship with the code. Third parties can take the code, repackage it, and pass it on in any form they wish without any obligation to feed code changes back to the community. The code can be recycled in any form, proprietary or free, as long as the original attribution is preserved. This position has benefits and drawbacks, depending on your point of view, but from the perspective of those that advocate BSD licensing, reflects a faith in the better side of human nature.

The GPL, and other copyleft licences, insist that if the code is released, the changed source is fed back to the community. Code developed under a BSD licence can be absorbed into a proprietary product, and there is no obligation to feed back changes. GPL code, and any changes or extensions to that code, must be released as free software.

The downside of this has been that the Linux kernel, unlike the BSDs, is released under the GPLv2 and has been less able to freely absorb features such as ZFS or DTrace, which are released under incompatible open source licences. Nonetheless, various ports and re-implementations of both ZFS and DTrace for GNU/Linux are under way. The upside of the GPL is that greater volumes of software have remained free for successive generations of free software developers.

Licensing is a divisive issue, but is the core difference between the philosophies of the BSD and GNU/Linux communities, and may be one of the reasons why GNU/Linux has been adopted as the universal operating system among the former Unix companies - commonality, interoperability and continuity of the software are useful side effects of copyleft and the GPL.