Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
During my last internship, I took an open source tool and enhanced it as a part of my project. Because of my growing interest in that tool, I took it home and added some more functionalities to make it more useful for others outside and then thought of publishing it.
The original source code is available in public domain without any restrictions, but since I worked on this tool during my internship, I wanted to know whether I have to take permission from my employer before publishing it.
Although I want to publish it, my mind tells me NO, as the code is now a property of my employer.
Edit 1:
This is what the original tool writer says about the code:
"This code is released into the public domain without restriction"
Yes, if you changed it as part of your work for a company, then it is that company that owns the copyright for what you do. So you cannot publish your changes without permission from your employer. If you were modifying a freely available tool, though, you may want to ask your employer for permission to publish the code; many employers will allow this if it wouldn't significantly affect them to do so.
You say that the original source code was in the public domain. That's fairly rare; most of the time the original source code is still copyrighted, but available under a free license (and sometimes, code is posted online without any license listed, which actually means that it is copyrighted and no permission is given for you to make any copies of it or modify it in any way). So, be careful that you are not accidentally violating anyone's copyright by modifying and distributing the code, or that you are complying with any license conditions on it if there are any.
It really depends on what kind of contract you signed with the company that you interned at before joining. Most contracts would make the IP you added to the project the company's IP hence legally you are not allowed to publish it as your own.
You also need to keep in mind that most open-source license agreements necessitate that you release any derivatives under the same licensing agreement. Hence, you wouldn't always be able to commercially publish something that had an open-source component, unless you released your code (or part of your code) as open source.
Usually software written at work is the property of the work place. You should ask for a permission, and then you can release it as an open source project.
As for the open source license, see the various licenses
IANAL, but if you're ABSOLUTELY and CLEARLY sure that the code is in the public domain, you can do whatever you like with it. Any entity, corporate, non-corporate, commercial, non-commercial, individual or group, that releases ANYTHING into the public domain has waived their right to claim copyright on whatever they release. Since it does say in the license file that the code is in the public domain (and with emphasis on 'no restrictions'), it is your legal right and entitlement to do whatever you like with it.
Related
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
I have worked with my friend on a project and made a website. This is the website: TOFSIS
It's more or less like an Educational CMS. Now the thing is, it's in its initial stage. We still have to prepare more modules for the site as instructed by the college.
So, my partner and I thought of making it open sourced so that people in college can build on it. We want to choose from a pool of eligible developers who are really interested and give the codes only to them under certain conditions so that they can prepare a particular module for the site or fix the existing bugs. And for things like GPA calculator, attendance calculator, you don't need the codes for the site.
I read completely about licenses and I don't think we can choose open source license as yet because we are not giving out the codes now. But what about Creative Commons? Just adding a CC badge like SO.
I see that on SO footer there is a CC stamp. SO is not open sourced to my knowledge. But I also heard CC is not meant for softwares or codes. So when does a developer use CC license? And is it fair in my case to use a GPL without giving out the code now but put some more additional custom conditions?
What should I do in my case? I want to put up a license. I don't want anyone to commercialise and I want people to share back things too.
Thank You
The AGPL is possibly the best license choice if you want to make the source code open for people to improve, but also want to force people to share back their improvements.
It doesn't explicitly prevent commercialisation, but anyone who makes a commercial derivative work would have to share all their changes under the AGPL. In practice, this means that a commercial entity would have to find some other way of creating value, e.g. providing value-added services.
Note: The Open Source Definition, require that a license has "No Discrimination Against Fields Of Endeavour". This means that you can't go adding clauses that prohibit commercial use if you want to be classified as open source. You have to let businesses use open source code fairly on the same terms, just like everyone else.
Before I answer, first a question: why not make the code widely available? Since you appear to have no intention of commercializing it, why go through the hassle of using a non-OSS licence (which will spark discussions with your contributors).
Anyway, a good licence could be the Microsoft Reference Source Licence, which will allow viewing rights, but not modification / redistribution. You can make a separate agreement to allow specific people to contribute, ask a lawyer since this goes into contract-law territory (you need permission from them to re-license their code).
But I also heard CC is not meant for softwares or codes. So when does a developer use CC license?
A software developer should never use a CC license for a software program.
Creative Common licenses are fitting for works like images, photos, music, video or the text of documents.
They are less fitting for software because a software program has two forms: object code and source code. The CC licenses do not work well with these two forms. E.g you can edit a photo or a music quite well, that does not work well with software if you don't have the source-code.
CC on stackoverflow btw. is used for the content. So you can edit my answer now and improve it ;)
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I have forked a BSD-licensed project and made significant rewrites. In terms of numbers of characters, around 70% of the code was now written by me. I want to respect the original author's copyright while also receiving attribution for my work. Originally I intended to ask the best way to do that, but I see that according to this question I can just duplicate the original author's copyright line in the license file and put in my name and the year(s) of my work. Cool.
Now my question has to do with this line:
Neither the name of the PROJECTNAME nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
My rewrites have involved a significant change to the scope and direction of the application. I felt it appropriate to change the name of the app to better represent what my fork is. So:
Is changing the name cool? I don't see anything in the license that would prohibit it.
How best to represent this in the license? Should I replace the old project name with the new one? Should I modify that line to say "neither the name of the OLDPROJECTNAME, the name of the NEWPROJECTNAME, nor the names of its contributors..."?
I understand that no one here is going to give legal advice! I'm just looking for some general guidelines and best practices from the open source community.
You can change the name of the project, of course, BSD license being one of the most permissive ever, after public domain maybe.
It's not cool to keep the old name since you rewrote most of the code. And not fair for the original dev team.
If you are familiar with GPL-based licenses, they mostly have some clauses to make mentioning original authors and keeping the license mandatory. With BSD style, those aren't a problem anymore.
My answers are:
Consider yourself being an author of a fork, derived from any initial software but now doing things differently.
I guess you can attach any license you want now, since YOU are the author. Not sure about that though.
I want to respect the original author's copyright while also receiving attribution for my work.
It's nice you want to, but actually it's even a must. If you don't respect the usage terms given under BSD you would not have the right to rewrite the code (which you already did).
There are multiple ways how you can make the licensing of a software visible, whichever you have with your software make clear:
What is the name of the work (to make it identifiable) and who is the author of it, when was it written.
As your software makes use of other software, make clear under which license that other software is, which software it is, by whom it has been written etc..
If you want to allow your own changes and extendings to be re-used upstream in the project you forked, you should choose the same license for your work.
I felt it appropriate to change the name of the app to better represent what my fork is.
Is changing the name cool? I don't see anything in the license that would prohibit it.
The original usage conditions don't forbid you to change the project name. As you actually forked it, it makes very much sense that you change the name. Even if it's PROJECTNAME-user1311904-fork only or a completely different name.
How best to represent this in the license? Should I replace the old project name with the new one? Should I modify that line to say "neither the name of the OLDPROJECTNAME, the name of the NEWPROJECTNAME, nor the names of its contributors..."?
Actually as outlined above you have two licenses. You have got your license (the main license) which is for "your" software. And then you write that part of your software is licensed as. Then the original terms of the software your forked from are listed (as you got them from the original author). So it's clear what the licensing of your software is.
If you want to document this really good, you should put everything under version control, so it's technically possible to obtain the information what the original code was and what your changes are. So it's absolutely safely documented with the version control system to which part which license/es apply/ies.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I thinking of a good opensource licence to choose for my project. I got a few requirements but I have a hard time choosing a license because a read some different things about some of them.
The project is a Java project that can calculate decompression schemes for scuba diving. I want this project to be opensource because a wrong decompression scheme can be lethal. Therefore feedback on the algorithms and source code is important for me. I don't make my own algorithms but I use various opensource algorithms that I implement in 1 Java library.
My requirements are:
I and other contributers to the project don't want to be responsible for wrong calculated decompression schemes due to bugs in the code, miss use of the code or any other way that resulted in wrong decompression schemes.
The library should be able to use on a website I plan to build without the need to publish the server side code of the website.
It's not allowed to make any profit of the library itself. Even not even the library is changed and republished. However I don't mind if people sell programs the make use of the library.
If people change the code than they should be forced to re publish the library with an opensource licence (Optional requirement).
I hope someone with a bit more knowledge of licenses can help me out.
Well, there are a couple of things I notice right off the bat here.
First off, you talk about needing to be able to do things with your own code. If you are the copyright holder, you can do pretty much anything you damn well please with your own code. The license is for other people, not for you.
Also, disclaiming any responsibility for what the code may do to other folks is pretty much boilerplate with any license.
That being said, I've found in my work I can get by with the use of only 3 different kinds of licenses, depending on my needs.
Full on GPL
Benifits:
Nobody can ever take any of the code propreitary (without coming to me for a relicense). They can still use it and charge people, but since they'd have to license the result GPL, that wouldn't be particularly practical. The reason is that any of their users could give away all the free copies they like.
The sources are avilable for anybody to contribute to, so I might not have to find and fix every damn bug and write every new feature myself.
Drawbacks:
None of the code is usable in a properitary app
I use this typically for stand-alone apps.
GPL with linking exceptions
This is basically what it says; GPL with an exception that meerly linking against (or #including) the code does not render the entire result GPL. Here's an example from the Classpath library.
Benifits:
Nobody can ever take the code itself proprietary.
The code can be used in a proprietary product without making the whole closed-source product open-source. Only the GPL-licensed stuff has to stay GPL.
Drawbacks:
The facility itself can never be expanded into a proprietary facility. Generally a plus in my book, but it does deter some people from using it.
I use this typically for helper facilities and API's .
Public Domain
This means anyone can do anything they like with this code, including making a tiny tweak, slapping their own copyright on it and calling it theirs.
Benifits:
Anybody can feel free to use it however they like.
Drawbacks:
No protection from the code getting "stolen" by a proprietary software seller.
Impossible to do in may jurisdictions (a permissive BSD I understand can be a good alternative there).
I use this when I'm publishing something incomplete that I really want someone else to take over, or when publishing something that is supposed to be a reference implementation for a standard library.
Now in a case like yours what I would do is either:
Use GPL with the linking exceptions for the library. That will allow everyone (including you) to use the library in a proprietary application, but the library itself will always stay Free.
Use GPL, and insist that contributions from others have their copyrights assigned back to you. This allows you full rights to make your own proprietary app using other people's contributions, and doesn't allow anyone else (including those contributors) that same right. Kinda cheesy in my book, and will probably discourage outside contributors. However, only the most successful Free Software projects get any outside contributors anyway. So it may not be that much of a loss.
It came to my attention recently that Bruce Perens (one of the founders of OSI) actually made a blog post a year earlier that made the exact same point. He picked two different licenses than I did for the latter two though. He picked LGPL for the intermediate license, which I think is a mistake on his part. However, he picked the Apache License 2.0 for the latter license, and I think he may have a point on that one. The benefit you get from using Apache over straight Public Domain is that you are better protected from patent lawsuits. That isn't something poor little me really has to worry about, but your company is a different matter entirely.
This impossible. You say you want an open source license that prohibits making money. However, one of the key requirements for being an open source license is not making any restrictions with respect to commercialization.
Ergo, a license like you describe it cannot possibly exist.
And here the standard answer: StackOverflow is a site for programming questions. We are programmers. Your question is a legal question. This means that all answers (including mine) will be, by definition, crap, since we don't know WTF we're talking about.
For legal questions, ask a lawyer.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
My application is reaching a pretty nice beta/alpha level and I might at some point publish it. I have not decided what software license to use in my application. The application is under construction. I bet this must be a question that every developer thinks about at some point.
My software is more like a library and here are some key factors in my case:
It must be an open-source license.
It must be free for developers to use as a library for their applications.
Developers are allowed to redistribute the source code as part of their applications modified or unmodified.
The library can be used for closed-source software.
I want attribution/credit. A one-line credit in the software Help dialog or somewhere in about section of their website is fine. As long as it is reasonable easy for a 3rd-party to find out what library was used to produce the resulting software.
Forking a new project out of my existing source code should not be allowed. I want people to be able to use it and even modify it, but not clone a new similar product to compete against my existing product.
The license needs to state that I take no responsibility for any damage whatsoever.
Is there such a license? Would those requirements even fit in an open-source license?
Forking a new project out of my existing source code should not be allowed
Above is in conflict with Open Source idea (which allows/encourages forking). More info here: Which open source license has no forking
If you think that you can drop that requirement the best choice is LGPL and additional requirement that people must give you credit (you will have to define what type of attribution/credit do you want per different uses)
As James stated in previous comment:
Forks very rarely happen
It is very hard to fork a (big) project
You can benefit more if there are forks - you can take the good ideas from the fork and leave the bad. That way the better judgement about features/code will eventually win (which is part of the idea of Open Source)
Forking a new project out of my
existing source code should not be
allowed. I want people to be able to
use it and even modify it, but not
clone a new similar product to compete
against my existing product.
Ummm ... This is I have never heard of in a Open Source license, and I don't know of any that have this. How would you even word it? Determining the difference between a fork and someone else who has taken your code and just added a patch would be really hard.
Can you think about this one? Forks very rarely happen, and when they do they aren't always competition. Talent, ideas and even code can flow between the forks freely.
You need to speak to a lawyer, we aren't lawyers and don't know your application.
Prevention of forking with open source licenses is complicated, as James says.
For commercial applications, you may want to look at dual licensing.
As far as I know the LGPL allows forks.
You should be able to find one to suit your needs here:
http://en.wikipedia.org/wiki/Comparison_of_free_software_licenses
More specifically I think the GPU Lesser Public License might suit the needs of your library. Keeping in mind that like (all?) open source licenses, LGPL allows forking.
http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am a web developer, and I don't have enough knowledge about software licenses. I wish to publish some of my works, and I need to select licenses for them. My software product is free of cost, but I have some restrictions on distribution/modification of the code.
It’s free of cost (but donations are acceptable).
The source code is freely available. You can use, customize or edit/remove code (as long as the basic nature of the software is not changed).
You don’t have any permission to change the product name.
There are some libraries and classes which are in a folder called “myname”. You don’t have permission to rename “myname”.
You can contribute any additions or modifications to my project, to the original source repository (the contributor’s name/email/site link will be listed in the credit file).
You can’t remove the original author’s name from the license.
You can put the license file or license code anywhere in the project file or folder.
You can redistribute this code as free or commercial software.
Are all these restrictions valid? Given these restrictions, which license should I use?
My main intention is to make the product more popular with free source code while ensuring the original author is not ignored. The product is open.
Thank you all; the above points are because of my lack of knowledge of license terms.
You can help me to correct or remove some of the above points. What I’m basically looking for is in the paragraph above.
I don't think the following are currently covered by any license I am familiar with:
Don't deviate from the basic nature of the software.
You can use/customize/redistribute as free or commercial, but you can't change the name.
I'd argue that while the product may be free and "source code available", that what you're describing is not "Open Source". Notably, you're not letting people fork and/or repurpose the code, both of which are main features of an Open Source code base.
By retaining copyright, no one can "take your name off" of your code, as they don't possess copyright, but not being able to rename the project, or change the names of folders, that's pretty extreme.
So, I would suggest you think through your motivations behind releasing the code and from where these restrictions originiate.
As others have noted, you have some rather odd requirements:
“Don’t deviate the basic nature of the software.” (Do you specify the “basic nature of the software” in the program itself, and are you going to argue in court over something so vague?)
“You don’t have any permission to change the product name.” (Usually, if anything, the opposite is required: if you change it, you have to change the name, so people don’t think that the modifications represent your work.)
“There are some libraries and classes which are in a folder called ‘myname’: you don't have permission to rename ‘myname’.” (Similar to the first, but more concrete — though I’m not sure what the point of this is.)
Based on these requirements, I think the license which fits most closely with your stated desires is the GNU Free Documentation License. As indicated by the title, it’s almost never used for source code of programs.
It is the only license I know of which allows you to prohibit users from changing or improving specific parts of the work. For example, I think you could say that the folder “myname” is an “invariant section” (note that I am not a lawyer, and this is not legal advice).
It’s not compatible with the GPL, and (the way you’d use it) it’s not DFSG-free. It’s rarely used for software, so distributors and contributors might have trouble understanding how to apply it. In short, you probably wouldn’t be making any friends with this route.
BSD license should cover this. I have chosen it for my open-source stuff too.
As written your requirements don't fit into any specific license out there (that I know of), and since you are not looking to make money, getting a lawyer to draft one would be rather expensive, and fundamentally counter-productive.
I suggest you look at licenses for different open source projects out there and see which one matches closely with what you want, and use that.
To get everything you want you will probably have to write your own license. This is not necessarily in your best interests. You are going to have to make a choice between popularity and control:
If you use an established license, you will have a very wide audience for your work, which will have a chance to become popular.
If you insist on certain restrictions (the name can't be changed) you will keep greater control, but you will lose potential users; because lots of organizations won't look at software with a nonstandard license.
Your requirements are very close to BSD, and not that different from MIT. I recommend you browse the popular licenses blessed by the Open Source Initiative and choose the one you feel is closest to your desires. I've checked your edits, and if you insist that I make a recommendation, for your wishes I recommend the Simplified BSD license. It's a good, popular license that is often used by developers who want their work to be very widely deployed.
If you ask people in a README file not to fork your software and change the name, as a matter of personal preference rather than licensing terms, most people will honor your wishes.
I think you will have a hard time finding an existing license to fit your needs because you seem to require two separate sets of permissions: a MIT-like set of permissions for the source in general, with the exception of a locked-down "myname" folder. You may be better off separating your code into two separate parts, each with a different license. The MIT license seems to fit your conditions for the bulk of the code (except for the "basic nature of the software" statement, I'm not sure what you mean by that). The MIT license requires the copyright statement bearing your name to be retained in all copies of the source, so this would address the concerns you bring up in your first edit. Depending on the particular reasons why you need to add special restrictions for the "myname" folder, you may have to write a custom license (you can take an existing one that's close and simply tweak it) that governs only that folder. Your entire project doesn't have to fall under a single license.
3) You don't have any permission to
change the product name.
You might be asking for problems with this one. If someone takes your code, enhances it, and releases it with the same name then you will have two very different programs out there with the same name. This is very confusing for potential users. Is the the original version? The version that was modified with a German-language interface? The version that has a fix for a specific bug? When they all have the same name, it's difficult to determine. If a user has a bad experience with a particularly buggy (or worse, virus-infected) derivative work, they will be unlikely to use any version of your software because it appears to be the same program as the buggy version.
I get the impression that you are mostly wanting to avoid having your work copied and completely re-branded without any acknowledgment of your involvement. I might suggest that instead of prohibiting name changes, require that derivative works reference your original product name (for example, "ShinyNewProgram - Powered By YourOriginalName"). Many open-source projects trademark their product names and a provision like your #3 would then be a violation of trademark law; the more common solution is to require a new name (to differentiate it from the original) and to require clear attribution of the original work.