Home | History | Annotate | Line # | Download | only in roadmaps
licensing revision 1.1
      1  1.1  nia $NetBSD: licensing,v 1.1 2025/11/27 17:29:10 nia Exp $
      2  1.1  nia 
      3  1.1  nia NetBSD Licensing
      4  1.1  nia ================
      5  1.1  nia 
      6  1.1  nia In an ideal world, the entire of NetBSD should be available under
      7  1.1  nia simple permissive software licenses. The 2-clause BSD license is
      8  1.1  nia recommended for new contributions.
      9  1.1  nia 
     10  1.1  nia Background: GPL in base
     11  1.1  nia -----------------------
     12  1.1  nia 
     13  1.1  nia In the 1990s, the BSD developers at CSRG realized their toolchain was
     14  1.1  nia falling behind alternatives. One of the reasons for this was Sun
     15  1.1  nia choosing to lock their compiler behind a paywall - as a result, Sun's
     16  1.1  nia users went out in search of freeware alternatives. They found GNU's GCC,
     17  1.1  nia and immediately formed a new community around improving it.
     18  1.1  nia Eventually, various GNU tools found their way into BSD.
     19  1.1  nia 
     20  1.1  nia We would like to eliminate the use of the GNU General Public License
     21  1.1  nia in the base system. This provides a number of advantages: less worrying
     22  1.1  nia about license compatibility, easier sharing of code between NetBSD
     23  1.1  nia components, less likelihood of being sued for redistributing NetBSD
     24  1.1  nia binaries, less legalese and need for lawyers to interpret it,
     25  1.1  nia and an overall reduction in GNU info pages.
     26  1.1  nia 
     27  1.1  nia As a general rule, most GPL code in NetBSD provides programs that
     28  1.1  nia are "nice to have", but not fully essential for a working system,
     29  1.1  nia so redistributors have an option to remove or replace them.
     30  1.1  nia 
     31  1.1  nia For example, some NetBSD ports can be built using Clang as the
     32  1.1  nia toolchain instead of GCC (see mk.conf(5), HAVE_LLVM).
     33  1.1  nia 
     34  1.1  nia GPL codes lives under the following directories to ensure clean
     35  1.1  nia separation:
     36  1.1  nia 
     37  1.1  nia * src/external/gpl2
     38  1.1  nia * src/external/gpl3
     39  1.1  nia * src/sys/external/gpl2
     40  1.1  nia 
     41  1.1  nia Background: Advertising clause
     42  1.1  nia ------------------------------
     43  1.1  nia 
     44  1.1  nia At some point, Berkeley added the following clause to their license
     45  1.1  nia for the free parts of BSD UNIX:
     46  1.1  nia 
     47  1.1  nia  * 3. All advertising materials mentioning features or use of this software
     48  1.1  nia  *    must display the following acknowledgement:
     49  1.1  nia  *      This product includes software developed by [copyright holder].
     50  1.1  nia 
     51  1.1  nia With time, this clause came to be seen as onerous: there is already
     52  1.1  nia a requirement to credit copyright holders in the documentation of
     53  1.1  nia redistributions, and it's very difficult to enforce. At various points,
     54  1.1  nia distributing NetBSD required including hundreds of "This product
     55  1.1  nia includes software developed [...]" statements. It also makes it more
     56  1.1  nia complicated to include NetBSD code in projects under other licenses.
     57  1.1  nia 
     58  1.1  nia Berkeley removed the advertising clause in 1999, and clarified their
     59  1.1  nia stance against including it in 2012. However, there are lots of
     60  1.1  nia instances where it has been copy and pasted by other people and
     61  1.1  nia organizations. Therefore, its removal from NetBSD is mostly a social
     62  1.1  nia challenge.
     63  1.1  nia 
     64  1.1  nia Technical priorities
     65  1.1  nia --------------------
     66  1.1  nia 
     67  1.1  nia The directory under external/gpl2 contains several programs that
     68  1.1  nia could be replaced. Most of them are quite old versions now, chosen
     69  1.1  nia to avoid GPLv3:
     70  1.1  nia 
     71  1.1  nia * diffutils - Could be replaced with FreeBSD/OpenBSD diff(1).
     72  1.1  nia * grep - Could be replaced with FreeBSD grep(1). Someone needs to
     73  1.1  nia   compare the performance. Other grep implementations in C likely
     74  1.1  nia   exist. A MKBSDGREP option exists, but the copy is probably old.
     75  1.1  nia * rcs - Supposedly OpenBSD developed a compatible replacement.
     76  1.1  nia * xcvs - Priority for removal as we transition away from CVS.
     77  1.1  nia * groff - Mostly replaced by mandoc(1), although some non-manual use
     78  1.1  nia   cases (e.g. distrib/notes) continue to rely on groff. Optional -
     79  1.1  nia   a MKGROFF option exists. Such files could also be converted to
     80  1.1  nia   plain text.
     81  1.1  nia * send-pr - Part of our infrastructure, but basically optional -
     82  1.1  nia   alternatives like the gnats web interface exist.
     83  1.1  nia * gawk - Needed only by other GNU software?
     84  1.1  nia * gmake - Needed only by other GNU software.
     85  1.1  nia * texinfo - Needed only by other GNU software.
     86  1.1  nia 
     87  1.1  nia The directory under sys/external/gpl2 mainly contains device tree
     88  1.1  nia sources, providing platform definition files for embedded system
     89  1.1  nia boards. Removing this would break a lot of platforms.
     90  1.1  nia 
     91  1.1  nia The directory under external/gpl3 only contains toolchain-relevant
     92  1.1  nia files, and can be mostly avoided with HAVE_LLVM=yes and elftoolchain.
     93  1.1  nia 
     94  1.1  nia Social and legal tasks
     95  1.1  nia ----------------------
     96  1.1  nia 
     97  1.1  nia A list of advertising clauses that still apply can be found in:
     98  1.1  nia 
     99  1.1  nia 	src/distrib/notes/common/legal.common
    100  1.1  nia 
    101  1.1  nia This file should be kept in sync as copyright holders are contacted.
    102  1.1  nia 
    103  1.1  nia There are several high-priority targets for the removal of the
    104  1.1  nia advertising clause:
    105  1.1  nia 
    106  1.1  nia * Lawrence Berkeley Laboratory advertising clauses are very widespread.
    107  1.1  nia   It is unclear whether Berkeley granted permission to remove such
    108  1.1  nia   clauses (FreeBSD apparently think so). Berkeley should be contacted
    109  1.1  nia   for clarification.
    110  1.1  nia * Harvard University 4-clauses licenses are widespread, and it's
    111  1.1  nia   possible someone knows an insider who could accelerate the process
    112  1.1  nia   of getting permission to fix them.
    113  1.1  nia * Wasabi Systems copyrights are very widespread in NetBSD. They were
    114  1.1  nia   "the NetBSD company" of their time. It is unclear who currently owns
    115  1.1  nia   Wasabi Systems' intellectual property. Someone should figure this out,
    116  1.1  nia   or we should use Foundation funds to acquire it.
    117  1.1  nia * 4-clause BSD licenses are also found in the tree belonging to Microsoft
    118  1.1  nia   (primarily in arm code), Cisco (primarily in SCTP code), and Intel
    119  1.1  nia   (primarily in ia64 code). These are huge corporations with publicly
    120  1.1  nia   contactable legal departments. It's also possible someone knows an
    121  1.1  nia   insider who could accelerate the process.
    122  1.1  nia 
    123  1.1  nia Otherwise, the social and legal tasks mostly involve trying to find
    124  1.1  nia old contributors' current email addresses, and asking them for
    125  1.1  nia permission to relicense. This strategy has been somewhat successful,
    126  1.1  nia and should be completed before doing so is no longer possible.
    127