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. 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:

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 Needing Relicensing

Copyright owners already tracked

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
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

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/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/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