Ondrej, Caveat: my understanding of US copyright law and software licenses.
When you create something (book, photo, program) you automatically have a copyright in/on that work. You may control the creation of copies. With a GPL/GFDL license you explicitly grant others further freedoms - someone may make unlimited copies. They may make modifications. BUT, if they make modifications and distribute the modified version, they must apply the same license. (Thus the adjective "viral".) Your script was your creative work (well, not very creative). You could have copied it onto CD's and sold those for whatever price you could fetch. I could not buy a CD from you and make copies to sell - that would violate your copyright. You have not modified Sage, you have not copied Sage. The Sage GPL license has nothing to do with your script (your creative work). However, if you post it in the Sage Wiki, then you implicitly agree to license it under a CC license and we can all use it under the terms of the license. The GCC run-time exception covers the case when a program (meant to be proprietary/copyrighted) copies a portion of the GCC code into the resulting program. Its all about making copies. The copyright holders of GCC wish to allow this limited type of copying without the added burden of complying with all the terms of the GPL, even if someone (intel, say) is using GCC to make proprietary software, as it helps make GCC universally accepted. Intel's source code would likely be copyrighted. Rob On May 5, 7:22 pm, Ondrej Certik <ond...@certik.cz> wrote: > On Tue, May 5, 2009 at 7:18 PM, Brian Granger <ellisonbg....@gmail.com> wrote: > > >> The runtime exception is to allow the use of the gcc runtime, which is > >> a library gcc links to your code when you need to produce a program > >> which runs. AFAICT, if you replaced the gcc runtime with something > >> else, or you just used the object files compiled by gcc (no linking), > >> you wouldn't need this exception. > > > Yes, but there is also the issue of header files, which also create a > > derived work. To avoid being a derived work, your code also couldn't > > use any header files that come with GCC (stdio.h, math.h, etc.) > > >> And note that this applies just to the binary; in general, when you > >> compile source code against a library, it is considered that you > >> produce a derivative work in so far you use (a) header files (b) > >> linking data from the libraries. But it's not clear to me that the > >> original *source code* can be considered a derivative in any way... > > >> In the case of sage/python code, there's no compilation... it doesn't > >> look like writing a python/sage script would constitute a derivative > >> work of python or sage, so far as you don't distribute *.pyc files... > >> I guess somebody could argue that using "import" statements, or > >> published APIs can be considered "derivative work" as linking is, but > >> it sounds strange... > > > The logic end of this argument is that the GPL is meaningless for > > interpreted languages. But clearly, that is not the case. Sage does > > have compiled extension modules that get loaded dynamically when you > > run a python script that imports Sage. Thus, by the FSF > > interpretation, the simple Sage script is a derived work of Sage. > > Obviously everyone understands this differently. But I thought that if > I have a script A: > > ------- > from sage.all import x > print x**2 > ------- > > Then my script has to be GPL, because it is dynamically loading a GPL > library (without any runtime exception) *and* my script doesn't work > without Sage. > > If I however write a script B: > > ------- > sage_present = True > if sage_present: > from sage.all import x > print x**2 > else: > from sympy.abc import x > print x**2 > ------ > > Then my script doesn't have to be GPL, because it also runs when Sage > is not present (and sympy is BSD). > > Am I right or wrong? > > Ondrej --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---