Bug 1389708

Summary: Are Hangouts/Widevine open source?
Product: [Fedora] Fedora Reporter: Nikos Roussos <comzeradd>
Component: chromiumAssignee: Tom "spot" Callaway <tcallawa>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: nb, tcallawa, yaneti
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-10-28 14:01:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Nikos Roussos 2016-10-28 09:42:31 UTC
This more of a question than a bug. 

I noticed we build it with "enable_hangout_services_extension=true" and "enable_widevine=true". Are we sure these doesn't pull any proprietary Google library?

Thanks

Comment 1 Tom "spot" Callaway 2016-10-28 14:01:44 UTC
Okay, lets look at what this does.

1) "enable_hangout_services_extension"
This option is described this way:
"Hangout services is an extension that adds extra features to Hangouts."
If true, this sets the define: ENABLE_HANGOUT_SERVICES_EXTENSION=1

That define results in the following code changes:

A) chrome/browser/extensions/component_loader.cc adds the "hangout_services" directory and attempts to add/load any components found inside it.
B) chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc enables an additional test to use the "hangout_services" component
C) chrome/browser/extensions/component_extensions_whitelist/whitelist.cc adds the "hangout_services" component to the whitelist
D) chrome/browser/resources/component_extension_resources.grd adds these files to the components include list: hangout_services/background.html hangout_services/thunk.js

Now, we look in ./chrome/browser/resources/hangout_services. Here we find background.html, manifest.json, OWNERS, and thunk.js. background.html just loads thunk.js, but is BSD licensed. thunk.js is BSD licensed javascript that hooks into the webrtc code (already built as part of Chromium) into hangouts. 

There are no proprietary libraries pulled in here. I know it's a little confusing, but if you look through this bug report, you can see some of the reasons why: https://bugs.chromium.org/p/chromium/issues/detail?id=416856

2) "enable_widevine"
This option is described this way:
"Allow widevinecdmadapter to be built in Chromium."

If it is enabled, and the code is not branded for Google Chrome, it builds a "stub" widevinecdmadapter. The actual widevinecdmadapter is proprietary, and only shipped with Google Chrome, however, with this stub enabled, the widevinecdm*.so files from Chrome can be dropped into the Chromium directory, and (in theory) work. In practice, this doesn't seem to work so well, but it doesn't hurt us to enable the stub, so we do so.

Chromium doesn't try to download the proprietary widevine*.so bits, the user has to manually copy them in place.

Comment 2 Nikos Roussos 2016-10-28 15:32:51 UTC
Thanks! That was very informative.