OpenELEC exists because of one-man's idea for an appliance-like OS that grew legs and ran. Since the birth of the project in 2009 there have been hundreds of contributors, and the team has a long and positive record of engagement with other upstream projects; notably Kodi where several OE staff are also official Kodi team members. OpenELEC continues to be a community-led effort and donations of user time, effort (and code!) are welcomed.

Development is centered on Github. This is also where "Request for Enhancement's" (RFE's) and triaged issue reports are submitted. You are politely reminded that Github is our development tool; anything posted to Github automatically notifies (or spams, depending on your point of view) the entire OpenELEC developer team. It is an appropriate place for users to provide information on triaged and "confirmed" bugs. The correct place for users to ask for first-help is the forum. Once a problem has been assessed and confirmed as a bug a Github issue report will be accepted. If you submit unconfirmed Github tickets with "I can't get my wireless to work" the ticket will be closed quickly, and often with blunt comments. Please (pretty please) use the forums to confirm bugs first!

OpenELEC developers also hang out in the #openelec IRC channel to discuss project things in addition to providing users with deeper and real-time technical assistance.

After compiling OpenELEC you may want to know how to make changes to the build system. This allows you to make patches and submit pull requests (PR's).

The build system will check in two places for custom options. This makes it so you don't have to touch the stock options.

You can use multiple options files, and they will over ride each other. So you can have a overall options file and project specific options files.

~/.openelec/options
~/.openelec/PROJECT/options

PROJECT being one of the available projects in the projects directory in the source tree.

Here is a description of scripts that you will you while making a patch

This will build a specific package in the build tree

PROJECT=Generic ARCH=x86_64 ./scripts/build kodi

This will clean (remove) a specific package from the build tree

PROJECT=Generic ARCH=x86_64 ./scripts/clean kodi

This will unpack a specific package into the build tree

PROJECT=Generic ARCH=x86_64 ./scripts/unpack kodi

This will pull the source from git/svn and package it for you. This is useful if you want to use a specific version or branch.

./tools/mkpkg/mkpkg_kodi

This will clean all build folders

make clean

This will make a release tarball that can be use to update OpenELEC easily

PROJECT=Generic ARCH=x86_64 make release

This will make an image that can be written directly to a disk

PROJECT=Generic ARCH=x86_64 make image

Making an image requires super user permissions. We are not responsible if something happens to your system.

Here is the workflow to create a patch

PROJECT=Generic ARCH=x86_64 ./scripts/clean kodi

PROJECT=Generic ARCH=x86_64 ./scripts/unpack kodi

cd build.OpenELEC-Generic.i386-devel

cp -r kodi-14-b5dbdb5 kodi-14-b5dbdb5.orig

Make some changes to the kodi-14-b5dbdb5 package, then check the diff

diff -Naur kodi-14-b5dbdb5.orig kodi-14-b5dbdb5

If everything looks good,

diff -Naur kodi-14-b5dbdb5.orig kodi-14-b5dbdb5 > ../packages/mediacenter/kodi/patches/kodi-201-very-descriptive-name.patch

cd ..

Build it!

PROJECT=Generic ARCH=x86_64 ./scripts/clean kodi

PROJECT=Generic ARCH=x86_64 ./scripts/build kodi

Patches must follow the same naming convention, however, sometimes different amounts of digits are used. Look at other patches to decide.
Try and make the name descriptive without it being too long

If you want to submit a patch make sure to include you name/email/contact as a comment in the patch!

Adjusting the kernel config is best done by using the tools in the package, not by editing the kernel config directly

PROJECT=Generic ARCH=x86_64 ./scripts/clean linux

PROJECT=Generic ARCH=x86_64 ./scripts/unpack linux

cd build.OpenELEC-Generic.i386-devel/linux-3.19.0

cp ../../projects/Generic/linux/linux.x86_64.conf .config

then run kernel configuration with make menuconfig or make xconfig or make qconfig

Make the changes you would like. Save them and exit the config utility.

cp .config ../../projects/Generic/linux/linux.x86_64.conf

cd ../..

Then build it

PROJECT=Generic ARCH=x86_64 ./scripts/clean linux

PROJECT=Generic ARCH=x86_64 ./scripts/build linux