11.2Snia$NetBSD: licensing,v 1.2 2025/12/19 13:03:51 nia Exp $
21.1Snia
31.1SniaNetBSD Licensing
41.1Snia================
51.1Snia
61.1SniaIn an ideal world, the entire of NetBSD should be available under
71.1Sniasimple permissive software licenses. The 2-clause BSD license is
81.1Sniarecommended for new contributions.
91.1Snia
101.1SniaBackground: GPL in base
111.1Snia-----------------------
121.1Snia
131.1SniaIn the 1990s, the BSD developers at CSRG realized their toolchain was
141.1Sniafalling behind alternatives. One of the reasons for this was Sun
151.1Sniachoosing to lock their compiler behind a paywall - as a result, Sun's
161.1Sniausers went out in search of freeware alternatives. They found GNU's GCC,
171.1Sniaand immediately formed a new community around improving it.
181.1SniaEventually, various GNU tools found their way into BSD.
191.1Snia
201.1SniaWe would like to eliminate the use of the GNU General Public License
211.1Sniain the base system. This provides a number of advantages: less worrying
221.1Sniaabout license compatibility, easier sharing of code between NetBSD
231.1Sniacomponents, less likelihood of being sued for redistributing NetBSD
241.1Sniabinaries, less legalese and need for lawyers to interpret it,
251.1Sniaand an overall reduction in GNU info pages.
261.1Snia
271.1SniaAs a general rule, most GPL code in NetBSD provides programs that
281.1Sniaare "nice to have", but not fully essential for a working system,
291.1Sniaso redistributors have an option to remove or replace them.
301.1Snia
311.1SniaFor example, some NetBSD ports can be built using Clang as the
321.1Sniatoolchain instead of GCC (see mk.conf(5), HAVE_LLVM).
331.1Snia
341.1SniaGPL codes lives under the following directories to ensure clean
351.1Sniaseparation:
361.1Snia
371.1Snia* src/external/gpl2
381.1Snia* src/external/gpl3
391.1Snia* src/sys/external/gpl2
401.1Snia
411.1SniaBackground: Advertising clause
421.1Snia------------------------------
431.1Snia
441.1SniaAt some point, Berkeley added the following clause to their license
451.1Sniafor the free parts of BSD UNIX:
461.1Snia
471.1Snia * 3. All advertising materials mentioning features or use of this software
481.1Snia *    must display the following acknowledgement:
491.1Snia *      This product includes software developed by [copyright holder].
501.1Snia
511.1SniaWith time, this clause came to be seen as onerous: there is already
521.1Sniaa requirement to credit copyright holders in the documentation of
531.1Sniaredistributions, and it's very difficult to enforce. At various points,
541.1Sniadistributing NetBSD required including hundreds of "This product
551.1Sniaincludes software developed [...]" statements. It also makes it more
561.1Sniacomplicated to include NetBSD code in projects under other licenses.
571.1Snia
581.1SniaBerkeley removed the advertising clause in 1999, and clarified their
591.1Sniastance against including it in 2012. However, there are lots of
601.1Sniainstances where it has been copy and pasted by other people and
611.1Sniaorganizations. Therefore, its removal from NetBSD is mostly a social
621.1Sniachallenge.
631.1Snia
641.1SniaTechnical priorities
651.1Snia--------------------
661.1Snia
671.1SniaThe directory under external/gpl2 contains several programs that
681.1Sniacould be replaced. Most of them are quite old versions now, chosen
691.1Sniato avoid GPLv3:
701.1Snia
711.1Snia* diffutils - Could be replaced with FreeBSD/OpenBSD diff(1).
721.1Snia* grep - Could be replaced with FreeBSD grep(1). Someone needs to
731.1Snia  compare the performance. Other grep implementations in C likely
741.1Snia  exist. A MKBSDGREP option exists, but the copy is probably old.
751.1Snia* rcs - Supposedly OpenBSD developed a compatible replacement.
761.1Snia* xcvs - Priority for removal as we transition away from CVS.
771.1Snia* groff - Mostly replaced by mandoc(1), although some non-manual use
781.1Snia  cases (e.g. distrib/notes) continue to rely on groff. Optional -
791.1Snia  a MKGROFF option exists. Such files could also be converted to
801.1Snia  plain text.
811.1Snia* send-pr - Part of our infrastructure, but basically optional -
821.1Snia  alternatives like the gnats web interface exist.
831.1Snia* gawk - Needed only by other GNU software?
841.1Snia* gmake - Needed only by other GNU software.
851.1Snia* texinfo - Needed only by other GNU software.
861.1Snia
871.1SniaThe directory under sys/external/gpl2 mainly contains device tree
881.1Sniasources, providing platform definition files for embedded system
891.1Sniaboards. Removing this would break a lot of platforms.
901.1Snia
911.1SniaThe directory under external/gpl3 only contains toolchain-relevant
921.1Sniafiles, and can be mostly avoided with HAVE_LLVM=yes and elftoolchain.
931.1Snia
941.1SniaSocial and legal tasks
951.1Snia----------------------
961.1Snia
971.1SniaA list of advertising clauses that still apply can be found in:
981.1Snia
991.1Snia	src/distrib/notes/common/legal.common
1001.1Snia
1011.1SniaThis file should be kept in sync as copyright holders are contacted.
1021.1Snia
1031.1SniaThere are several high-priority targets for the removal of the
1041.1Sniaadvertising clause:
1051.1Snia
1061.1Snia* Lawrence Berkeley Laboratory advertising clauses are very widespread.
1071.1Snia  It is unclear whether Berkeley granted permission to remove such
1081.1Snia  clauses (FreeBSD apparently think so). Berkeley should be contacted
1091.1Snia  for clarification.
1101.1Snia* Harvard University 4-clauses licenses are widespread, and it's
1111.1Snia  possible someone knows an insider who could accelerate the process
1121.1Snia  of getting permission to fix them.
1131.1Snia* Wasabi Systems copyrights are very widespread in NetBSD. They were
1141.1Snia  "the NetBSD company" of their time. It is unclear who currently owns
1151.1Snia  Wasabi Systems' intellectual property. Someone should figure this out,
1161.1Snia  or we should use Foundation funds to acquire it.
1171.2Snia* 4-clause BSD licenses are also found in the tree belonging to
1181.2Snia  Cisco (primarily in SCTP code) and Intel (primarily in ia64 code).
1191.2Snia  These are huge corporations with publicly contactable legal
1201.2Snia  departments. It's also possible someone knows an insider who could
1211.2Snia  accelerate the process.
1221.1Snia
1231.1SniaOtherwise, the social and legal tasks mostly involve trying to find
1241.1Sniaold contributors' current email addresses, and asking them for
1251.1Sniapermission to relicense. This strategy has been somewhat successful,
1261.1Sniaand should be completed before doing so is no longer possible.
127