A big part of Plex Media Player is released under a Open Source license (GPLv2) and we are actively encouraging our community to contribute and help us improve the host part of the application. This post explains how to build Plex Media Player (PMP) from source and how to contribute patches and fixes to us.
About Open Source
What parts of PMP are Open?
Plex Media Player is really two different layers. The Host layer is the layer that interacts with your OS, plays video and music, and also loads the interface via a Chromium process. The client part is our HTML5 web-client that is responsible for communication with plex.tv as well as your media server and renders the UI you see on screen.
We are making the Host part of this application open source. The web-client will be downloaded from our servers during the build phase as a binary.
What parts can I contribute to?
With the host being open you can help with the following areas:
- Compile/port the application to new platforms that we don't officially support
- Improve and fix bugs in the video/audio playing layer (mpv)
- Add new input methods that require access to the OS / hardware
- Improve key mapping and other OS integration features
What parts can't I contribute to?
Anything done in the web-client. This includes:
- Changing / adding to the UI. Note that we are investigating theme/skin support.
- Fixing bugs or improving the communication with Plex servers and cloud
Really, we can't contribute to the web-client?
We understand that some of you would like to see the application be fully opened, but currently we are opening the parts of the application that don't affect other platforms (since the HTML5 client code base is used on PlayStation, Amazon Fire TV, smart TVs, and more) and opening that up creates some interesting and challenging problems for us at this time. We hope that by making the Host open we can get meaningful contributions and help bring this application to other platforms and also improve the video and audio playback.
What license is PMP released under?
The host is released under GPLv2. See full license statements for third-party applications here: https://github.com/plexinc/plex-media-player/blob/master/resources/misc/licenses.txt
Will PMP be developed in secret and pushed to the open repository when you make a release like PHT?
NO! This is one of the more exciting things with PMP, we will push updates to our GitHub repository as soon as we have them. There might still be secret stuff that we hold back in our own private repository, but our intention is to use the public repository as our main repository and you can follow along with the development on a daily basis
Building from source
How do I get the source to PMP?
We publish the source for PMP at https://github.com/plexinc/plex-media-player
What do I need to build PMP?
We try to keep the build instructions up-to-date in the source repository: https://github.com/plexinc/plex-media-player/blob/master/README.md - Let us know or send Pull Requests if you spot anything that is wrong or doesn't work.
How do I contribute to PMP?
The short answer is that we will be accepting contributions via GitHub pull requests. We will be requiring all contributors to sign a CLA before we accept the changes into our repository.
What's a CLA and why do I need to sign that?
CLA stands for Contributor License Agreement. You can read more about CLA's here: https://en.wikipedia.org/wiki/Contributor_License_Agreement - We need you to sign that so that we retain the copyright of all code in our repository; this is important if we want to switch to another license in the future. Say for example that we want to re-license PMP under LGPL in the future. By requiring a CLA we can do that without having to contact every single contributor and get them to agree. This is standard practice for many open source companies now, including Ubuntu, RedHat, OpenSSL, and many more.
I don't like that, I won't sign a CLA to contribute
Sorry, but that means that you won't be able to contribute to PMP. You are still able to fork our project and host your own copy with your changes somewhere else, it's just that we can't accept your patches into our repository.
OK, how do I sign the CLA to make my contribution?
The instructions on how to agree to the CLA and submit contributions are documented here: https://github.com/plexinc/plex-media-player/wiki/Contributor-License-Agreement