Eigentlich alle per Quellcode/Source verbreitete Programme unterstehen der GNU Public Licence. Die besagt extrem kurzgefaßt folgendes -
Das Objekt (Programm, Text, etc) darf frei verteilt werden, das Urherberrecht bleibt jedoch beim Autor; und keiner darf diese Rechte einschränken. Das heißt konkret: Jeder dürfte es verkaufen, aber keiner darf seinen Kunden irgendwas verbieten, insbesondere, es weiter zu verteilen (ob nun gegen Entgelt oder nicht).
Ferner "sollte" man für ein selbstgeschriebenes Programm, das unter der GPL steht, das Copyright an die Free Software Foundation (
http://www.fsf.org) abtreten. Der einzige Hintergrund hierbei ist, daß die FSF sich dann um Rechtsstreitigkeiten kümmern "darf", falls jemand dein Programm missbraucht (oder die Lizenz missachtet). Und die FSF hat für sowas eine achtstellige Kriegskasse und keine Samthandschuhe an.
"Freie" Software im Sinne der GPL ist nicht primär finanziell sondern eher "frei" im Sinne von "Freiheit" zu sehen. Entwicklungen, die auf Teilen von GNU-lizensierten Objekten basieren, müssen stets ebenfalls GNU-lizensiert werden. (Dies gilt nicht für Entwicklungen, die nur z.B. unter Linux erstellt wurden -- erst wenn Teile von Linux in das Produkt mit einfließen, dann greift die Klausel.) Falls jemand Linux ein Feature verpaßt und es kommerziell vermarketet, ist das sowieso grundsätzlich bloß ein Anstoß an die Hacker, es selbst besser zu machen. ;)
Ohne diese Lizenzpolitik würde Linux nie von Firmen oder Gemeinschaften vertrieben werden dürfen, die sich keine Erlaubnis von Linus Torvalds geholt haben, wie SuSE, DLD, Debian, und so weiter: Linus Torvalds "besitzt" nicht einmal 1% des gesamten Linux Sourcecodes, er ist "bloß" sozusagen Vater des Projektes. Er könnte also solch eine Erlaubnis nie aussprechen, ohne einige hunderttausend Entwickler rund um den Globus vorher gefragt zu haben.
Das ist der Grund, warum auch Microsoft niemals Linux "kaufen" könnte -- sie müssten mit jedem dieser hunderttausende Entwickler einen eigenen Vertrag über den Teil des Codes (oder Dokumentation oder Dienstprogramm oder ...) abschließen, den dieser Entwickler beigesteuert hat, und das ist nicht realistisch (und irgendwann kommt die Frage, ob sich das überhaupt lohnt.)
Es würde nie so viel freie Software entstehen, und der Entwicklungszyklus würde nie so schnell sein (wenn man einen Bug gefunden hat, und den mit den vorhandenen Kerneltools vernünftig einkreist, ihn dann an den zuständigen Entwickler schickt, hat man mit etwas Glück in 24 Stunden einen Fix dafür -- siehe auch /usr/src/linux/Documentation/Bughunting.txt).