Licensing...

For other topics related to the FreeBASIC project or its community.
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Licensing...

Postby datwill310 » Jan 06, 2017 1:48

Hi.

I'm currently developing a library called the OGL (viewtopic.php?f=8&t=25207). You'll notice that it comes with no explicit license.

I've been reading around, from the GPL (seems solid, but I fear that there's something there which I don't understand and that goes against my idea of the license I want to release the library under), to the WTFPL, an acronym for Do What The F*** You Want To Public License (initially, it very much attracted me, but reading the discussion and FAQ pages kinda revealed how fundamentally, dubious, it is: I think I want to define more definite terms that that). WHICH caused me to want to write my own license, but looking a little after searching on Google, the hassle of if the license is violated and whether courts (is this important for me??!! I'll explain my situation below) will accept the license, and whether I might include or otherwise miss out something which I don't/do need...

Yeah, it's VERY confusing... this feeling of confusion is heightened by the fact that they seem to cover software, and not code files/libraries (except for the WTFPL, which explicitly allows pretty much anything to be licensed using it).

To clarify:
My Object-Oriented library is in the form of a single FB header file. The GitHub repository also contains numerous examples, as well as the documentation in CHM format. All the files, except for the doc and a few manifest files (which I got somewhere off the internet <:D), are in valid FB. I just want my library to have these things:
1. To allow users to use, copy, re-distribute, and/or modify my work ( which will or will not be released publicly), my consent is not needed for any of these actions.
2. If the library or the examples are modified, they can be released in a few ways:
2a. They can inform of improvements of the code in the OGL topic on the forum. In which case, the code file will be amended by me and credit will be given to the helper/s. These files will be re-uploaded to the repository with amendments to the doc as well as appropriate comments to the code file itself.
2b. Or they can release the library and/or its examples separately, so long as they give credit to the original author/s of the version/s of the modified code files, and that they release it under a new name, or under an explicit, easy-to-find notice expressing that it is not the original version, nor are they the original author of the original piece of code (link should be provided to the FB forum post - I will provide this link by 12-hours in this post)
3. There will be no warranties.
4. When distributing, credit to the original author/s as described in 2b must take place.
5. I want to make it clear that the modified version can be said to be the creator's; if they wish to, they must release the code file/s under this exact same license.

I hope I haven't missed anything out. I'll edit this post by around 12 hours.

Thanks for your time.
Last edited by datwill310 on Jan 06, 2017 14:36, edited 1 time in total.
figosdev
Posts: 18
Joined: Jan 06, 2017 7:24

Re: Licensing...

Postby figosdev » Jan 06, 2017 7:51

I use CC0 because it's GPL-compatible and requires nothing from the user, It's a public domain dedication that works even in countries where a license is required, such as Finland-- otherwise the user has no rights at all.

More conventional are the BSD-style licenses, which you find attached or modified for almost all "open source" / free software applications or libraries these days.

The GPL is the one that requires downstream (derivative) software to use the same license and offer the same rights as the code taken from upstream. Regarding GPL 2 vs. 3, use 3 if you have no reason not to-- if you (or someone important in your project) is somehow against GPL 3 for some reason, use GPL 2 instead. Linus Torvalds (for what it's worth) uses GPL 2 because he doesn't like GPL 3.

GPL 3 tries to close a loophole that made it so Tivo could use GPL software but still lock users out of changing it. Some people think it's too aggressive or tries to do too much-- however GPL 2 has broader penalties for violation.

For software, personally I would recommend everyone use one of these whenever possible: CC0, BSD-style (the Python license is an example of this,) or GPL 2 or 3. No one really benefits from other licenses if they are in a position to choose the license themselves. The problem with any amateur license like the WTFPL is that the purpose of a license is to convey legal Rights and/or Restrictions to the user-- licenses written with little or no legal experience writing licenses risk accidentally restricting, or accidentally granting, rights that were not intended by the author to be restricted or granted. This is not legal advice, but the choice is ultimately yours.
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: Licensing...

Postby datwill310 » Jan 06, 2017 14:55

figosdev wrote:I use CC0 because it's GPL-compatible and requires nothing from the user, It's a public domain dedication that works even in countries where a license is required, such as Finland-- otherwise the user has no rights at all.

More conventional are the BSD-style licenses, which you find attached or modified for almost all "open source" / free software applications or libraries these days.

The GPL is the one that requires downstream (derivative) software to use the same license and offer the same rights as the code taken from upstream. Regarding GPL 2 vs. 3, use 3 if you have no reason not to-- if you (or someone important in your project) is somehow against GPL 3 for some reason, use GPL 2 instead. Linus Torvalds (for what it's worth) uses GPL 2 because he doesn't like GPL 3.

GPL 3 tries to close a loophole that made it so Tivo could use GPL software but still lock users out of changing it. Some people think it's too aggressive or tries to do too much-- however GPL 2 has broader penalties for violation.

For software, personally I would recommend everyone use one of these whenever possible: CC0, BSD-style (the Python license is an example of this,) or GPL 2 or 3. No one really benefits from other licenses if they are in a position to choose the license themselves. The problem with any amateur license like the WTFPL is that the purpose of a license is to convey legal Rights and/or Restrictions to the user-- licenses written with little or no legal experience writing licenses risk accidentally restricting, or accidentally granting, rights that were not intended by the author to be restricted or granted. This is not legal advice, but the choice is ultimately yours.

Thanks for your reply.

I have taken a look at the CC0 and the BSD Wiki page and have decided to go with 3-clause BSD.

I just have one problem about implementing this license: the OGL is currently released under no explicit license, so how can I make sure to implement this license without harming mine or other people's rights? Do I have to re-release the OGL under a different name with this license, or do I simply update all my files on the repository with the new license?

EDIT: also, is it OK for me just to include it as one file or do I have to put it with EVERY text file as well? Just that I personally dislike a huge copyright notice with a disclaimer at the top of the code file I am trying to use.
MrSwiss
Posts: 3129
Joined: Jun 02, 2013 9:27
Location: Switzerland

Re: Licensing...

Postby MrSwiss » Jan 06, 2017 15:31

datwill310 wrote:... do I simply update all my files on the repository with the new license?
That's the way to go.

License should go *on top* of all the source files. (in short, with reference to full: license.txt)

Documentation of the LIB is different, also the type of license used for DOC, is usually different,
from the license, used for code.
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: Licensing...

Postby datwill310 » Jan 06, 2017 15:40

MrSwiss wrote:
datwill310 wrote:... do I simply update all my files on the repository with the new license?
That's the way to go.

License should go *on top* of all the source files. (in short, with reference to full: license.txt)

Documentation of the LIB is different, also the type of license used for DOC, is usually different,
from the license, used for code.

Thanks for the help. Which license do you suggest I use for the doc file/s?
MrSwiss
Posts: 3129
Joined: Jun 02, 2013 9:27
Location: Switzerland

Re: Licensing...

Postby MrSwiss » Jan 06, 2017 15:54

It is largely dependent, on the amount of control, you want to retain (over the DOC).
Ranging from: *all rights reserved* to: *none at all*.

Just remember the more restrictive, the more work for yourself (up to being the only
maintainer of DOC). You can also license *strong*, with exceptions on copying/disribu-
tion etc.
Last edited by MrSwiss on Jan 06, 2017 16:04, edited 1 time in total.
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: Licensing...

Postby datwill310 » Jan 06, 2017 16:01

MrSwiss wrote:It is largely dependent, on the amount of control, you want to retain (over the DOC).
Ranging from: *all rights reserved* to *none at all*.

Thanks again for your help.

I wont be able to update the 1.0 doc so easily since I haven't kept my project file for it, but I can edit the 1.1 doc. I have already got "Credit to original author (datwill310) would be appreciated!", but I think I need to be more precise (eg All rights reserved).
St_W
Posts: 1467
Joined: Feb 11, 2009 14:24
Location: Austria
Contact:

Re: Licensing...

Postby St_W » Jan 06, 2017 17:33

btw the phrase "All rights reserved" is practically useless nowadays as you automatically own all the rights if you are the author and have to explicitly license/grant permission for 3rd parties to use your code. See also https://en.wikipedia.org/wiki/All_rights_reserved

For "do whatever you want" license I'd recommend MIT license. A tiny bit more restrictive are BSD licenses (but also allow nearly everything).

If you want your code to be only used in open source / GPL projects choose the GPL, which is quite restrictive regarding how to use your code. However, that often prevents the code to be used in open source projects which grant more freedom (like when using MIT or BSD license).
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: Licensing...

Postby datwill310 » Jan 06, 2017 17:40

St_W wrote:btw the phrase "All rights reserved" is practically useless nowadays as you automatically own all the rights if you are the author and have to explicitly license/grant permission for 3rd parties to use your code. See also https://en.wikipedia.org/wiki/All_rights_reserved

For "do whatever you want" license I'd recommend MIT license. A tiny bit more restrictive are BSD licenses (but also allow nearly everything).

If you want your code to be only used in open source / GPL projects choose the GPL, which is quite restrictive regarding how to use your code. However, that often prevents the code to be used in open source projects which grant more freedom (like when using MIT or BSD license).

Thanks for your help.

I don't think I want to restrict users of my library to only be allowed to use the GPL license, so I think the GPL is a no-go!

Yes, I also saw MIT as I was searching. Thanks again for your input!
greenink
Posts: 200
Joined: Jan 28, 2016 15:45

Re: Licensing...

Postby greenink » Jan 07, 2017 0:29

Who's making you add a license, why should the average person even bother? Some one could resell my code, patent it. It makes no difference to me. My view point is, I'm not a lawyer, why should I be forced to add legal terms I don't fully understand.
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: Licensing...

Postby datwill310 » Jan 07, 2017 0:44

greenink wrote:Who's making you add a license, why should the average person even bother? Some one could resell my code, patent it. It makes no difference to me. My view point is, I'm not a lawyer, why should I be forced to add legal terms I don't fully understand.

That's a good point. It's partly (well, entirely) why I'm so confused - I'm sorry, but I just don't understand the GPL... But there is a reason why I am persisting with this issue.

If you release a project with no license, you are not actually giving the rights of use to anybody. I mean, OK, so I put something online, whatever. But it's still mine and mine entirely.

It's like this. Imagine you're a kid who's got a new toy. You decide to bring it to show-&-tell to present it to your class at school. Your intention was to allow the kids there to play with it too: it's yours alright, but you want to allow others to use it.

So it's time. You walk to the front. You bring the toy along and put it on some sort of table to show it to your peers. And then you stand, without saying anything. After a while, the peers and the teacher begin to look a bit perplexed as you stand there. Everybody is just getting a bit confused, and after all that: nobody got to play with your toy.

This is exactly it. Because you didn't explicitly give permission for your peers to play with the toy, they just, didn't play with it.

So let's go back to the show-&-tell. You walk to the front. You bring the toy along and put it on some sort of table to show it to your peers. Then you say something like this, after explaining a bit about it:

You wrote:I've brought my toy in today because I thought some of you would like to play with it. Of course, it's STILL MINE. But I'd like you to have a little go!


This is the license. You are giving permission for your peers to use your toy under certain conditions.

You wrote:Oh, and also, I'm not guilty if you accidently slip on it and brake your foot!


This is a disclaimer. Its fairly important as people could blame you for something which they probably caused: mis-using your product and causing harm to themselves or their computer/toy.

You wrote:And if you brake my toy, dad said he'd get you to pay for a replacement.


This is similar to if you violate those rules. You are charged and often asked for a hefty amount of money/a fine. Of course, this is not always the case: as with the license I am using now, it is for a free library - not entirely the same deal.

This is why I am releasing my project under a license.
caseih
Posts: 1354
Joined: Feb 26, 2007 5:32

Re: Licensing...

Postby caseih » Jan 07, 2017 4:45

greenink wrote:Who's making you add a license, why should the average person even bother? Some one could resell my code, patent it. It makes no difference to me. My view point is, I'm not a lawyer, why should I be forced to add legal terms I don't fully understand.

No one course. But if you intend for others to use your code, you really have to describe at least some licensing terms. The reason is that US copyright law reserves all rights to the copyright holder by default. Therefore no license means another person cannot legally use it. This may not matter to you but when commercial interests come into play this becomes very important. Of course only the copyright holder can initiate litigation (theoretically... Copyright enforcement companies seem to feel differently) so it may not matter.

There is some debate whether it's possible to purposely place a work in the public domain given the current law. Gets interesting.

In any event for something like this library, licensing is somewhat important. Fortunately there are a lot of prefab license tou choose from so you don't have to be a lawyer. Also the copyright holder can change the license for new copies at any time. So you don't have to worry about picking the wrong license and not being able to change it. Also you can license code under the terms of several different licensed depending on the situation. Many projects are dual licensed with the gpl and a proprietary closed source license.
figosdev
Posts: 18
Joined: Jan 06, 2017 7:24

Re: Licensing...

Postby figosdev » Jan 07, 2017 5:49

caseih wrote:Also the copyright holder can change the license for new copies at any time. So you don't have to worry about picking the wrong license and not being able to change it.


(EDIT: alright, you did say "new...") Most free/open licenses are meaningless if you can retract them at any time-- for example, FreeBasic is under the GPL for over a decade, so each version released under the GPL can be re-released under additional licenses-- but the GPL rights cant be rescinded. Same for BSD, MIT, etc.

If Linus Torvalds decided tomorrow that he doesnt want the old Linux versions under the GPL, too late-- the project would go on without him. When OpenOffice copyright ownership was acquired by Novell, they changed the license for new versions, but couldn't prevent the LibreOffice fork of the project.

So if you pick the wrong license, you can change it for new versions, but users can still use your old versions under the license you chose before. (Will they bother asserting their right to? Who knows?)

You can stil re-release your old versions under other licenses, in which case people will be able to choose between using the old license or the new one. This is similar to releasing under more than one license and letting people choose between them. which was the situation for Yabasic-- new versions are under the MIT license. Older versions were available under the Artistic License 2, or one other license (probably GPL 2.)
caseih
Posts: 1354
Joined: Feb 26, 2007 5:32

Re: Licensing...

Postby caseih » Jan 07, 2017 16:47

It's true that you can't change a license on existing copies. But you can stop offering the code under the old license. If your old license allowed forking, then that is always a possibility. But for 99% of us, that's not ever going to be an issue. Change the license if you feel like it and move on. And yes you could be in a situation where the same code is under multiple licenses. But any changes or patches you release could be under the new license only.

Things start getting complicated when you begin accepting patches from your users. By default, such patches' copyright are held by the contributors, not you. By contributing patches to be integrated into the project's main source code, the users are agreeing to the license terms. However if you ever want to change the license of the project, you will have to get all of these contributors' permission, as they hold copyright on bits of the code. Alternatively you must remove their contributions.

For a large project like Linux, relicensing is impossible. Some contributors can no longer be found (they may be dead even), so getting everyone to agree on a license change is impossible. And removing contributions is not possible either. Fortunately the GPLv2 (despite allowing tivoization) is pretty close to ideal for the kernel. We're very lucky he chose that all those years ago.

Some projects require that when you assign copyright of the patches and contributions to the folks who are running the project. This often doesn't go down well with users and contributors because it means that their hard work could be used by the project owners for any purpose including selling it commercially.

Personally I choose the GPL or LGPL (for libraries) for all my little projects. That protects the openness of the code the most (an important distinction from the freedom of the end user), and if my projects ever attracted any attention I would relicense or multiple-license the code, even under commercial terms. In short, the GPL license preserves my ability to make money on my code in the future if I chose. Of course no one else contributes to my project so I can do this easily.
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: Licensing...

Postby datwill310 » Jan 07, 2017 18:50

caseih wrote:It's true that you can't change a license on existing copies. But you can stop offering the code under the old license. If your old license allowed forking, then that is always a possibility. But for 99% of us, that's not ever going to be an issue. Change the license if you feel like it and move on. And yes you could be in a situation where the same code is under multiple licenses. But any changes or patches you release could be under the new license only.

Things start getting complicated when you begin accepting patches from your users. By default, such patches' copyright are held by the contributors, not you. By contributing patches to be integrated into the project's main source code, the users are agreeing to the license terms. However if you ever want to change the license of the project, you will have to get all of these contributors' permission, as they hold copyright on bits of the code. Alternatively you must remove their contributions.

For a large project like Linux, relicensing is impossible. Some contributors can no longer be found (they may be dead even), so getting everyone to agree on a license change is impossible. And removing contributions is not possible either. Fortunately the GPLv2 (despite allowing tivoization) is pretty close to ideal for the kernel. We're very lucky he chose that all those years ago.

Some projects require that when you assign copyright of the patches and contributions to the folks who are running the project. This often doesn't go down well with users and contributors because it means that their hard work could be used by the project owners for any purpose including selling it commercially.

Personally I choose the GPL or LGPL (for libraries) for all my little projects. That protects the openness of the code the most (an important distinction from the freedom of the end user), and if my projects ever attracted any attention I would relicense or multiple-license the code, even under commercial terms. In short, the GPL license preserves my ability to make money on my code in the future if I chose. Of course no one else contributes to my project so I can do this easily.

First paragraph: I don't mind forking, so long as credit is given correctly. Otherwise, their project is totally theres and not mine and I'm 100% fine with it. I don't think I will ever need to change the license of my library: this new license seems to have the right points.

Second: I've got a few lines about accepting patches in my new doc file (which has not been released yet): basically, I will only accept patches to be officially part of the library with the creator's express consent. I will never include something without credit, either, which is one of the ways I will be supporting their rights. I do believe credit is important, as it marks a work as our own. However, of course I want to allow others to use or improve the library. I hope these points abide with the [3-clause] BSD license:
the doc file wrote:If a line is in italic [under a particular version in the version log], it signifies an improvement made to the library, made by somebody else, and has been incorporated into the OGL because they expressly wanted the improvement as part of the OGL. If you have an improvement which you want to incorporate, please post it on the OGL post.
Note: I will not include an improvement without express permission from the author/s, and I will definitely not directly incorporate an improvement made by somebody else which is owned by them, which must be under the appropriate license found at this topic [a link to the license topic].

Is this correct, or is there something wrong with this. Currently, the OGL is not under these terms.

Fourth: That's definitely an issue: I don't want to tick contributors or users off. I will never ask for money for the OGL, nor will I give rights away for or without money.

Fifth: I will not make money with the OGL... But I just had a thought: what happens if someone were to program a commercial piece of software [which costs] which uses my library. What will happen then? Do the users of the library who make money have to give me some of it? idk, it's all confusing me... I don't want to make money: I'm providing my code for the benefit of others.

Thanks for your help (the amount of times I'm saying this kinda makes this seem disingenuous, but I do mean it).

Return to “Community Discussion”

Who is online

Users browsing this forum: No registered users and 2 guests