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