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):
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 linux-user/strace.c linux-user/uaccess.c 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 git really lists the committer as author for svn commits.
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
Based on Linux kernel code
linux-user/elfload.c linux-user/floatload.c linux-user/linuxload.c