3

I want to distribute a MATLAB package I've made which makes use of some work which is made available under the Apache 2.0 license.

The piece of work I'm using is ColorBrewer, which consists of several curated colour palettes. I am repackaging these colormaps so they have a MATLAB interface, along with the additional feature of interpolating them to make colormaps with arbitrarily many colours.

ColorBrewer is available under this LICENSE.txt, which includes some additional requirements on top of the Apache license. I include their LICENSE.txt file here, verbatim.

Apache-Style Software License for ColorBrewer software and ColorBrewer Color
Schemes

Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State
University.

Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions as source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes color
specifications and designs developed by Cynthia Brewer
(http://colorbrewer.org/)." Alternately, this acknowledgment may appear in the
software itself, if and wherever such third-party acknowledgments normally
appear.

4. The name "ColorBrewer" must not be used to endorse or promote products
derived from this software without prior written permission. For written
permission, please contact Cynthia Brewer at cbrewer@psu.edu.

5. Products derived from this software may not be called "ColorBrewer", nor
may "ColorBrewer" appear in their name, without prior written permission of
Cynthia Brewer.

None of their distributions come with a NOTICE file (or infact a copy of the Apache 2.0 license, which it is supposed to).

Having neither licensed under Apache 2.0 before, nor released a derivative work, I have a couple of questions about what I need to include in my package to be compliant.

Since it is only RGB values and not code which I am taking from ColorBrewer and Apache 2.0 is not copyleft, could I distribute my code under a different license, whilst indicating the Apache 2.0 applies to the RGB values? NB: These values will be contained in their own file.

Where should I include the boilerplate content (with current year and my name):

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
  • in a NOTICE file?
  • in README.md?
  • in every .m source file?
  • in the docstring which will be returned to the user with help PACKAGE?

Where should I place Cynthia Brewer, et al.'s boilerplate and extra distribution conditions? It certainly can't continue to be called LICENSE.txt, since I have to include the full Apache 2.0 license in a file called LICENSE to be compliant with its terms!

  • in NOTICE? This seems to me to be in the spirit of Apache 2.0.
  • everywhere I include my own boilerplate?
  • in README.md?

Note that the code will be distributed in source form, but it is possible that somebody could turn it into a binary (.mex) file in the future.

2

[...] could I distribute my code under a different license, whilst indicating the Apache 2.0 applies to the RGB values?

Yes. Some licenses may be incompatible with the Apache-2.0 but very few. The FSF considers the GPL-2.0 incompatible and the GPL-3.0 compatible for instance.

Where should I include the boilerplate content (with current year and my name):

in a NOTICE file?

Yes.

in README.md?

Yes, this is a good place. This counts as end-user documentation

in every .m source file?

Yes, but only for every source file originally Apache-licensed or your own files that you license with an Apache license

in the docstring which will be returned to the user with help PACKAGE?

Yes, this is a good place. This counts as end-user documentation.

Where should I place Cynthia Brewer, et al.'s boilerplate and extra distribution conditions? It certainly can't continue to be called LICENSE.txt, since I have to include the full Apache 2.0 license in a file called LICENSE to be compliant with its terms!

This is a minor inconsistency of the Apache license. Calling it LICENSE.apache-2.0 or something similar would be fine IMHO.

in NOTICE? This seems to me to be in the spirit of Apache 2.0. everywhere I include my own boilerplate?

Well only for code that would be originally Apache-licensed. Not everywhere. Unless you release it all under and Apache license (which might be simpler ;) )

in README.md?

Yes, this is a good place. This counts as end-user documentation.

As a side note, the ColorBrewer license is a tad funny as it mixes an Apache 2.0 notice and statement of license with the partial terms of an Apache 1.1 license...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.