Open Source Licensing Rules/Requirements

Last post
21 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If I create a library (completely written by me) that is compiled with avr-gcc, can I sell that library for profit? Actually, the software would be bundled into a larger product deliverable, including hardware and other items. Would it be fair practice and/or a license violation to increase the price of the deliverable due to included code libraries?

How does the fact that it was compiled with an open source compiler impact things?

Do I need to have disclaimers, etc.?

Where is a good source of information for these questions?

“Science is not consensus. Science is numbers.”

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

IANAL but the fact that the entire Apple OS X is compiled with an open source compiler should give a hint.

The Dark Boxes are coming.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If you were not able to sell code compiled by avr-gcc, it would make avr-gcc pretty useless for writing commercial code, wouldn't it?

Regards,
Steve A.

The Board helps those that help themselves.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
If I create a library (completely written by me) that is compiled with avr-gcc, can I sell that library for profit? Actually, the software would be bundled into a larger product deliverable, including hardware and other items. Would it be fair practice and/or a license violation to increase the price of the deliverable due to included code libraries?

If you are compiling source code that belongs to you, the output of the compile phase is object code that also belongs to you. See the FSF's explanation:

http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF

The output of the link phase is a bit more complicated, as linking may pull in additional libraries that have copyright restrictions on them. Since you plan to distribute a library, this does probably doesn't apply to you.

Quote:
Where is a good source of information for these questions?

Speak to your lawyer.

- S

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

avr-libc: Good to go.
Ref. Debian avr-libc copyright
avr-gcc: Read your compiler's copyright statement.
If GPL, no go for proprietary (ref.: Debian avr-gcc copyright).
If otherwise, maybe; IIRC, good to go if using WinAVR or Atmel AVR toolchain due to that instance's AVR libgcc copyright.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for the answers. I will read the information at the reference link, and will also consult a lawyer...

“Science is not consensus. Science is numbers.”

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The license of the compiler itself (i.e. AVR GCC) has no bearing on the code that it compiles.

However, you need to be aware of what other code gets linked into your application.

As mentioned above avr-libc provides a Standard C library where, often-times, functions from that library will be linked into your application. The license for avr-libc is the 3-clause BSD license:
http://www.opensource.org/licenses/BSD-3-Clause

It's pretty straight-forward and you can easily link it in to your application, and keep your application private.

AVR GCC also has a library of low-level functions, called libgcc. The license for libgcc is the GPL but with a "linking exception" clause.

Quote:

Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.

Here's more information about linking exceptions:
http://en.wikipedia.org/wiki/GPL_linking_exception

Basically, the linking exception says that the libgcc code itself is under GPL, but when you link libgcc to your application, your application code is NOT under the GPL. The reason for this is that if you change the code in libgcc, then the changed code is still GPL, but it does not affect your application.

Please realize that I am not a lawyer, and this should not be construed as legal advice. I'm just describing my experience in working with these licenses. If you have concerns, then I suggest you consult a *competent* lawyer who has experience in software licensing and copyright.

Hope this helps.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

One company I worked for used GCC but went conservative w.r.t. the license (bought GCC maintenance). The only AVR GCC I'm aware of that has maintenance for sale is from AdaCore (languages C and Ada).

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A maintenance contract for GCC will benefit you, for example, if you discover a bug or shortcoming in your compiler, and your business needs to know that you have some 3rd party you can turn to, who will assist you in overcoming such problems within some contractually guaranteed timeframe.

I don't think, however, that any such maintenance contract would normally have any impact (either positive or negative) on your ability to claim ownership of the compiler's output, nor would it normally have any impact (either positive or negative) on the range of licenses you are permitted to apply to that output.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Correct. Just because one buys maintenance, does not change the license of the compiler. And again, the license of the compiler itself does not change the license of the code that is being compiled. The only time the license of the compiler has any bearing on the matter is if you decide to make changes to the compiler yourself (which is extremely rare) or if you decide to redistribute the compiler to other parties (again, rare).

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Traditionally, the Gnu licenses are annoying inapplicable to deeply embedded systems. Especially as applied to libraries. Companies have done things like write their own "clean" versions of libc and/or libgcc to (try to) avoid issues.

avr-libc is good. The compiler is good. libgcc is the least good, but has stated intent to allow proprietary programs to be produced, via the "linking exception." Third party libraries may be a problem, because people tend to throw GPL at them without understanding the implications. The Arduino libraries are pretty much a mess, for example. But the stated intent is to allow for-profit executables, which is good enough for me. (If your company can afford lawyers, you should probably ask them.)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

GCC Runtime Library Exception Rationale and FAQ

EW wrote:
Correct. Just because one buys maintenance, does not change the license of the compiler.
Possibly not all library licenses have been changed to have this exception; maybe AdaCore's libraries are one of these:
Technology Comparison Chart
GNAT GPL Edition FAQ, Licensing

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

lfmorrison wrote:
A maintenance contract for GCC will benefit you, for example, if you discover a bug or shortcoming in your compiler, and your business needs to know that you have some 3rd party you can turn to, who will assist you in overcoming such problems within some contractually guaranteed timeframe.
Some GCC vendors also run C verification, validation, and regression tests on GCC for value addition.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Valid observations -- apparently the Ada back-end of GCC (or, at least the AdaCore distribution of GCC) has mandatory dependencies on 3rd-party libraries that are not under the direct control of the GNU project. Any such libraries would, of course, be licensed at the discretion of those 3rd-party maintainers.

But any code that is taken directly from the official GNU version of libgcc will always have the runtime exemption included. It's just that the exact language of the exemption has changed over the years. However, the most recent iteration of the exemption may not yet have filtered through to every portion of the compiler.

In the GNU project's opinion: "Nobody who is currently using GCC should be affected by this change."
(source: The GNU source you've already cited)
In other words:

1) Everybody who is currently using a version of GCC taken directly from the GNU project is already protected by previsions iterations of the exemption which have the same overall intent, albeit potentially worded differently and designed to be compatible with different versions of the GPL.

2) On the other hand, anybody who is using a 3rd party distribution of GCC which uses a complete replacement of the runtime library (such as, apparently, AdaCore's distribution), will continue to be subject to that 3rd party's own specific library licensing requirements.

In either case, the change to the runtime linking exemption to make it compatible with GPLv3 doesn't necessarily change anything.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

westfw wrote:
Third party libraries may be a problem, because people tend to throw GPL at them without understanding the implications.

That is so true. One egregious example is Pascal Stang's library (avrlib) which seems to be popular with a number of users here, as well as users on the various avr mailing lists. His library is GPL. So it's all but useless for a commercial system.

westfw wrote:

The Arduino libraries are pretty much a mess, for example. But the stated intent is to allow for-profit executables, which is good enough for me. (If your company can afford lawyers, you should probably ask them.)

I'm working with the Arduino team regarding their licensing. Unfortunately they have chosen LGPL as their license, which is completely inappropriate for statically-linked libraries (like the Arduino libs). I've pointed this out, and made a suggestion on how to change the library license to keep the library free, but allow use in commercial applications. It's a work-in-process. :wink: But I wouldn't make a big deal about it just yet on the Arduino forums or mailing lists.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Eric (and others), thanks again for the input. Suffice to say I cannot envision a single instance where I would EVER adjust the compiler code itself. I am first and foremost a hw engineer. I may be more familiar than I would like with the software side of things, but compilers are still to be viewed as dark art... :shock:

I am still reviewing the references provided and consulting with my attorney. Perhaps I shouldn't tell my joke comparing a group of skydiving attorneys to skeet....

“Science is not consensus. Science is numbers.”

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

EW wrote:
westfw wrote:
Third party libraries may be a problem, because people tend to throw GPL at them without understanding the implications.

That is so true. One egregious example is Pascal Stang's library (avrlib) which seems to be popular with a number of users here, as well as users on the various avr mailing lists. His library is GPL. So it's all but useless for a commercial system.

Egregious is a strong adjective but some creators have a strong need, want, or desire to limit use of their creation in commercial and such products, and/or, to foster growth of open and free(dom) software. GPL is one of likely several ways to do this. Some compilers, RTOSs, libraries, etc. have dual licensing.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

hobbss wrote:
Suffice to say I cannot envision a single instance where I would EVER adjust the compiler code itself.
Here's one:
A GCC variant's run-time had a timing issue in an application I was working on (a relationship between calendar time and clock time). Due to having the required, per license, source code available, was able to create a proposed solution and a test for it. These ware delivered to that GCC variant's creator.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

gchapman wrote:
Egregious is a strong adjective but some creators have a strong need, want, or desire to limit use of their creation in commercial and such products, and/or, to foster growth of open and free(dom) software. GPL is one of likely several ways to do this. Some compilers, RTOSs, libraries, etc. have dual licensing.

Ok, you're right, 'egregious' might be too strong a word. I meant it in the sense that it is such a popular library, but most users are completely unaware of the licensing, that a number of us have had to constantly warn people about the licensing. That is what I meant by 'egregious example'.

I have no problem if people want to license their stuff with the GPL to promote software freedom and usage. The problem seems to be more one of ignorance by the end user of the license itself and what it means to them and their application.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
some creators have a strong need, want, or desire to limit use of their creation in commercial and such products...

GPL doesn't prevent commercial use; it prevents use in closed source products. (Hmm. IS there a GPL variant that prevents use in commercial software? I guess some of the CC licenses would do it... And I guess GPL 3 has restrictions on linking with "morally inferior" software, or something like that.)

LGPL doesn't prevent commercial use OR use in closed source products, but you're supposed to provide the product in a form that is linkable with new versions of the code convered by the LGPL license (which is a bit of a problem if your product is a chip.) (and of course, a pre-link version of your proprietary code may reveal more about it than you wanted.)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

westfw wrote:

GPL doesn't prevent commercial use; it prevents use in closed source products.

Technically true. But in real-life you'll be hard-pressed to find someone that manufacturers a completely open source embedded system. It's so rare that the numbers are in the noise.