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