GPL'd Software in the Base System

One of the ongoing goals for the FreeBSD base system is a migration to more-permissively licensed components. This page aims to summarise the GPL components in the base system, the potential replacements, and the progress.

Sunset Components

The following have no (identified) permissive replacement, or no concrete plan for replacement:

Name

Comment

Ports Impact

gperf

Only needed by GCC

high

libregex 

Used by GNU grep

send-pr

Might be replaced, see Bugtracking/BugRelocationPlan

low/none

texinfo

Not needed once other GNU components are removed

high

These are dependencies of other components, and may be removed when no longer needed. If you know of a possible replacement for any of these please add it in the section below.

Unowned Components

The following have potential replacements but integrating them is not yet planned. If you are looking for a project, please evaluate how feasible the replacement is, or if there are any other alternatives.

Name

Replacement

Comment

diff

OpenBSD diff, diff3 and sdiff

See GSoC 2012: BSD-licensed Text-Processing Tools and GSoC 2010: BSD-licensed Text-Processing Tools

rcs

GNU RCS pkg available (devel/rcs57), or OpenRCS

Just removing it from base will meet opposition.

Works in Progress

Name

Replacement

Percent Complete

Comment

Responsible

binutils

ELF Toolchain, various

50%

Most components can be imported from the ELF Toolchain project. Clang provides an integrated assembler - an as tool would be simple to write using the same libraries, if one doesn't already exist. Progress is being made on options for a BSD licensed ELF linker.

jkoshy@, kaiw@

dtc

dtc2

90%

From-scratch reimplementation of the functionality of dtc required to build the base system in base and built by default. GPL-dtc needs removing. Since this is only the compiler (the rest of the device tree stuff is BSDL'd), it could be just not compiled by default since typically only the firmware maker, and not the kernel, needs this.

theraven@

gcc

clang

90%

Now the default compiler for tier 1, needs external toolchain support before gcc can be removed from tier 2. See PortsAndClang.

dim@

gdb

lldb

75%

Basic functionality works for amd64 targets. See GdbRetirement and lldb.

emaste@

grep

BSDgrep

90%

BSD grep has been imported into HEAD, but GNU grep is still default. Use WITH_BSD_GREP to test. Some optimization and bugfixing needed.

gabor@

groff

mdocml

50%

mdocml has been imported into HEAD. groff is still default. The remaining parts depend mostly on a couple of choices that need to be made. See Notes below and mdocml branch on github.

uqs@, joel@

libgcc

compiler-rt and libunwind

60%

Compiler-rt and libunwind, between them, provide most of the functionality of libgcc / libgcc_s.

ed@

libreadline

-

90%

Only [k]gdb uses libreadline now - to be made into a private lib, and kept as long as gdb is in the tree.

bapt@

Binutils detail

Name

Replacement

Percent Complete

Comment

Responsible

addr2line

elftoolchain addr2line

as

new llvm-based as

ld

mclinker or lld

nm

elftoolchain nm

objcopy

elftoolchain elfcopy?

objdump

libelf + llvm based?

readelf

size

elftoolchain size

strings

elftoolchain strings

strip

elftoolchain elfcopy?

See also the BSDToolchain page for more information.

Notes

groff

Completed

Name

Comment

ar

Replaced with one based on libarchive

bc

GNU version replaced with OpenBSD's bc

cpio

Replaced with bsd-cpio

cvs

Removed in r251794

gnu-sort

Replaced with bsdsort, and removed in r241511

libf2c

Was unused, removed in HEAD in r212592

libobjc

libobjc2 is MIT licensed, but in the absence of any Objective-C code in base it was removed

libodialog

Remaining libodialog users (tzsetup, sade) converted to new libdialog

libstd++

libstd++ was moved to a port and libc++ was imported

patch

Replaced with an enhanced variant of Larry Wall's patch from the other BSDs

ranlib

Replaced with one based on libarchive

GPLinBase (last edited 2014-04-11 00:13:09 by EdMaste)