First off, I recommend just reading the license. Especially the BSD license, which is very simple. That will tell you exactly what you can do.
The basic idea is this: there are two main licenses, BSD and GPL. If code is licensed BSD (like SymPy), then you can use it absolutely however you want. You can modify the code, relicense it (say, under GPL), even take it and sell it without making it open source. There are no restrictions. You have, essentially, permission to steal. The only requirements (which are outlined in the license) are that you distribute the copyright notice (effectively, letting people know that you did indeed use the SymPy code). For GPL, you can only use the code if your code is also GPL, meaning it has to be open source (the GPL has stipulations that require that the source code be made available). So for example, for Linux, I can fork it and make my own kernel based off it, but if I distribute it, I have to distribute the source code as well, and make that GPL. An important additional constraint is that if you have a GPL compiled library, you can't link against it without also being GPL (the LGPL removes this restriction). Now, an important point here is that because GPL code has to stay GPL, you can't take GPL code and integrate it into a BSD open source project. This, for instance, if you were to fork SymPy and make it GPL, you could continue to take code from SymPy, but SymPY could not take code from your project (unless you also agreed to relicense those specific code bits as BSD, but at that point you might as well just license the whole thing as BSD and make everyone's life easier). This is the primary reason why I prefer BSD and recommend everyone to use it. If you prefer philosophy, the philosophy of the GPL is outlined at https://www.gnu.org/philosophy/pragmatic.en.html and the philosophy of the BSD is outlined at http://copyfree.org/ (that's a bit of a misnomer, though. The BSD itself doesn't really come endowed with a philosophy like the GPL does, but, at least for me, the copyfree standard indicates how and why BSD-style licenses are to be preferred). The third aspect is the social/pragmatic side. Some people won't touch GPL code. Others avoid BSD (there are more people in the former camp in my experience). Many businesses have paranoid lawyers who (correctly or not) avoid using anything GPLed at all. If you are going to integrate into an ecosystem, it's best to match the license of that ecosystem. For example, the scientific Python ecosystem is almost all BSD. A GPL scientific Python library would be frowned upon by a large portion of the community because it would be impossible to integrate code from it into other scientific Python libraries. Also a large portion of the community prefers the philosophy behind the BSD license, see http://www.astrobetter.com/blog/2014/03/10/the-whys-and-hows-of-licensing-scientific-code/ and http://nipy.sourceforge.net/nipy/devel/faq/johns_bsd_pitch.html. Aaron Meurer On Mon, Feb 8, 2016 at 11:08 AM, Imam Tashdid ul Alam <[email protected]> wrote: > Hi Ondrej, > > Thanks for your reply. An interesting discussion ( > http://opensource.stackexchange.com/questions/304/can-i-take-bsd-licensed-code-and-distribute-it-under-gpl) > also pointed me to the linux kernel case. I looked at the source tree on > Github. The top-level COPYING says nothing about the BSD license issue but > files inside the tree contain it. > > So I am back to square one. Seems like the right thing to do is to mark > the code that I take from sympy with the BSD license. Only if I modify it > enough should I be able to call it mine and dispense with the BSD license. > Reminds me of Sorites paradox ( > https://en.wikipedia.org/wiki/Sorites_paradox). Who knew contributing to > libre software has its own riddles. > > But since I have your attention for the moment, do you have any > suggestions about rewriting the core? Is there a set of design choices you > wish someone would explore? I like it that the expression-tree is > immutable. Would you recommend following a lens-based approach ( > https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/a-little-lens-starter-tutorial) > to manipulate it? My main goal is to make both the expression-tree and the > allowed transformations serializable so that people can share math bits > over the internet. Pointers and caveat about potential dangers will be very > much appreciated. > > > Again, thanks for sympy. I wish it was more popular among physicists. As > an aside, I am also currently enjoying your ongoing theoretical physics > book. Forgive me if I am mistaken and that's not you. If you are, I will be > very happy to contribute to the book. And of course, I intend to contribute > to sympy if I can as well. > > > > > On Monday, February 8, 2016 at 5:44:17 PM UTC+11, Ondřej Čertík wrote: > >> Hi Imam, >> >> On Sun, Feb 7, 2016 at 11:28 PM, Imam Tashdid ul Alam >> <[email protected]> wrote: >> > Hello all, >> > >> > Recent sympy user here. Need advice on license issues. I am thinking of >> > writing a library with much in common with sympy but the plan is >> nowhere >> > near complete at the moment. >> > What I would like to know more about is the implications of sympy >> license. I >> > am thinking of indiscriminately copying the sympy codebase when and >> where I >> > need it. If I read the license correctly, that should be fine if I >> license >> > my code under BSD as well. But the problem is, I think I like GPL more >> for >> > my purpose. I do not understand the subtlety involved in deciding >> between >> > GPLv2 and GPLv3, but let's say I go for GLPv3. >> > >> > Wikipedia >> > ( >> https://en.wikipedia.org/wiki/GNU_General_Public_License#Compatibility_and_multi-licensing) >> >> > seems to suggest that it is okay for me to release my code under GPLv3 >> > (since sympy is BSD-3), but I would appreciate guidance regarding where >> not >> > to go overboard with this. For the sake of argument, can I just fork >> sympy >> > and just change the license to GPLv3? Does not seem quite right to me. >> >> Yes, my understanding is that you can do that, i.e. that you can take >> parts of SymPy, optionally add your own stuff, package it, and use any >> license you want to distribute it. Let's say you only sell binaries >> using some commercial license. Then all you have to do is to put the >> SymPy's BSD license somewhere in documentation. If you want to use GPL >> and distribute the sources, then you can do that as well (as long as >> you copy the BSD license somewhere), at least that is my >> understanding. >> >> You can look at the Linux kernel how they do that, since the kernel as >> a whole is GPL2 licensed, but they also include some code that was >> originally BSD licensed. >> >> > >> > Also, acknowledgements. Let's say I appropriate a sizable part of sympy >> (as >> > I intend to). And maybe I have a file called AUTHORS. I think BSD-3 >> says >> > that I do not put the names in AUTHORS in the sympy tree in it. I will >> of >> > course acknowledge the heavy reliance on sympy in the documentation and >> > elsewhere, but is there anything more I should do to give credit to >> > individuals? >> >> You only have to copy the BSD license. You do not need to copy the >> AUTHORS file. >> >> > >> > End of questions. Just a bit more on what I am trying to do just in >> case. I >> > am not currently interested in all the sympy modules but just the core. >> My >> > primary goal I think is to experiment with a more simplified >> representation >> > of expressions at the expense of usability so that I can provide more >> > control over the generation of LaTeX code. >> > >> > Thanks in advance and thanks for this awesome program. >> >> I am glad you found SymPy useful. If you implement some new things >> that you think would be useful for SymPy itself, we are always >> interested in getting a pull request. >> >> Ondrej >> > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/a6b05082-fa66-4733-bbec-09eb78d1eddf%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/a6b05082-fa66-4733-bbec-09eb78d1eddf%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6KWcw1jmLscQtSAxOkDWuUYZbOR56wF3Cjz439y0%3D5mZQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
