dcrdev / Emby

Emby Server is a personal media server with apps on just about every device.
https://emby.media
GNU General Public License v2.0
12 stars 0 forks source link

Remove Binary Blobs from Repository #2

Open dcrdev opened 6 years ago

dcrdev commented 6 years ago

Goals: 1) Remove third party binary blobs from this repository. 2) Remove Emby LLC proprietary binary blobs from this repository.

Implementation: 1) Where possible obtain these from NuGet.

2a) Replace these with dummy libraries, just throw not implemented. This will allow the new 'EmbyServer' implementation to build unencumbered. 2b) Within the new EmbyServer implementation add a method that checks whether the assembly properties contain the word 'Dummy', if they do then download those binaries from upstream and replace them before sigterm'ing the process and starting it back up. 2c) Not sure how friendly this is to the GPL... might implement passing a parameter containing the upstream repository url and handle the passing of that in packaging which would be done in a separate repo under a seperate license.

benpye commented 6 years ago

I have been looking to see where these binaries have been introduced. It looks like, at least in the case of Emby.Server.MediaEncoding.dll, Emby.Server.Connect.dll and Emby.Server.Sync.dll they have taken previously open source code, removed it from the repo and now distribute it as a binary. I have been going back to find where these changes have been made.

Emby.Server.MediaEncoding.dll: Introduced: dec3644c31c343179fd8cf8ed771a357e9b8aa20 Last FOSS: 197574f8114d0b11da466e63d0667a8dd1ba3dc5

Emby.Server.Connect.dll: Introduced: 8c0bf131342a8d24d96e597596e68f8934e275fe Last FOSS: 6e4c9dff5be6048a71e7cd3e7eb52366872f20b6

Emby.Server.Sync.dll: Introduced: 758445db59a0346e3e91d639fc69fa07517c0d63 Last FOSS: 84daad6b32df336120af56a2d24fafc609992105

In early versions of Emby there are other binaries but these seem to have since been removed, though they appear to follow a similar pattern. The last commit with no closed source binaries appears to be 6e4c9dff5be6048a71e7cd3e7eb52366872f20b6 , there are still some Emby binaries however the source code appears to still be available. The last commit with no Emby binaries appears to be e9a57580cdaa747417b8790539cdbbedb6199fc4 , there are still binaries from third party projects though these should be reproducible. Interestingly, back in these commits the .NET Core build scripts were also open source.

Back to GPL violations, if these are just derivations of previous work, and that previous work had external contributors that did not sign the CLA then that would not look great for Emby.

I intend to fork at 6e4c9dff5be6048a71e7cd3e7eb52366872f20b6 and attempt to get this building, I will keep this updated. Whilst I respect that Emby want to make money, I cannot get behind a project that I was duped into believing was open source when quite clearly, it no longer is. I would rather use Plex at that point, at least they don't pretend to support open source.

joshuaboniface commented 6 years ago

@benpye Awesome detective work! So it looks like we can revert these components to an earlier version and eliminate the binaries without license violations? If so that would mean we can have a completely OSS build of Emby without much rewriting. Please let us know how your testing turns out!

dcrdev commented 6 years ago

Yes that is useful - but there's potentially a lot of API changes that need to be accounted for to get those components working with a current version.

@joshuaboniface have you done any additional work on your fork?

joshuaboniface commented 6 years ago

Yea I worry there's a lot of change there as well. I've only been messing around with the auth so far, trying to understand it, but otherwise not really - it's been a really busy month! I'm hoping to have more time to dig into it in September.