JoseRoca / WinFBX

Windows Framework for FreeBASIC
46 stars 16 forks source link

License is a legal landmine #8

Open ssokolow opened 4 years ago

ssokolow commented 4 years ago

"Freeware" is not a precise legal term.

"This means that you can use it for your own purposes, even in commercial applications, without paying a fee, but not to make derivative works from, sell or redistribute without permission."

This passage is going to scare anyone off who has a hint of legal understanding, because it's the legal equivalent of saying something like "You can pick this up as long as you don't use your muscles" and expensive lawyers spend a lot of time in court arguing over questions like these:

  1. Where does "use it for your own purposes" end and "make derivative works from, sell, or redistribute" begin when legal precedent says that any program made from a library is a "derivative work"? (That's what makes the GNU GPL work.)
  2. Does the law see the prohibition on redistribution as "You may only redistribute this when combined into a larger program" or "You may only use this for private projects that never leave your own computer"?
  3. What did you mean by "derivative work"? That's a legal term with a broad definition. (Even reading someone else's source code risks making anything you write based on the knowledge you gained into a "derivative work" if their lawyers can convince the court that what you wrote looks too similar. The only safe way to "use it for your own purposes" without "making derivative works" is to read it out of curiosity and then never write any code.)
  4. etc. etc. etc.

You've essentially written a license with several independent "You can use this when x < 5 AND x > 7 conditions and are leaving it up to the courts to guess at the interpretation of an "Obviously, I didn't mean what I wrote in its most literal form."

Also, in this day and age people who understand what they're agreeing to don't really like being shackled to "If I take down my GitHub repo, I de facto revoke people's permission to use their hard-won expertise with my APIs", which is what a prohibition on redistribution does.

(Heck, now that I'm doing DOS retro-programming, archived ISOs of Freeware/PD CD-ROM compilations and Wayback Machine backups of now-dead 90s programming sites are my main sources for libraries and documentation... both of which your terms would forbid to future programmers.)

That said, if you'd like, I can try to find a professionally written license which would satisfy your intent.

...but given how much people care about licenses being proper open-source these days, and how the definitions people agree upon [1] [2] [3] all include a "no prohibition on fields of endeavour" clause, the usual way to get the effect you seem to want is something like the GNU LGPL or the MPL.

(They require people to give you credit in their programs and allow people to use your code in proprietary software only on the condition that the person using your code takes responsibility for ensuring that anyone who receives the binaries can receive the copy of your source that they were built from, including any patches added to it.)

People who would want to charge for your code are generally scared away by LGPL-style licensing and people who aren't scared away are usually bad actors who will already ignore your license.

networkproblemsolver commented 4 years ago

Many people use "freeware" thinking that means "free"... but I think the term is "public domain" that allows for any use without any credit... right?

I noticed...

WinFBX
    is licensed as "freeware" not public domain

The WinFBE editor
    is licensed under the GNU GPLv3 or later

FreeBASIC
    is a free/open source (GPL) BASIC compiler
    which makes use of the GNU binutils programming tools

GNU binutils
    is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License
ssokolow commented 4 years ago

Many people use "freeware" thinking that means "free"

  1. "Freeware" isn't a legal term with a clearly defined meaning.
  2. Redistributing without having to ask permission is central to the common-knowledge understanding of what "freeware" means.
  3. Making derivative works without having to ask permission is central to the common-knowledge understanding of what "freeware" means for source code.

Back in the 80s and 90s when shareware and freeware were at their peak, "freeware" usually meant "You can do anything you want, but you have to give me credit" (so, basically, like the Creative Commons Attribution license) but sometimes with an additional requirement that people redistributing it on physical media couldn't charge more than the cost of materials.

Saying "but not to make derivative works from, sell or redistribute without permission" destroys what people understand "freeware" to mean so thoroughly that those license terms are "This is freeware, except it's not freeware" or "This is water, but it's not wet".

but I think the term is "public domain" that allows for any use without any credit... right?

"Public domain" means that you waive your rights so, yes. Anyone can do anything they want if you dedicate something to the public domain.

(Though some jurisdictions don't recognize your right to put things into the public domain "early". If you do want to put something in the public domain, use CC0 because it includes an "If your jurisdiction doesn't allow me to put things into the public domain, I grant you a license with the same effect" clause.)

I noticed...

Yes. Everyone else uses proper, professionally written licenses.

GNU binutils
  is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License

I don't know where you're getting this from, but GNU binutils is licensed under the GNU GPL. The GPL family licenses were created for the GNU project, so you're unlikely to find anything GNU that isn't under a GPL-family license.

...and even if that weren't the case, the GNU project certainly wouldn't use the Creative Commons Attribution-NoDerivatives. They're ideologically opposed to using that license on code, because it doesn't compel you to share the source with people you give the binaries to, and it forbids you from modifying the code to better meet your own needs.

The four essential freedoms

A program is free software if the program's users have the four essential freedoms: [1]

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help others (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

-- https://www.gnu.org/philosophy/free-sw.html.en

Nonfree Documentation Licenses (#NonFreeDocumentationLicenses)

The following licenses do not qualify as free documentation licenses:

[...]

Creative Commons Noderivatives, any version (#CC-BY-ND)

This license does not qualify as free, because there are restrictions on distributing modified versions. We recommend you do not use this license for documentation.

JoseRoca commented 4 years ago

"Freeware is software, most often proprietary, that is distributed at no monetary cost to the end user. There is no agreed-upon set of rights, license, or EULA that defines freeware unambiguously; every publisher defines its own rules for the freeware it offers."

If I had to change the license, the closer one to the current one seems to be Creative Commons NoDerivatives (CC-BY-ND) 4.0.

I don't like any of the GNU licenses.

ssokolow commented 4 years ago

Aside from people being much less willing to accept legal ambiguity than in the 80s and 90s, the problem isn't "freeware".

The problem is the extra rules you're trying to add.

WinFBX is a framework. A piece for making programs... and the courts have decided that, when you build a program using a framework, the program counts as a derivative work of that framework because it is so dependant on it.

Thus, by forbidding making derivative works, you forbid all use of WinFBX in the eyes of the law. CC-BY-ND would formalize that by making it unambiguous that you want to forbid derivative works as the law defines them.

You need to draw a bright, clear line between what kinds of derivative works and redistribution are allowed or forbidden... and being unambiguous in law is harder than it looks. That's why lawyers get paid the big bucks.

(Heck. that's why open-source licenses have that block of boldface text. Some countries... mostly in Europe, have decided that certain consumer protections are too important to be disclaimed by saying something has "no warranty", so you're still legally on the line for them unless you explicitly list them in your "no warranty" disclaimer... which is another reason you want to use a professionally written license. Because it's the professional's job to know what things need to be explicitly disclaimed.)

If you don't like the GNU licenses, the next runner-up would be to find a professionally written license which follows an older idea that people may only only redistribute WinFBX source code in complete, unmodified form and, if they want to make changes, they have to share them as a set of patches to be applied to the source by the recipient.

That can still be considered officially open-source too.

4. Integrity of The Author's Source Code

The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.

-- https://opensource.org/docs/osd

networkproblemsolver commented 4 years ago

Sir, you seem to be preoccupied with "going to court".

I don't know what project you're planning that would cause you to think that Jose would take you to court, but you could just ask him for permission if you have a concern.

I've known Jose for years, and he is not a combative person.

ssokolow commented 4 years ago

Sir, you seem to be preoccupied with "going to court".

Courts rule on the ambiguities in laws. Copyright is a system of laws.

...and people like certainty in their lives and tools they can carry with them from one task to another, which requires unambiguous license terms.

I don't know what project you're planning that would cause you to think that Jose would take you to court, but you could just ask him for permission if you have a concern.

I'm asking Jose to clarify. The whole point of a public license (a license available to anyone who wanders by without having to personally enter into an agreement with the author) is to pre-emptively make clear what the author is OK with, and this license is not clear.

I've known Jose for years, and he is not a combative person.

I'm not either.

I grew up on QBasic and QuickBASIC 4.5 and I want this project to flourish... which means making a good, solid first impression and parlaying that into new users.

When you've got so many libraries clamouring for attention, and potential users have so much information to sift through in their day-to-day lives, you get into a "For every person who asks, tens, hundreds, or thousands more will just silently move on" effect. (It's like with web-published fiction like fanfiction. If you don't write a good synopsis, there are probably dozens or hundreds of other stories making better first impressions in the same page of search results.)

A familiar license with well-understood implications is part of how a project makes a good first impression on potential users. (As are easy-to-find screenshots and links to API references and things like that, for that matter.)