.. _contributing: Contributing ============ Introduction ------------ Join LVGL's community and leave your footprint in the library! There are a lot of ways to contribute to LVGL even if you are new to the library or even new to programming. It might be scary to make the first step but you have nothing to be afraid of. A friendly and helpful community is waiting for you. Get to know like-minded people and make something great together. So let's find which contribution option fits you the best and help you join the development of LVGL! Ways to contribute ------------------- - **Spread the Word**: Share your LVGL experience with friends or on social media to boost its visibility. - **Star LVGL** Give us a star on `GitHub `__ ! It helps a lot to LVGL more appealing for newcomers. - **Report a bug**: Open a `GitHub Issue `__ if something is not working. - **Join our** `Forum `__ : Meet fellow developers and discuss questions - **Tell your ideas**: If you miss something from LVGL we would love to hear about it in a `GitHub Issue `__ - **Develop features**: Help to design or develop a feature. See below. Mid and large scale issues are discussed in `Feature planning `__ issues. An issue can be developed when all the questions in the issue template are answered and there is no objection from any core member. We are using GitHub labels to show the state and attributes of the issues and Pull requests. If you are looking for contribution opportunities you can `Filter for these labels `__ : - ``Simple``: Good choice to get started with LVGL contribution - ``PR needed``: We investigated the issue but it still needs to be implemented - ``Review needed``: A Pull request is opened and it needs review/testing .. _contributing_pull_request: Pull request ------------ Merging new code into the lvgl, documentation, blog, examples, and other repositories happen via *Pull requests* (PR for short). A PR is a notification like "Hey, I made some updates to your project. Here are the changes, you can add them if you want." To do this you need a copy (called fork) of the original project under your account, make some changes there, and notify the original repository about your updates. You can see what it looks like on GitHub for LVGL here: https://github.com/lvgl/lvgl/pulls. To add your changes you can edit files online on GitHub and send a new Pull request from there (recommended for small changes) or add the updates in your favorite editor/IDE and use git to publish the changes (recommended for more complex updates). From GitHub ~~~~~~~~~~~ 1. Navigate to the file you want to edit. 2. Click the Edit button in the top right-hand corner. 3. Add your changes to the file. 4. Add a commit message on the bottom of the page. 5. Click the *Propose changes* button. From command line ~~~~~~~~~~~~~~~~~ The instructions describe the main ``lvgl`` repository but it works the same way for the other repositories. 1. Fork the `lvgl repository `__. To do this click the "Fork" button in the top right corner. It will "copy" the ``lvgl`` repository to your GitHub account (``https://github.com/?tab=repositories``) 2. Clone your forked repository. 3. Add your changes. You can create a *feature branch* from *master* for the updates: ``git checkout -b `` 4. Commit and push your changes to the forked ``lvgl`` repository. 5. Create a PR on GitHub from the page of your ``lvgl`` repository (``https://github.com//lvgl``) by clicking the *"New pull request"* button. Don't forget to select the branch where you added your changes. 6. Set the base branch. It means where you want to merge your update. In the ``lvgl`` repo both the fixes and new features go to ``master`` branch. 7. Describe what is in the update. An example code is welcome if applicable. 8. If you need to make more changes, just update your forked ``lvgl`` repo with new commits. They will automatically appear in the PR. .. _contributing_commit_message_format: Commit message format ~~~~~~~~~~~~~~~~~~~~~ The commit messages format is inspired by `Angular Commit Format `__. The following structure should be used: .. code-block:: ():