Planning/Relicensing

From QEMU

Overview

In order to share code with binutils, QEMU needs to relicense to GPLv2 or later since binutils is GPLv3. Since only a handful of files are licensed under GPLv2, it should be practical to relicense.

How to Help

To relicense a file, use the following git command to get a list of authors:

git log --format:"%an <%ae>" -- file.c

Check this wiki page to see if the author has already committed to relicensing. If so, add their Signed-off-by to the patch. For any author that hasn't already committed to relicensing, contact that individual and ask them if they are willing to relicense and collect their Signed-off-by.

Commitments to Relicense

If you or your company is willing to relicense your past contributions from GPLv2 to GPLv2+, please send an email to qemu-devel stating that explicitly and then link to that message on this wiki.

Files under LGPLv2/LGPLv2.1

These do not need relicensing even if the "or later" clause were missing (see section 3):

block/qed.c
block/qed-check.c
block/qed-cluster.c
block/qed-gencb.c
block/qed.h
block/qed-l2-cache.c
block/qed-table.c
hw/arm_pic.c
hw/ccid-card-emulated.c
hw/fmopl.c
hw/i2c.c
hw/lsi53c895a.c
hw/pc.c
hw/pl110.c
hw/ptimer.c
hw/scsi-disk.c
hw/scsi-generic.c
hw/smbus.c
hw/usb-msd.c
hw/usb-serial.c
hw/versatile_pci.c
check-qdict.c
check-qfloat.c
check-qint.c
check-qjson.c
check-qlist.c
check-qstring.c
error.c
json-lexer.c
json-parser.c
json-streamer.c
qbool.c
qdict.c
qemu-coroutine.c
qerror.c
qfloat.c
qint.c
qjson.c
qlist.c
qstring.c
test-coroutine.c

Files under GPLv2+

These would need relicensing in order to do a blanket relicensing of QEMU (it is debatable whether this requires authorization of the copyright holders). However, the license is GPLv3-compatible, so they can be left as is: overall, QEMU would still be distributed as GPLv3, but the code from this files could be reused in GPLv2 projects:

block/vdi.c
hw/alpha_typhoon.c
hw/ccid-card-passthru.c
hw/empty_slot.c
hw/ppc440_bamboo.c
hw/ppc440.c
hw/usb-ccid.c
blockdev.c
device_tree.c
dma-helpers.c
kvm-all.c
kvm-stub.c
linux-aio.c
qemu-error.c
qemu-ga.c
qemu-io.c
qemu-thread-posix.c
qemu-thread-win32.c

The situation of this file is unclear:

net/tap-win32.c

Files under "GPL"

These files can be probably interpreted as being "GPLv1+". Relicensing is thus not needed.

hw/a9mpcore.c
hw/an5206.c
hw/arm11mpcore.c
hw/arm_boot.c
hw/arm_gic.c
hw/arm_sysctl.c
hw/arm_timer.c
hw/armv7m.c
hw/armv7m_nvic.c
hw/dummy_m68k.c
hw/integratorcp.c
hw/max7310.c
hw/mcf5206.c
hw/mcf5208.c
hw/mcf_fec.c
hw/mcf_intc.c
hw/mcf_uart.c
hw/mpcore.c
hw/pl011.c
hw/pl022.c
hw/pl050.c
hw/pl061.c
hw/pl080.c
hw/pl181.c
hw/pl190.c
hw/pxa2xx.c
hw/pxa2xx_dma.c
hw/pxa2xx_gpio.c
hw/pxa2xx_pic.c
hw/pxa2xx_timer.c
hw/realview.c
hw/realview_gic.c
hw/sh_intc.c
hw/sh_timer.c
hw/smc91c111.c
hw/ssd0303.c
hw/ssd0323.c
hw/stellaris.c
hw/stellaris_enet.c
hw/stellaris_input.c
hw/versatilepb.c
hw/wm8750.c

Files without license

audio/audio_pt_int.c   malc, Stefan Weil
audio/wavcapture.c     malc, Fabrice Bellard, Red Hat, Siemens
block/raw.c            (extracted from block/raw-posix.c, which is MIT/BSD)
                       IBM, Blue Swirl, Red Hat, hch, John Arbuckle, Stefan Weil, Aurelien Jarno, Hervé Poussineau, AMD, Fam Zheng, Frediano Ziglio

cache-utils.c          malc, Juergen Lock
disas.c
envlist.c              Aurelien Jarno, Blue Swirl
path.c                 Fabrice Bellard, CodeSourcery, ths, Stefan Weil, Thayne Harbaugh
hw/mipsnet.c           ths, Red Hat, CodeSourcery, Stefan Weil, Hervé Poussineau, Aurelien Jarno, Siemens
hw/mips_r4k.c          ths, ....
hw/qdev-addr.c         Red Hat (Gerd Hoffmann)
hw/qdev-properties.c   Red Hat, IBM, AMD, Google, VALinux (Isaku), Siemens, Kusanagi Kouichi, Stefan Weil
hw/spapr_hcall.c       IBM, Blue Swirl, SuSE
hw/spapr_vty.c         IBM, Red Hat
hw/tc58128.c           Samuel Tardieu, Blue Swirl, CodeSourcery, IBM
hw/usb-bus.c           Red Hat, Blue Swirl, Siemens, CodeSourcery, TeLeMan
hw/usb-desc.c          Red Hat, IBM, Brad Hards
cursor.c               Red Hat, IBM
qemu-config.c          Red Hat, IBM, SuSE, Blue Swirl, Citrix, Siemens, Kusanagi Kouichi, LLuis Villanova
qemu-sockets.c         Red Hat, IBM, Blue Swirl, Nick Thomas, Vibi Sreenivasan
*/machine.c            (extracted from vl.c, which is MIT/BSD)

Files Needing Relicensing

Copyright owners already tracked

block/raw-posix-aio.h (header?)  Red Hat, hch
hw/event_notifier.c              Red Hat
hw/msix.c                        Red Hat, Blue Swirl, VALinux (Isaku), SuSE, Siemens, IBM
hw/smbios.c                      Stefan Weil, IBM, Blue Swirl, HP
net/checksum.c                   Red Hat
aio.c                            IBM, Red Hat, SuSE, Nolan Leake, Blue Swirl
block-migration.c                IBM, Blue Swirl, Siemens, Red Hat, malc, NTT (Yoshi), Pierre Riteau, 
buffered_file.c                  IBM, Blue Swirl, Red Hat, Pierre Riteau, malc
compatfd.c                       IBM, Red Hat, AdaCore, SuSE, Siemens
hmp.c                            Red Hat, IBM
iov.c                            Red Hat, SuSE (incl. hw/iov.c)
memory.c                         IBM, Red Hat, Michael Walle, Blue Swirl, Siemens,
migration.c                      IBM, Charles Duffy, Siemens, Red Hat, malc, NTT (Yoshi)
migration-exec.c                 IBM, Charles Duffy, Siemens, Red Hat, malc, Blue Swirl
migration-fd.c                   IBM, Red Hat, Siemens
migration-unix.c                 IBM, Red Hat, Siemens, malc, Blue Swirl
migration-tcp.c                  IBM, Hervé Poussineau, Charles Duffy, Siemens, Red Hat, malc, Stefan Weil, NTT (Yoshi), Blue Swirl
module.c                         IBM, Blue Swirl
notify.c                         IBM, Siemens
pflib.c                          Red Hat, IBM
posix-aio-compat.c               IBM, Blue Swirl, Siemens, malc, Red Hat, hch, Blue Swirl, Kirill Shutemov, Frediano Ziglio
qemu-tool.c                      IBM, CodeSourcery, Stefan Weil, Blue Swirl, Siemens, Red Hat, Frediano Ziglio
qmp.c                            Red Hat, IBM
xen-all.c                        Red Hat, IBM, Citrix, Siemens, Intel
xen-stub.c                       Citrix, Intel

Entirely hosted in git

block/rbd.c
block/sheepdog.c
hw/ac97.c (VirtualBox)           targets using it: x86, MIPS, PPC
hw/acpi.c                        targets using it: x86, MIPS
hw/acpi_piix4.c                  targets using it: x86, MIPS
hw/apm.c                         targets using it: x86, MIPS
hw/bitbang_i2c.c                 targets using it: ARM
hw/bonito.c                      targets using it: MIPS
hw/collie.c                      targets using it: ARM
hw/ds1338.c                      targets using it: ARM
hw/ivshmem.c                     targets using it: x86, PPC
hw/kvmclock.c                    targets using it: x86
hw/lan9118.c                     targets using it: ARM
hw/marvell_88w8618_audio.c       targets using it: ARM
hw/mips_fulong2e.c               targets using it: MIPS
hw/ssi.c                         targets using it: ARM
hw/strongarm.c                   targets using it: ARM
hw/vexpress.c                    targets using it: ARM
hw/vhost.c                       targets using it: x86, PPC
hw/vhost_net.c                   targets using it: x86, PPC
hw/virtio-pci.c       
hw/virtio-serial-bus.c
hw/vt82c686.c                    targets using it: MIPS
hw/z2.c                          targets using it: ARM
xen-mapcache.c                   targets using it: x86

Also, some authors in svn

Need more care, since the author in svn commits is really the committer.

hw/ads7846.c                     targets using it: ARM
hw/ecc.c                         targets using it: ARM, SPARC
hw/framebuffer.c                 targets using it: ARM, LM32
hw/gumstix.c                     targets using it: ARM
hw/mainstone.c                   targets using it: ARM
hw/max111x.c                     targets using it: ARM
hw/mst_fpga.c                    targets using it: ARM
hw/musicpal.c                    targets using it: ARM
hw/nand.c                        targets using it: ARM, CRIS
hw/pl031.c                       targets using it: ARM
hw/pxa2xx_keypad.c               targets using it: ARM
hw/pxa2xx_lcd.c                  targets using it: ARM
hw/pxa2xx_mmci.c                 targets using it: ARM
hw/pxa2xx_pcmcia.c               targets using it: ARM
hw/spitz.c                       targets using it: ARM
hw/ssi-sd.c                      targets using it: ARM
hw/tc6393xb.c                    targets using it: ARM
hw/tosa.c                        targets using it: ARM
hw/virtio-balloon.c
hw/virtio-blk.c
hw/virtio.c
hw/virtio-console.c
hw/virtio-net.c
hw/xen_backend.c
hw/xen_devconfig.c
hw/xen_disk.c
hw/xen_domainbuild.c
hw/xen_nic.c