Opened 6 years ago

Last modified 3 years ago

#13814 new bug

GPL License Review

Reported by: kallisti5 Owned by: nobody
Priority: high Milestone: Unscheduled
Component: - General Version: R1/Development
Keywords: Cc: bonefish
Blocked By: Blocking:
Platform: All

Description

We have random sources around our tree which list the GPL license.

These should be reviewed to ensure our continued MIT license compliance.

kallisti5@eris haiku :) $ find src -name "*.cpp" -exec ./3rdparty/kallisti5/licenseReport.rb {} \; | grep GPL
src/add-ons/kernel/drivers/audio/echo/generic/C3g.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/C3gDco.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CChannelMask.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDaffyDuck.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDarla.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDarla24.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDarla24DspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDarlaDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CDspCommObjectVmixer.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGals.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGalsMTC.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGalsVmixer.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGals_info.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGals_midi.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGals_mixer.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGals_power.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CEchoGals_transport.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CGMLDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CGdDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CGina.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CGina24.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CGina24DspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CGinaDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CIndigo.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CIndigoDJ.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CIndigoDJDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CIndigoDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CIndigoIO.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CIndigoIODspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CLayla.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CLayla24.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CLayla24DspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CLaylaDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CLineLevel.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMia.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMiaDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMidiInQ.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMona.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMonaDspCommObject.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMonitorCtrl.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CMtcSync.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/CPipeOutCtrl.cpp: GPL
src/add-ons/kernel/drivers/audio/echo/generic/OsSupportBeOS.cpp: GPL
src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemCPU.cpp: GPL
src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemDDR.cpp: GPL
src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemDevice.cpp: GPL
src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemLED.cpp: GPL
src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx/BeceemNVM.cpp: GPL
src/add-ons/kernel/file_systems/ramfs/Volume.cpp: GPL
src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/Block.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/BlockCache.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/Item.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/Iterators.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/Settings.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/SuperBlock.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/Tree.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/VNode.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/Volume.cpp: GPL
src/add-ons/kernel/file_systems/reiserfs/kernel_interface.cpp: GPL
src/add-ons/media/plugins/ape_reader/MAClib/MD5.cpp: GPL
src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp: GPL
src/add-ons/media/plugins/ffmpeg/AVFormatWriter.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/Debug.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlBinary.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlContexts.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlCrc32.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlDate.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlDummy.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlElement.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlFloat.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlHead.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlMaster.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlSInteger.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlStream.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlString.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlSubHead.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlUInteger.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlUnicodeString.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlVersion.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/EbmlVoid.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/IOCallback.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/MemIOCallback.cpp: GPL
src/add-ons/media/plugins/matroska/libebml/StdIOCallback.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/FileKax.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxAttached.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxAttachments.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxBlock.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxBlockData.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxChapters.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxCluster.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxClusterData.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxContentEncoding.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxContexts.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxCues.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxCuesData.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxInfo.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxInfoData.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxSeekHead.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxSegment.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTag.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTagMulti.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTags.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTrackAudio.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTrackEntryData.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTrackVideo.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxTracks.cpp: GPL
src/add-ons/media/plugins/matroska/libmatroska/KaxVersion.cpp: GPL
src/add-ons/media/plugins/rtsp_streamer/rtsp.cpp: GPL
src/apps/mediaplayer/Controller.cpp: GPL
src/apps/mediaplayer/ControllerView.cpp: GPL
src/apps/mediaplayer/InfoWin.cpp: GPL
src/apps/mediaplayer/MainApp.cpp: GPL
src/apps/mediaplayer/playlist/Playlist.cpp: GPL
src/apps/mediaplayer/MainWin.cpp: GPL
src/apps/processcontroller/AutoIcon.cpp: GPL
src/apps/processcontroller/IconMenuItem.cpp: GPL
src/apps/processcontroller/KernelMemoryBarMenuItem.cpp: GPL
src/apps/processcontroller/MemoryBarMenu.cpp: GPL
src/apps/processcontroller/MemoryBarMenuItem.cpp: GPL
src/apps/processcontroller/NoiseBarMenuItem.cpp: GPL
src/apps/processcontroller/PCWindow.cpp: GPL
src/apps/processcontroller/PCWorld.cpp: GPL
src/apps/processcontroller/Preferences.cpp: GPL
src/apps/processcontroller/PriorityMenu.cpp: GPL
src/apps/processcontroller/ProcessController.cpp: GPL
src/apps/processcontroller/QuitMenu.cpp: GPL
src/apps/processcontroller/TeamBarMenu.cpp: GPL
src/apps/processcontroller/TeamBarMenuItem.cpp: GPL
src/apps/processcontroller/ThreadBarMenu.cpp: GPL
src/apps/processcontroller/ThreadBarMenuItem.cpp: GPL
src/apps/processcontroller/Utilities.cpp: GPL
src/system/libroot/posix/malloc/arch-specific.cpp: GPL
src/system/libroot/posix/malloc/heap.cpp: GPL
src/system/libroot/posix/malloc/processheap.cpp: GPL
src/system/libroot/posix/malloc/superblock.cpp: GPL
src/system/libroot/posix/malloc/threadheap.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Volume.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/kernel_interface.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Block.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/BlockCache.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Debug.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Item.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Iterators.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Settings.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/String.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/SuperBlock.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Tree.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/VNode.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/Volume.cpp: GPL
src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/reiserfs/kernel_interface.cpp: GPL
src/tests/kits/media/playsound/playsound.cpp: GPL
src/tests/system/libroot/posix/fseek_test.cpp: GPL

Change History (18)

comment:1 by kallisti5, 6 years ago

DeadYak reports Marcus licensed these GPL due to YellowTab at the time. Haiku got an MIT license exception, but it seems like that never made it into the sources. I'm contacting Marcus via email to see if we can clairfy.

src/apps/mediaplayer/Controller.cpp: GPL
src/apps/mediaplayer/ControllerView.cpp: GPL
src/apps/mediaplayer/InfoWin.cpp: GPL
src/apps/mediaplayer/MainApp.cpp: GPL
src/apps/mediaplayer/playlist/Playlist.cpp: GPL
src/apps/mediaplayer/MainWin.cpp: GPL

comment:2 by kallisti5, 5 years ago

EDIT: False positives for pcmcia.

Last edited 5 years ago by kallisti5 (previous) (diff)

comment:3 by pulkomandy, 5 years ago

plugins/matroska is not part of the default image.

src/tests is not part of the default image (playsound used to be, but was replaced with media_client).

ramfs currently does not build, IIRC.

reiserfs should be enabled only when INCLUDE_GPL_ADDONS is set (anyone still using it anyways?) or maybe we could change our strategy about that and have an haiku_gpl package with the GPLed stuff.

Version 0, edited 5 years ago by pulkomandy (next)

comment:4 by waddlesplash, 5 years ago

Cc: weinhold added

reiserfs is GPL but weinhold seems to be the copyright holder. Perhaps he can enlighten us as to why it's GPL, and/or give us permission to relicense as MIT?

comment:5 by waddlesplash, 5 years ago

Cc: bonefish added; weinhold removed

comment:6 by pulkomandy, 4 years ago

Still under GPL:

  • ramfs:
commit b9795faf5d27edaf49acb9f884ba181c0f0ae66b
Author: Augustin Cavalier <waddlesplash@gmail.com>
Date:   Fri Aug 30 18:48:11 2019 -0400

    ramfs: Add MIT license header to all files lacking copyright info.
    
    OK'ed by Ingo via email.

commit 731be7dde11e3901859e6d527cd59a0ff566df3e (tag: hrev53436)
Author: Augustin Cavalier <waddlesplash@gmail.com>
Date:   Fri Aug 30 18:27:35 2019 -0400

    Relicense all of Ingo's BSD/MIT+advertising clause'd code as plain MIT.
    
    Via email:
    > I'm fine with re-licensing all code using BSD license + advertising
    > clause to MIT license.

No explanation as to why the remaining parts remain under GPL was given in these commits.

  • reiserfs: still under GPL
  • src/add-ons/media/plugins/ape_reader/MAClib/MD5.cpp: still under GPL, looks like this single file should not be hard to replace

Actually under LGPL not GPL (that's a bit less of a problem):

  • src/add-ons/kernel/drivers/audio/echo
  • src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp, src/add-ons/media/plugins/ffmpeg/AVFormatWriter.cpp (they both link to ffmpeg anyway so there is little point in changing the license?)
  • src/add-ons/media/plugins/rtsp_streamer/rtsp.cpp
  • malloc_hoard2

Removed, not included in distributed images, or relicensed:

  • src/add-ons/kernel/drivers/network/wwan removed in hrev51685
  • matroska: removed in ba5c9689e13e8f25c2df2c20ec0def5a6dba4272
  • MediaPlayer: now MIT with agreement from all authors.
  • ProcessController: agreement from all authors is being collected on the mailing list
  • tests: as mentionned these are not included in the build images

comment:7 by waddlesplash, 4 years ago

Actually, the only parts of ramfs that are "GPL" are actually dual GPL/MIT. So that's fine.

reiserfs is GPL because of usage of Linux code, I think?

comment:8 by pulkomandy, 4 years ago

ape_reader modifed in hrev54219. So the only remaining GPL parts of Haiku are ProcessController (waiting for agreement from authors) and reiserfs.

I checked the copyright headers for reiserfs and as far as I can see all the code is copyrighted to Ingo and some files to Axel, with only a .h describing the filesystem structures coming from the Linux kernel.

comment:9 by pulkomandy, 4 years ago

GPL-licensed things the Haiku package currently depends on:

  • coreutils
  • tar (but replacements are available)
  • bash (actually depends on cmd:sh, mksh can be used as a replacement)
  • gunzip
  • gutenprint

comment:10 by Coldfirex, 3 years ago

Would replacing gunzip with the BSDs version (non-GPL) be advantageous here?

comment:11 by pulkomandy, 3 years ago

Yes, is there an haikuports package for that version?

comment:12 by Coldfirex, 3 years ago

Not that I see.

comment:13 by Coldfirex, 3 years ago

pulkomandy: I am re-reading your last comment regarding "...the Haiku package currently depends on:" I take it you meant something besides the Haiku source tree? The only thing from your list I see in ours (via a simple git search) is gutenprint. The rest appear to be in haikuports.

comment:14 by nephele, 3 years ago

They are at haikuports, but the haiku package (haiku.hpkg) depends on them unconditionally, so they cannot be deinstalled from a Haiku system currently. I have a WIP patch for mksh and bash so they provide a seperate _posixsh package so you can choose the cmd:sh provider... got a bit sidetracked there, so haven't finished it yet.

comment:15 by korli, 3 years ago

Why is the priority high here?

comment:16 by kallisti5, 3 years ago

The priority on ensuring Haiku's source code only contains MIT-licensed code is high as it's something we need to be careful to enforce properly.

Software packages don't have to be GPL licensed... but it's a nice to have (and definitely not a high priority)

in reply to:  16 ; comment:17 by korli, 3 years ago

Replying to kallisti5:

The priority on ensuring Haiku's source code only contains MIT-licensed code is high as it's something we need to be careful to enforce properly.

Isn't this part already handled? Or is this running task?

in reply to:  17 comment:18 by pulkomandy, 3 years ago

Replying to korli:

Isn't this part already handled? Or is this running task?

According to my latest investigation (comment:8), the one remaining part on Haiku side is reiserfs. It is unclear why this is under GPL since all the code was written by Ingo, as far as I can tell, without using code from Linux.

There is also some code under LGPL, of which the most problematic could be the hoard2 malloc, which we want to replace at some point anyway for other reasons.

There is also the C library which has parts from the GNU libc which is under LGPL as well (somehow not listed here until now)

Note: See TracTickets for help on using tickets.