xref: /illumos-gate/usr/src/README.license-files (revision ead1f93e)
1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or http://www.opensolaris.org/os/licensing.
10# See the License for the specific language governing permissions
11# and limitations under the License.
12#
13# When distributing Covered Code, include this CDDL HEADER in each
14# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15# If applicable, add the following below this CDDL HEADER, with the
16# fields enclosed by brackets "[]" replaced with your own identifying
17# information: Portions Copyright [yyyy] [name of copyright owner]
18#
19# CDDL HEADER END
20#
21#
22# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23# Use is subject to license terms.
24#
25
26OK, so you've got approval to integrate code, and you want to know how to
27properly communicate the license terms.  What do you do next?
28
290. Determine whether your code should be covered by Sun copyright,
30   CDDL, and/or a third party license.  If only Sun copyright and/or
31   CDDL, then skip to step 4.
32
331. Scan the source code and extract all of the third party licenses
34   into one or more separate files.
35
36   A. In general, you'll name these files "THIRDPARTYLICENSE," and
37      you'll put one in each source directory (i.e. one per library,
38      or one per command, or one per kernel module.)
39
40      EXAMPLE: usr/src/uts/common/io/pcan/THIRDPARTYLICENSE
41
42      If this file proves unmanageable, or you're adding licenses
43      that really are independent of each other, you may instead
44      create multiple "THIRDPARTYLICENSE.foo" files, where "foo"
45      obviously corresponds to the license in question.
46
47      EXAMPLE: usr/src/lib/libsmbfs/smb/THIRDPARTYLICENSE.*
48
49   B. If you planned ahead and included graceful delimiters in your
50      source code, the THIRDPARTYLICENSE files may actually be build
51      targets in your Makefiles.
52
53      EXAMPLE: usr/src/cmd/perl/Makefile
54
55      This approach is usually overkill.  But if the third party license
56      will remain unchanged while the corresponding copyright will change
57      dates frequently, then this approach can work well, because you won't
58      need to update the license files manually.
59
602. Give each of the license files a corresponding ".descrip" file with
61   an extremely terse explanation of the contents.  Something like
62   "MJN DRIVER" or "PORTIONS OF ARCANE FUNCTIONALITY" is sufficient.
63
64   EXAMPLE: usr/src/cmd/refer/THIRDPARTYLICENSE.descrip
65
663. Edit usr/src/tools/opensolaris/license-list and add the full path
67   of your new license file(s).
68
694. Figure out which packages deliver objects that are built using the
70   new source, and add license actions to the package manifest(s).
71
72   A. It's extremely rare for a package NOT to include a Sun copyright
73      and CDDL.  If your package is one of the 99 percent that should
74      have a Sun copyright and CDDL, then your package should have license
75      actions like this:
76
77	  license lic_CDDL license=lic_CDDL
78	  license cr_Sun license=cr_Sun
79
80   B. If your package delivers ONLY header files, and has multiple different
81      copyrights or licenses, you can use
82
83          license license_in_headers license=license_in_headers
84	  license path/to/most/common/copyright/file license=path/to/most/common/copyright/file
85	  license path/to/most/common/license/file license=path/to/most/common/license/file
86
87   C. For your new license files, the path you use in your license
88      actions should be relative to ${SRC}.
89
90   D. Empty packages: if your package delivers nothing (or, more strictly
91      speaking, nothing besides directories) you should include the Sun
92      copyright but not the CDDL.
93
94   E. As with any other action that is architecture dependent, license
95      actions may be preceded by $(blah_ONLY), where "blah" corresponds
96      to $(uname -p).
97