The compiler itself is distribted under the GPL. Now, this means nothing for my resulting executables. As far as the GPL is concerned, the compiler is simply taking my code and making it something the machine can understand. So things that I make with a GPL'ed compiler don't have to be GPL'ed. The problem is the runtime library that adds functionality to the executable.
The libraries are under the LGPL. The first L in LGPL stands for "Lesser" because it decreases some protections for the end user. It is intended for libraries (the license specifically states this). The key to everything is the idea of "derivative work", as copyright law puts it. You take something and add your own spin to it, rewriting it or whatever, it is now a derivative work created by you and whoever's work you started with. The LGPL allows you to use the library without being forced to license your stuff under the LGPL or GPL. But there's a catch. In order to use the library and keep your source closed and use any license you want, you can only USE the library. This means what is called dynamic linking -- the library is on the host computer. When your executable starts, it searches the computer for the library and uses that to run. As far as the LGPL is concerned, you are using the library, not creating a derivative work, and you can conceivably just replace the library with any other of your choice (whether or not it will work is YOUR problem, not the executable's), so you can keep your code closed without violation.
(That's the legal definition. From an engineering standpoint, you are still creating a derivative work, you're just doing it at runtime. This is why engineers at least question the LGPL in particular and the GPL in general -- technically, you can't run anything but GPL'ed code and stay legal. But I digress.)
Incorporating a library into an executable is called static linking. This is something people like me prefer because it means everything the program needs is right there, the end user doesn't have to worry whether or not they have it on their system. Now, people using the LGPL are free to include The Exception. The Exception states that you can link statically and so on, as long as you aren't misrepresenting the library as your own work and are willing to provide the source code for the library, you can license your stuff any way you like and keep it closed. But it has to have The Exception. Otherwise, static linking falls under Section 6 of the LGPL, which states that you are creating a derivative work (since the library doesn't normally exist as your executable) and since you can't just replace the library in an executable, you must GPL/LGPL the work.
All the libraries for freeBASIC use the LGPL With Exception. Except one.
fbxlib. The graphics library. The thing that lets you, you know, resize the screen and stuff.
So, anything has to be LGPL'ed or GPL'ed, right? No. And here's where it gets confusing. The author of fbxlib is a guy with the handle of lillo. He first cooked it up in 2005 at the latest. That is the earliest the forum mentions any of the issues. Since then, people have been in contact with him about adding The Exception. (He hasn't been in hiding, quite a few people chat with him regularly.) He has stated to the freeBASIC leads that he intended for fbxlib to be used commercially, it's just that he has never explicitly changed the license. Why? It's been over four years. All he has to do is write an official document transfering the rights, and he's done. But he hasn't, despite everyone telling him about this and asking him to for four years.
People are using freeBASIC to create works that are proprietary, public domain, all kinds of things that violate the licensing requirements of the LGPL. The LGPL states that enforcement is not the end user's responsibility, it is the responsibility of whoever created the code. This also means the FSF and the SFLC won't get involved unless the person creating the code bitches.
So, here's what we might be legally looking at (IAANAL: I Am Absolutely Not A Lawyer) --
1) The GPL/LPGL allow what is called "dual licensing". You can release your code under as many different licenses as you want. There are plenty of libraries that license their stuff under LGPL and Mozilla Public License, or GPL and BSD, or whatever.
2) Things are automatically copyrighted once they are created and put into a physical form (i.e. published). Something can only be public domain if the creator explicitly states it is supposed to be public domain (i.e. the PDCurses library).
3) What lillo is doing is implying a dual license. There's the LGPL'ed version that he included with freeBASIC, but his lack of enforcement implies instead of state explicitly that, at the very least, The Exception is involved. He knows people are using his work to create proprietary or public domain derivatives, and all he's said was that he meant for it to be used that way, he hasn't told anyone to stop.
4) This has been going on for four years. Legally, he is refusing to mitigate the damages. If someone is violating your rights, you can just let them do whatever (like with fanfic, where the original author still owns the characters and implicitly allows people to create derivative works). Now, if the creator decides, for whatever reason, that you can't do whatever, they can stop you no problem. But as far as damages go, it becomes a problem. If you have done nothing to stop people from doing this thing you say they can't do (like SCO refusing to reveal what code was stolen), the courts view you as not being harmed that much, and they will lessen any remedy you seek. There are enough people using fbxlib for whatever they want that, as long as lillo doesn't say "Stop it!", it is implied that they can continue doing what they are, and if he suddenly demands some sort of restitution (i.e. demanding the projects be LGPL'ed), people have an excellent chance of not having to do it, since all action and evidence to date says they were not violating his wishes in the least, he should have said something earlier.
So, the practical side is a lot different from what the license states. Certainly enough that, if anything ever comes down, people can refuse to Open Source their stuff. But just because people CAN get away with it doesn't mean they SHOULD. I know what the license says, what it means, and there is still that monolithic barrier in front of me, even though just about everybody is saying, "Dude, just go around it. Nothing's going to happen." I would still be living with the knowledge that I am violating the LGPL. Or maybe I'm not, due to the dual licensing and implied Exception. But there's still the License itself....
I would be fine using it, but only if it doesn't make me a hypocrite. I'm trying to figure out what to do next.