Contributing Code to the Kaltura Platform
Kaltura is a multi-project platform. It consists of various backend and frontend projects, in several programing languages and technologies. As such, it may seem little scary to get started as a new developer in the community.
This guide was put together to guide your way as a developer getting started with Kaltura, walk you through the various platform projects, and practices of contributing code by submitting pull-requests and code patches.
Signing the Contributor License Agreement
When you merge new code to the Kaltura Platform, we require that you sign the Kaltura Contributor License Agreement (or "CLA"). The CLA license is for your protection as a Contributor as well as the protection of the Project and its community members. It does not change your rights to use your own Contributions for any other purpose, and does not require any IP assignment of any kind. If you're working on a Kaltura project, or can clearly claim ownership of copyright in what you'll be contributing to the project, the CLA will ensure that your contributions are protected and that the project will forever remain free to be used and modified by the global community.
As references, we encourage reviewing other known projects and their respective CLAs -
Which Repositories Should I Contribute To?
The main repos are:
- https://github.com/kaltura/platform-install-packages - The Platform Install Packages and Scripts
- https://github.com/kaltura/server - The Core Backend (The Kaltura Server)
- https://github.com/kaltura/nginx-vod-module - NGINX-based MP4 Repackager
- https://github.com/kaltura/mwEmbed - The Kaltura JS Player Framework (aka Universal or v2 Player)
- https://github.com/kaltura/kmc - The Kaltura Management Console (aka KMC)
- https://github.com/kaltura/player-studio - The HTML5 Player Studio (aka Studio v2)
If you are uncertain which project a specific code belongs to, please run:
$ rpm -qf /path/to/file $ rpm -qi package | grep URL
$ rpm -qf /opt/kaltura/app/batch/bootstrap.php kaltura-base-9.16.0-1.noarch $ rpm -qi kaltura-base | grep URL URL : https://github.com/kaltura/server/tree/IX-9.16.0
In this case, the file belongs to Kaltura's Core at
When reporting an issue, please make sure you include the version used.
# You can get the version using: $ rpm -q package # or when using the deb packages: $ dpkg -l package # And you can get debug information (handy with reporting issues) using: $ /opt/kaltura/bin/kaltura-sanity.sh
This might help you diagnose the issue yourself, if not, paste the results along with your report. For questions, rather bug reports, please post at forum.kaltura.org.
- Please do not file big Pull Requests. It makes reviewing and ensuring correctness difficult. If possible, break it down in smaller commits/pulls, each related to a specific issue or subject
- Every commit should have a meaningful subject
- If the code has tests, they must pass before submitting the pull request
- When submitting a new feature, unit tests must be submitted as well
- Whenever possible, implement features as plugins, not by modifying Core code
- Always keep performance in mind
- If you are unsure about submitting a Pull request, ask one of the repository owners for clarification
- Fork the default branch of the relevant repo
- Create a branch with a meaningful name; i.e - some-feature-name-fix
- Commit and make a pull request
Thank you for helping make Kaltura even more awesome! :)