Planning/Relicensing
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):
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