Postgres, WinNT and CygWin Licensing
BigJocker asks: "Im developing a program under Linux which connects to PostgreSQL. I want to port the software to WinNT, but i have read in the documentation that to make Postgres run on WinNT you have to use CygWin, which has a very particular license, is free if you distribute your code. If i want to sell my software (which is code-independant with PostgreSQL) for the WinNT OS, i have to compile Postgres with CygWin, and distribute the binaries along with the source code, so i keep the GPL license, but my software is distributed in binary form with a license from myself. Then, how do i distribute it? is there a way to do this? has anyone tried it? is it even legal? "
Many people access Postgres databases using Windows programs. Just use the ODBC connectors. I think you would find porting Postgres to win32 to be a rather large task. In any case, the connection between the client and the actual database engine is via a network socket. The only part of postgres that directly affects your program is the client access libraries. It is the licencing of those that you need to check up on. Is it your intention to run the application and database on the same box? If not, that the DB may as well stay on a linux box. Regards, Frank Ranner
>The CygWin library is GPL'ed, so if one links to
>it, the resulting code must be GPL'ed
Not according to the letter Stallman wrote to Linuxworld -- in it he states that you can't be forced to release all of the resulting code under the GPL -- only the part that is actually GPL'd.
And anyway, doesn't the GNU library license specifically allow that linking to GPLL'd libraries does not constitute a 'derived work'? As I recall that was a major impediment to commericial use of GCC, resulting in the library license.
From RMS' letter:
"Strictly speaking, nothing we free software developers do can legally require others to
release their code in any particular way. If someone has used some of my GPL-covered code in a program, and releases the program, I cannot make that person release the program under the GPL. I can, however, deny permission to release my code on any other basis. That is what the GPL does. "
worse yet, i'm a bit of a source-code communist, but here's my take on it. if your program just uses the database and isn't integrally tied to it, then it should be ok. technically speaking, you can make an argument that the client library is a seperate entity from the database server in general, so even though you have to give out the source to the database server (which already is free! free! free!, not GPL "free"), you shouldn't have to give the source to your main application. worst case, fork the source and use the new library to access the old database. just claim the new library is "compatible" with the old database, not an "integral part" of it because it came from a different source fork before it was tainted by the GPL. sounds like underhanded legal garbage bundled with absurd technicalities, but, hey, what legal garbage isn't? while i'm at it, always remember to ignore clueless AC's & check the mailing lists -- there was a thread on that a while back, but i didn't get involved, so i don't know what was said. heck, it could have been you that asked the question there & didn't get any answers, so you asked here.
This license is neither weird nor confusing. When one compiles using the cygwin compiler, one may either link to the CygWin unix-emulation library or to one of the microsoft libraries that exist on all win32 systems. The CygWin library is GPL'ed, so if one links to it, the resulting code must be GPL'ed. If this is not acceptable, one may either use the -mno-cygnus option to link to the MS libraries or pay Cygnus for a commercial license to the CygWin library.