Open Kamillaova opened 3 weeks ago
We need to actually fix librvvm source license headers to reflect the MPL 2.0 license used for the library to prevent further issues.
This legally requires either the code owners to submit the license header change PR, or at the very least acknowledge the changes being done with their code (Which most people did, but not in a formal and verifiable way).
Proper license header template:
/*
blah-blah.h - Short explanation what this source does
Copyright (C) 2021 MaintainerName <email/github/other means to reach>
MaintainerName <email/github/other means to reach>
ContributorName <email/github/other means to reach>
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
The only sources that are NOT part of librvvm and are supposed to be GPL 3.0:
src/main.c
- RVVM Standalone CLI VM
src/rvvm_user.c
- RVVM Linux binary emulator
Sources that are maintained/have code written by @cerg2010cerg2010:
src/devices/ata.c
; src/devices/ata.h
src/devices/eth-oc.c
; src/devices/eth-oc.h
src/devices/ps2-altera.c
; src/devices/ps2-altera.h
src/devices/ps2-keyboard.c
src/devices/ps2-mouse.c
src/devices/tap_linux.c
src/rvjit/rvjit_arm.h
src/rvjit/rvjit_arm64.h
src/fdtlib.c
; src/fdtlib.h
src/ringbuf.c
; src/ringbuf.h
src/elf_load.c
; src/elf_load.h
src/riscv_csr.c
; src/riscv_csr.h
Sources that are maintained/have code written by @X547:
src/devices/haiku_window.cpp
src/devices/i2c-hid.c
; src/devices/i2c-hid.h
src/devices/hid_mouse.c
src/devices/hid_keyboard.c
Sources that are maintained/have code written by @0xCatPKG:
src/blk_io.c
; src/blk_io.h
src/dlib.c
; src/dlib.h
src/devices/tap_user.c
src/utils.c
; src/utils.h
Sources that are maintained/have code written by @Mr0maks:
src/devices/ns16550a.c
; src/devices/ns16550a.h
src/rvjit/rvjit_arm.h
Should we also ping people with few-line fix patches? How should the acknowledgement process go?
Parts of chardev
subsystem have code originally owned by 宋文武 iyzsong@envs.net
Sources owned only by me - many, TBD
Sources owned only by me - many, TBD
Not only "original author" matters, we also need to take into account small contributions that may be copyrightable
Should we also ping people with few-line fix patches? How should the acknowledgement process go?
I think we can use this as an example
Files that are already licensed under MPL 2.0
(or dual GPL 2.0 or MPL 2.0
)
https://yaso.su/u3SuGRkS (raw)
@emilazy said
works that have an insufficient degree of creative input are considered non-copyrightable
so I think we can ignore small changes that is very likely non-copyrightable
Current blockers:
src/atomics.h
: MSVC fixes by @cerg2010cerg2010
src/bit_ops.h
: Renames by @Mr0maks
src/elf_load.c
; src/elf_load.h
: Old ELF loader was written by @cerg2010cerg2010, with some remnants possibly still there
src/fdtlib.c
; src/fdtlib.h
: Original code by @cerg2010cerg2010
src/mem_ops.h
: Old FPU load/store code by @cerg2010cerg2010
src/ringbuf.c
; src/ringbuf.h
: Original code by @cerg2010cerg2010
src/riscv_csr.c
; src/riscv_csr.h
: Some pieces by @cerg2010cerg2010
src/riscv_mmu.c
; src/riscv_mmu.h
: Fixes by @cerg2010cerg2010, KSM support by @0xCatPKG
src/threading.c
; src/threading.h
: Fixes by @cerg2010cerg2010
src/rvjit_arm64.h
: Original code by @cerg2010cerg2010
src/rvjit_arm.h
: Original code by @cerg2010cerg2010 and @Mr0maks
src/devices/ata.c
; src/devices/ata.h
: Original code by @cerg2010cerg2010
src/devices/chardev.h
; src/devices/chardev_term.c
; src/devices/chardev_term.h
: Original code by iyzsong@envs.net
src/devices/eth-oc.c
; src/devices/eth-oc.h
: Original code by @cerg2010cerg2010
src/devices/haiku_windows.cpp
: Original code by @X547
src/devices/hid-keyboard.c
: Original code by @X547
src/devices/hid-mouse.c
: Original code by @X547; Nebulka1
src/devices/hid_dev.h
; src/devices/i2c-hid.c
; src/devices/i2c-hid.h
: Original code by @X547
src/devices/ns16550a.c
: Some parts originally by @Mr0maks, chardev API transition by iyzsong@envs.net
src/devices/pci-bus.c
; src/devices/pci-bus.h
: Original code by @cerg2010cerg2010
src/devices/plic.c
; src/devices/plic.h
: Original code by @cerg2010cerg2010
src/devices/ps2-altera.c
; src/devices/ps2-altera.h
: Original code by @cerg2010cerg2010
src/devices/ps2-keyboard.c
; src/devices/ps2-mouse.c
: Original code by @cerg2010cerg2010
src/devices/tap_linux.c
; src/devices/tap_api.h
: Original code by @cerg2010cerg2010
src/devices/win32window.c
: Fixes by @cerg2010cerg2010 & @0xCatPKG
src/devices/x11window_xlib.c
: Features by @cerg2010cerg2010 & Nebulka1
@LekKit and @0xCatPKG have already changed the license in files where no one else has made significant changes
New list of files that are licensed under MPL 2.0 (dual licensing has been removed): https://yaso.su/bS6DIi1Q
list of all contributions by file: https://yaso.su/T6Gh46Qx
I agree to license all of my past contributions to https://github.com/LekKit/RVVM under the MPL 2.0 license used by librvvm.
@Kamillaova, just in case: I really doubt my ultra-tiny change to the README.md
file counts as copyrightable, so you can just remove me from the list.
@Kamillaova, just in case: I really doubt my ultra-tiny change to the
README.md
file counts as copyrightable, so you can just remove me from the list.
Sorry for the ping, I was too lazy to filter out small changes after 3 hours of trying to workaround a git (very likely to be) bug (git not showing history for some files via git log -- $file
)
Also dropped @mishrasamiksha, @singodiyashubham87, @ChinYikMing as they just changed one word.
Sorry for the pings.
I agree to license all of my past contributions to https://github.com/LekKit/RVVM under the MPL 2.0 license used by librvvm.
I agree to license all of my past contributions to https://github.com/LekKit/RVVM under the MPL 2.0 license used by librvvm.
Dropped @mjunix since his change was removed from the codebase a long time ago, and I also think that the change wasn't even copyrightable.
Sorry for the pings.
src/devices/haiku_windows.cpp: Original code by @X547 src/devices/hid-keyboard.c: Original code by @X547 src/devices/hid-mouse.c: Original code by @X547; Nebulka1 src/devices/hid_dev.h; src/devices/i2c-hid.c; src/devices/i2c-hid.h: Original code by @X547
I agree to re-license my contributions to MPL 2.0.
@X547 can you include the repository address in your message? thanks.
What do you mean by "repository address"?
I agree to license all of my past contributions to https://github.com/LekKit/RVVM under the MPL 2.0 license used by librvvm.
The only sources that are NOT part of librvvm and are supposed to be GPL 3.0: src/main.c - RVVM Standalone CLI VM src/rvvm_user.c - RVVM Linux binary emulator
also src/bindings/libretro/**/*
is NOT part of librvvm
Current blockers:
src/atomics.h
: MSVC fixes by @cerg2010cerg2010src/bit_ops.h
: Renames by @Mr0makssrc/elf_load.c
;src/elf_load.h
: Old ELF loader was written by @cerg2010cerg2010, with some remnants possibly still theresrc/fdtlib.c
;src/fdtlib.h
: Original code by @cerg2010cerg2010src/mem_ops.h
: Old FPU load/store code by @cerg2010cerg2010src/ringbuf.c
;src/ringbuf.h
: Original code by @cerg2010cerg2010src/riscv_csr.c
;src/riscv_csr.h
: Some pieces by @cerg2010cerg2010src/riscv_mmu.c
;src/riscv_mmu.h
: Fixes by @cerg2010cerg2010, KSM support by @0xCatPKGsrc/threading.c
;src/threading.h
: Fixes by @cerg2010cerg2010src/rvjit_arm64.h
: Original code by @cerg2010cerg2010src/rvjit_arm.h
: Original code by @cerg2010cerg2010 and @Mr0makssrc/devices/ata.c
;src/devices/ata.h
: Original code by @cerg2010cerg2010src/devices/chardev.h
;src/devices/chardev_term.c
;src/devices/chardev_term.h
: Original code by iyzsong@envs.netsrc/devices/eth-oc.c
;src/devices/eth-oc.h
: Original code by @cerg2010cerg2010src/devices/haiku_windows.cpp
: Original code by @X547src/devices/hid-keyboard.c
: Original code by @X547src/devices/hid-mouse.c
: Original code by @X547; Nebulka1src/devices/hid_dev.h
;src/devices/i2c-hid.c
;src/devices/i2c-hid.h
: Original code by @X547src/devices/ns16550a.c
: Some parts originally by @Mr0maks, chardev API transition by iyzsong@envs.netsrc/devices/pci-bus.c
;src/devices/pci-bus.h
: Original code by @cerg2010cerg2010src/devices/plic.c
;src/devices/plic.h
: Original code by @cerg2010cerg2010src/devices/ps2-altera.c
;src/devices/ps2-altera.h
: Original code by @cerg2010cerg2010src/devices/ps2-keyboard.c
;src/devices/ps2-mouse.c
: Original code by @cerg2010cerg2010src/devices/tap_linux.c
;src/devices/tap_api.h
: Original code by @cerg2010cerg2010src/devices/win32window.c
: Fixes by @cerg2010cerg2010 & @0xCatPKGsrc/devices/x11window_xlib.c
: Features by @cerg2010cerg2010 & Nebulka1
I agree to license all of my past contributions to https://github.com/LekKit/RVVM under the MPL 2.0 license used by librvvm. I also don’t want to be associated with this project anymore.
Dropped @fish4terrisa-MSDSM as their changes only affected README.md
and src/main.c
, and these files do not belong to librvvm.
Sorry for the pings.
librvvm
should be MPL 2.0 compatible.Originally, RVVM was simply a standalone emulator which wasn't reusable, but nowadays it's a proper library reusable in other projects. Keeping the GPL license for a library reduces it's usefulness a lot - not many other projects may afford switching to GPL too.
The MPL license is a good middle-ground where RVVM code itself is still not entirely permissive (No closed forks of RVVM itself may exist), however it allows proper dynamic/static linking into other projects without affecting their license as a whole. This license is also widely adopted in the Rust world (Since Rust libraries may only be linked statically).
This decision was done way back in 2022, but the source license headers were not properly updated which led to confusion, and was not done fully in a proper way. We need to actually fix librvvm source license headers to reflect the MPL 2.0 license used for the library to prevent further issues.
This legally requires either the code owners to submit the license header change PR, or at the very least acknowledge the changes being done with their code (Which most people did, but not in a formal and verifiable way).
Standalone RVVM binaries (rvvm-cli and rvvm-user) are still licensed under GPL since they are expected to be directly used by the end user and not reusable by other projects. Realistically, both are simply frontends to
librvvm
(rvvm-user has it's own Linux syscall translation layer, but that thing stays under GPL too.)To agree to the relicensing, please reply to this issue with the following verbatim text:
List of required approvals:
Nebulka and iyzsong(宋文武) will be contacted by email.
Thanks to https://github.com/NixOS/nixpkgs/issues/334374! (as an example)