Jellyfin is a community project run by volunteers. We're always looking for additional help.
If you're interesting in helping the Jellyfin project, there are a few different ways to contribute depending on your skills and availability. Of course, simply using Jellyfin, finding issues, and reporting them, are a major help to our project, even if none of these apply to you!
Before contributing, please read over our Community Standards and Contributing Guide.
There are a couple ways to get involved with Jellyfin depending on your skillset.
The main core of Jellyfin as well as its plugins are written in C#. You have a couple options to get started.
There are always bugs to fix in Jellyfin. If you want to find an existing bug to fix, head over to the open Bug Issues page on GitHub, and find one that interests you. If you find a bug that affects you already, it's a good candidate to fix as you should be quickly able to test it; otherwise, the bug report should list steps to reproduce the bug.
Once you've found a bug you'd like to fix, head over to the GitHub page for the server and begin hacking. Development documentation can be found on the Documentation page. When the fix is ready, feel free to propose it to other users in the issue to get them to help test as well.
You should always develop bugfixes on a dedicated Git branch within your own Fork of Jellyfin (the fork+branch model). Once your bugfix is ready, submit a Pull Request on GitHub from your feature branch to the Master branch of the project. It will be reviewed and, when it passes review, accepted into Jellyfin.
New features for Jellyfin are generally implemented in one of two ways, depending on the complexity and scope of the feature.
First, check out our Feature Requests tracker and find something that looks interesting or useful to you. Please comment on the issue to indicate that you are working on it in order to let everyone know.
Most well-requested features will have a tag; as a C# developer, those tagged as "Server" or "Plugin" are of the most interest to you. Select the option below based on the tag on the feature.
Features of this type should be implemented directly into the core server itself. Once you've found a feature you want to implement, head over to the GitHub page for the server and begin hacking. Development documentation can be found on the Documentation page.
You should always develop features on a dedicated Git branch within your own Fork of Jellyfin (the fork+branch model). Once your feature is ready, submit a Pull Request on GitHub from your feature branch to the Master branch of the project. It will be reviewed and, if it passes review, accepted into Jellyfin.
Features of this type should be implemented as external plugins. Plugins help extend the functionality of Jellyfin without integrating the code into the main core. This lets users select the features they want and install them dynamically, without complicating the server as a whole. For developers, they also help keep the code clean and focused on the functionality, without worrying about the backend.
Once you've found a feature you want to implement with a plugin, check out the Plugin Template repository and clone this repository into a new project. Official plugins are named "jellyfin-plugin-mycoolname". You can use this template to get you started on writing the plugin. You may also want to consult the Jellyfin API documentation to help learn the interfaces available.
Once your plugin is working as expected, and all information filled out, publish your code to GitHub and contact the team on Matrix. If your plugin passes our evaluation, we will add it to the official plugin catalogue, and can optionally transfer ownership of the plugin to the Jellyfin organization on GitHub.
The primary Jellyfin WebUI is written primarily in Javascript. You have a couple options to get started.
There are always bugs to fix in Jellyfin. If you want to find an existing bug to fix, head over to the open Bug Issues page on GitHub, and find one that interests you. If you find a bug that affects you already, it's a good candidate to fix as you should be quickly able to test it; otherwise, the bug report should list steps to reproduce the bug.
Once you've found a bug you'd like to fix, head over to the GitHub page for the WebUI and begin hacking. Development documentation can be found on the Documentation page. When the fix is ready, feel free to propose it to other users in the issue to get them to help test as well.
You should always develop bugfixes on a dedicated Git branch within your own Fork of Jellyfin's WebUI (the fork+branch model). Once your bugfix is ready, submit a Pull Request on GitHub from your feature branch to the Master branch of the project. It will be reviewed and, if it passes review, accepted into Jellyfin.
First, check out our Feature Requests tracker and find something that looks interesting or useful to you. Please comment on the issue to indicate that you are working on it in order to let everyone know.
Most well-requested features will have a tag; as a Javascript developer, those tagged as "Web UI" are of the most interest to you.
Once you've found a feature you'd like to implement, head over to the GitHub page for the server and begin hacking. Development documentation can be found on the Documentation page.
You should always develop features on a dedicated Git branch within your own Fork of Jellyfin's WebUI (the fork+branch model). Once your feature is ready, submit a Pull Request on GitHub from your feature branch to the Master branch of the project. It will be reviewed and, if it passes review, accepted into Jellyfin.
Jellyfin's Web UI is being rewritten. We're currently converting it to ES6 and then migrating to Vue. Head over to the project page on GitHub for more information.
Jellyfin has several other sub-projects that use various languages. If any of these suit you, head over to the relevant project page and begin hacking.
Kotlin/Java: The Android TV and Android apps are written in Kotlin and Java for some legacy code.
Python: The Kodi client is written in Python.
BrightScript: The Roku client is written in BrightScript.
Feel free to browse around the project page for the full list of official sub-projects.
Check our our Weblate instance and start helping to translate strings to other languages! Logging in will require a GitHub account.
Even if you're not a developer or able to speak multiple languages, there's still lots of things you can do to help Jellyfin.
Documentation is simultaneously very important, but very neglected in a lot of projects. We want to be different, and you can help! If you come across anything that you think should be documented, such as how to do things, configuration steps, or just general helpful pointers, we welcome contributions to our Documentation Repository, visible here.
We have a large and diverse userbase, with so many features that the combinations and configurations are almost endless. But as a volunteer-run project, the contributors can often be limited in the help they can provide. If you are well-versed in Jellyfin's operation, we welcome you to try to help troubleshoot problems your fellow users are having. Troubleshooting generally occurs in our main and troubleshooting Matrix rooms and on our Reddit Subreddit. Hanging around those places and helping your fellow users, in a kind, courteous, and respectful manner, earns our eternal gratitude!
As a project, we generally don't like asking for donations - we're entirely volunteer-run and intend to keep Jellyfin free as in beer, as well as free as in speech, forever. We do not wish, support, nor intend donations to privilege any user's voice or priorities. That said, if you do want to help us cover some operating expenses like our VPS hosting, domains, developer licences, metadata API keys, and other incidental expenses, check out our OpenCollective page to donate. Our entire budget as well as all expenses are publicly visible there.
Jellyfin