Contributing to op-build ======================== op-build is the open source build system for OpenPOWER firmware. It assembles many individual components (only a few of which are OpenPOWER specific) into a single firmware image. op-build is implemented as a buildroot overlay. If you haven't already, join us on IRC (#openpower on Freenode) and on the mailing list ( openpower-firmware@lists.ozlabs.org - subscribe by going to https://lists.ozlabs.org/listinfo/openpower-firmware ) We use GitHub Issues and Pull Requests for tracking contributions. We expect participants to adhere to the GitHub Community Guidelines (found at https://help.github.com/articles/github-community-guidelines/ ). If you are unable or unwilling to use GitHub, we can accept contributions via the mailing list. All contributions should have a Developer Certificate of Origin (see below). Development Philosophy ---------------------- Our development philosophy is: 1. Don't re-invent the wheel 2. Upstream first As such, we don't like to carry patches in op-build, we prefer to interact with upstream projects and get patches accepted there. Where we do need to patch things locally, we prefer to carry backports from upstream, which can be removed when we move to more recent upstream. Development Environment ----------------------- For working on op-build you will need a reasonably recent Linux distribution. We aim to have all current major distros be suitable development platforms (focused on Ubuntu and Fedora, as that's what most developers currently use). A host GCC of at least 4.9 is recommended (all modern Linux distributions provide this). You can build on x86-64, ppc64 or ppc64le, op-build will build appropriate cross-compilers for you (thanks to the magic of buildroot). You will need 8-15GB of disk space to do a full build of any one configuration. Development Process ------------------- The main source repository is on GitHub. We use GitHub issues and pull requests as well as a mailing list (https://lists.ozlabs.org/listinfo/openpower-firmware). We tag a new op-build release roughly every 6 weeks. We use GitHub milestones: https://github.com/open-power/op-build/milestones Starting with the v1.15 release, active development occurs against the master branch. When we're nearing a release, we move the content of the master branch over to a 'release' branch, ensuring development can continue while the release is prepared. We accept pull requests on GitHub: https://github.com/open-power/op-build/pulls Developer Certificate of Origin ------------------------------- Contributions to this project should conform to the `Developer Certificate of Origin` as defined at http://elinux.org/Developer_Certificate_Of_Origin. Commits to this project need to contain the following line to indicate the submitter accepts the DCO: ``` Signed-off-by: Your Name ``` By contributing in this way, you agree to the terms as follows: ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ```