Hi all,

I'm working on verifying licenses and copyrights, etc, in Apache Kudu
(incubating). There is one area I wanted to confirm the right way to
document in our LICENSE/NOTICE files:

Kudu makes use of a lot of open source utility code borrowed from (or
adapted from) other open source projects. In particular, we've borrowed a
lot of code from Chromium's "base" module[1] which is licensed under a BSD
3-clause license[2]. We also have some code from Google Supersonic[3]
licensed under the Apache License[4]. The majority of this borrowed code is
under a 'gutil' directory in the Kudu tree[5]. We also have some small
amounts of code borrowed from LevelDB under the BSD license[6].

Given that all of the borrowed code is under the Apache or BSD licenses,
the inclusion of the code is completely allowable under the license terms.
The only question is the best way to document the inclusion to best follow
established ASF practices. My understanding is that we should:

1) Maintain the original copyright notices and license headers in the files.
2) In the cases that we've made non-trivial changes to the source, we
should additionally add the ASF copyright notice at the top of the file,
and amend the original copyright statement with the words "Some portions"
as we've done for example in cache.cc[7].
3) In all files (regardless of whether we've made changes), we should add
the Apache license header above any existing license headers, while
maintaining the existing one.
4) In the LICENSE file, we should make note of the included code and its
copyrights as we have done here[8].

I'm aware that there is a notion that Apache projects should ask for
permission to borrow code rather than forking communities. However, this is
all very generic utility code with no standalone project community or
releases. In fact, many of these files can already be found copy-pasted
into many different open source projects beyond just Chromium or LevelDB.
So, I don't think there are any viable alternatives to copy-pasting.

Thanks
-Todd

[1] https://chromium.googlesource.com/chromium/src/base/+/master/
[2] https://chromium.googlesource.com/chromium/src/+/master/LICENSE
[3] https://github.com/google/supersonic
[4] https://github.com/google/supersonic/blob/master/LICENSE
[5] https://github.com/cloudera/kudu/tree/master/src/kudu/gutil
[6] https://github.com/google/leveldb/blob/master/LICENSE
[7] https://github.com/cloudera/kudu/blob/master/src/kudu/util/cache.cc#L15
[8] https://github.com/cloudera/kudu/blob/master/LICENSE.txt#L205

Reply via email to