Do I have to distribute my source code if I distribute CEF/Chromium commercially?

932 views
Skip to first unread message

Eric Cho

unread,
Jan 18, 2017, 1:44:09 AM1/18/17
to Chromium-discuss
There are a lot of third party libraries that Chromium builds with that fall under the GPL license. Does this mean that I have to release my application's source code if I distribute CEF/Chromium?

PhistucK

unread,
Jan 18, 2017, 1:51:08 AM1/18/17
to eric...@trivantis.com, Chromium-discuss
This is not a legal group, so this is out of scope here.

(Though you can look for other Chromium or Chromium Embedded Framework based browsers and applications and see if they released their source code. I do not see the code for Yandex Browser, for example. My hunch is that you have to release GPL-licensed source code only if you modified a piece of code that is GPL-licensed.)


PhistucK

On Tue, Jan 17, 2017 at 6:52 PM, Eric Cho <eric...@trivantis.com> wrote:
There are a lot of third party libraries that Chromium builds with that fall under the GPL license. Does this mean that I have to release my application's source code if I distribute CEF/Chromium?

--
--
Chromium Discussion mailing list: chromium...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-discuss

---
You received this message because you are subscribed to the Google Groups "Chromium-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-discuss+unsubscribe@chromium.org.

Torne (Richard Coles)

unread,
Jan 18, 2017, 8:16:24 AM1/18/17
to phis...@gmail.com, eric...@trivantis.com, Chromium-discuss
Note: there are likely *additional* license terms you need to consider other than the one I explain below, but this one is often overlooked and PhistucK's response is incorrect about how the GPL/LGPL works.

WebKit is licensed under the LGPL, and Chromium includes code derived from WebKit. This means that you have to abide by WebKit's LGPL terms as part of distributing chromium. One of the terms this includes is that it must be possible for someone to rebuild your binary with a modified version of the code covered by the LGPL, which means that at a minimum, you need to provide the source code for the LGPLed portion *and* a mechanism for someone to rebuild your final binary with changes to that portion. One way to accomplish this is to provide your non-open-source code as a precompiled static library and a modified set of build scripts that link in the static library when building the open source parts. (Chrome for Android used to do this, until we fully upstreamed and open sourced all the native code used). Another way is to make the LGPLed part a dynamic library and have the closed source binary load it.

The third party libraries in the source tree that are under the full GPL (rather than the LGPL like WebKit) are, generally, not actually included in the shipping binary; they're used at build time, or in test code, or other ways. For the libraries that are used in this way, their licenses do not affect the license of the shipping binary. If any GPL code was in the binary, you would in fact have to provide the entire source code for that binary, even if you had not modified the GPLed portions; that's the entire point of the GPL (but the LGPL specifically modifies this requirement).

This is not a conclusive overview of the licenses in Chromium and you should not assume this is sufficient. There are a large number of different licenses used for different components and you must abide by all the terms of all the licenses that cover code that is distributed as part of your binary.

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-discu...@chromium.org.

PhistucK

unread,
Jan 18, 2017, 11:52:27 AM1/18/17
to Torne (Richard Coles), Eric Cho, Chromium-discuss
Interesting, but I thought Chrome includes some non-open-source code in chrome.exe, chrome.dll or chrome_child.dll - am I mistaken?
Or since Chromium can be built without the non-open-source code, but still include the exact same modifications to LGPL code, then it complies?
And also, does that mean that Yandex are not complying with the license (there is no source code release of which I am aware)?


PhistucK

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-discuss+unsubscribe@chromium.org.

Torne (Richard Coles)

unread,
Jan 18, 2017, 12:07:50 PM1/18/17
to PhistucK, Eric Cho, Chromium-discuss
On Wed, 18 Jan 2017 at 16:52 PhistucK <phis...@gmail.com> wrote:
Interesting, but I thought Chrome includes some non-open-source code in chrome.exe, chrome.dll or chrome_child.dll - am I mistaken?

You can see the things that are conditional on the Chrome branding in the chromium tree: there's a number of resources/assets/plugins/other files that are referenced that don't exist in the open source tree, but those aren't compiled into the binary. Chrome is not a fork of chromium; it's just a bunch of *additional* files that we check out alongside the open source tree.

This is why Chrome for Android used to have to do the additional work to release the closed source parts as a static library - because at the time, the Android version specifically *was* a fork of the open source repo, but we've resolved that now and no longer do.
 
Or since Chromium can be built without the non-open-source code, but still include the exact same modifications to LGPL code, then it complies?

That would not be sufficient to comply with the LGPL. The purpose of this LGPL requirement is to give users of the software the freedom to modify the LGPLed parts and use their modified version with the final program; just having the LGPL'ed code available to use in a different program is not sufficient.
 
And also, does that mean that Yandex are not complying with the license (there is no source code release of which I am aware)?

That would be a question for Yandex; I've never looked at it and don't wish to comment or speculate about someone else's product.
 

PhistucK

On Wed, Jan 18, 2017 at 3:16 PM, Torne (Richard Coles) <to...@chromium.org> wrote:
Note: there are likely *additional* license terms you need to consider other than the one I explain below, but this one is often overlooked and PhistucK's response is incorrect about how the GPL/LGPL works.

WebKit is licensed under the LGPL, and Chromium includes code derived from WebKit. This means that you have to abide by WebKit's LGPL terms as part of distributing chromium. One of the terms this includes is that it must be possible for someone to rebuild your binary with a modified version of the code covered by the LGPL, which means that at a minimum, you need to provide the source code for the LGPLed portion *and* a mechanism for someone to rebuild your final binary with changes to that portion. One way to accomplish this is to provide your non-open-source code as a precompiled static library and a modified set of build scripts that link in the static library when building the open source parts. (Chrome for Android used to do this, until we fully upstreamed and open sourced all the native code used). Another way is to make the LGPLed part a dynamic library and have the closed source binary load it.

The third party libraries in the source tree that are under the full GPL (rather than the LGPL like WebKit) are, generally, not actually included in the shipping binary; they're used at build time, or in test code, or other ways. For the libraries that are used in this way, their licenses do not affect the license of the shipping binary. If any GPL code was in the binary, you would in fact have to provide the entire source code for that binary, even if you had not modified the GPLed portions; that's the entire point of the GPL (but the LGPL specifically modifies this requirement).

This is not a conclusive overview of the licenses in Chromium and you should not assume this is sufficient. There are a large number of different licenses used for different components and you must abide by all the terms of all the licenses that cover code that is distributed as part of your binary.
On Wed, 18 Jan 2017 at 06:51 PhistucK <phis...@gmail.com> wrote:
This is not a legal group, so this is out of scope here.

(Though you can look for other Chromium or Chromium Embedded Framework based browsers and applications and see if they released their source code. I do not see the code for Yandex Browser, for example. My hunch is that you have to release GPL-licensed source code only if you modified a piece of code that is GPL-licensed.)


PhistucK

On Tue, Jan 17, 2017 at 6:52 PM, Eric Cho <eric...@trivantis.com> wrote:
There are a lot of third party libraries that Chromium builds with that fall under the GPL license. Does this mean that I have to release my application's source code if I distribute CEF/Chromium?

--
--
Chromium Discussion mailing list: chromium...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-discuss

---
You received this message because you are subscribed to the Google Groups "Chromium-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-discu...@chromium.org.

PhistucK

unread,
Jan 18, 2017, 12:19:58 PM1/18/17
to Torne (Richard Coles), Eric Cho, Chromium-discuss
1. chrome.exe of Chromium does not contain the Google Chrome logo as an embedded icon (which Chrome does include), for example. Does that mean that I cannot recreate the same resulting binary? If so, does that still comply with those license terms?
2. If I build Chromium with the Google branding (thus creating the exact binary, minus optimizations perhaps), will it build? I think it depends on a bunch of files, last time I tried, that caused errors to be thrown during the build.


PhistucK

 

PhistucK

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-discuss+unsubscribe@chromium.org.

Torne (Richard Coles)

unread,
Jan 18, 2017, 12:45:11 PM1/18/17
to PhistucK, Eric Cho, Chromium-discuss
On Wed, 18 Jan 2017 at 17:19 PhistucK <phis...@gmail.com> wrote:
1. chrome.exe of Chromium does not contain the Google Chrome logo as an embedded icon (which Chrome does include), for example. Does that mean that I cannot recreate the same resulting binary? If so, does that still comply with those license terms?

I don't know how that works, sorry; binaries on Linux don't have embedded icons :)

I presume it's possible to extract the icon and apply it to your own binary, though.
 
2. If I build Chromium with the Google branding (thus creating the exact binary, minus optimizations perhaps), will it build? I think it depends on a bunch of files, last time I tried, that caused errors to be thrown during the build.

It enables a number of things that depend on the additional files (resources etc), and so it won't succeed as-is. You would have to unpick which parts of the build configuration affect the contents of the binary from which parts do not.
 


PhistucK

 

PhistucK

To unsubscribe from this group and stop receiving emails from it, send an email to chromium-discu...@chromium.org.

Reply all
Reply to author
Forward
0 new messages