|
| 1 | +# Contributing to embARC OSP |
| 2 | + |
| 3 | +Thank you for contributing to embARC. |
| 4 | + |
| 5 | +The following is a set of guidelines for contributing to embARC Open Software Platform (OSP), which is hosted in the [embARC Open Software Platform](https://github.com/foss-for-synopsys-dwc-arc-processors/embarc_osp) repository on GitHub. |
| 6 | + |
| 7 | +These guidelines must be followed when submitting contributions to Synopsys projects to help ensure requests are processed as efficiently as possible. If you have any questions or concerns, please feel free to contact us at [[email protected]](mailto:[email protected]). |
| 8 | + |
| 9 | +#### Table Of Contents |
| 10 | + |
| 11 | +[What should I know before I get started?](#what-should-i-know-before-i-get-started) |
| 12 | + * [Code of Conduct](#code-of-conduct) |
| 13 | + * [embARC OSP and Applications](#embarc-osp-and-applications) |
| 14 | + * [embARC OSP Design Decisions](#embarc-osp-design-decisions) |
| 15 | + |
| 16 | +[How Can I Contribute?](#how-can-i-contribute) |
| 17 | + * [Reporting Bugs](#reporting-bugs) |
| 18 | + * [Suggesting Enhancements](#suggesting-enhancements) |
| 19 | + * [Your First Code Contribution](#your-first-code-contribution) |
| 20 | + * [Pull Requests](#pull-requests) |
| 21 | + |
| 22 | +[Styleguides](#styleguides) |
| 23 | + * [Git Commit Messages](#git-commit-messages) |
| 24 | + * [C Styleguide](#c-styleguide) |
| 25 | + * [Documentation Styleguide](#documentation-styleguide) |
| 26 | + |
| 27 | +[Additional Notes](#additional-notes) |
| 28 | + * [Issue and Pull Request Labels](#issue-and-pull-request-labels) |
| 29 | + |
| 30 | +## What should I know before I get started? |
| 31 | + |
| 32 | +### Code of Conduct |
| 33 | + |
| 34 | +This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md). |
| 35 | +By participating, you are expected to uphold this code. |
| 36 | +Please report unacceptable behavior to [[email protected]](mailto:[email protected]). |
| 37 | + |
| 38 | +### embARC OSP and Applications |
| 39 | + |
| 40 | +embARC OSP is an open software platform designed to help accelerate the development and production of embedded systems based on DesignWare ARC processors. Applications are the applications which are writing based on embARC Open Software Platform. |
| 41 | + |
| 42 | +We host the following two repositories to be used in conjunction with each other when working with embARC OSP: |
| 43 | +- [embarc_osp](https://github.com/foss-for-synopsys-dwc-arc-processors/embarc_osp) - The embARC Open Software Platform including core services, platform support adn integrated networking, security and IoT middleware |
| 44 | +- [embarc_applications](https://github.com/foss-for-synopsys-dwc-arc-processors/embarc_applications) - Applications written using the embARC OSP |
| 45 | + |
| 46 | +When you consider contributing or raising a issue against embARC OSP or Applications, please go to corresponding repository above. |
| 47 | + |
| 48 | +### embARC OSP Design Decisions |
| 49 | + |
| 50 | +When we make a significant decision in how we maintain the project and what we can or cannot support, we will document it in the github wiki. If you have a question around how we do things, check to see if it is documented there. If it is *not* documented there, please open a new issue on [embARC Open Software Platform](https://github.com/foss-for-synopsys-dwc-arc-processors/embarc_osp/issues) and ask your question. |
| 51 | + |
| 52 | +## How Can I Contribute? |
| 53 | + |
| 54 | +### Reporting Bugs |
| 55 | + |
| 56 | +This section guides you through submitting a bug report against embARC projects. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:. |
| 57 | + |
| 58 | +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Please use the template provided for this purpose. |
| 59 | + |
| 60 | +#### Before Submitting A Bug Report |
| 61 | + |
| 62 | +* **Check the embARC OSP documentation.** You might be able to find the cause of the problem and fix things yourself. Most importantly, check if you can reproduce the problem in the latest version of embARC OSP, if the problem happens when you run using both the Metaware and the GNU toolchain for ARC Processors. |
| 63 | +* **Check the embARC OSP FAQs** for a list of common questions and problems. |
| 64 | +* **Determine [which repository the problem should be reported in](#embarc-osp-and-applications)**. |
| 65 | +* **Perform a cursory search in related embARC repositories** to see if the problem has already been reported. If it has, add a comment to the existing issue instead of opening a new one. |
| 66 | + |
| 67 | +#### How Do I Submit A (Good) Bug Report? |
| 68 | + |
| 69 | +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#embarc-osp-and-applications) your bug is related to, create an issue on that repository and provide the following information. |
| 70 | + |
| 71 | +Explain the problem and include additional details to help maintainers reproduce the problem: |
| 72 | + |
| 73 | +* **Use a clear and descriptive title** for the issue to identify the problem. |
| 74 | +* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining which release or commit of embARC OSP you are using, and how you use embARC OSP, e.g. which command exactly you used in the terminal. When listing steps, **don't just say what you did, but explain how you did it**. For example, if you run a command, explain which terminal you use and the directory where you run the command? |
| 75 | +* **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). |
| 76 | +* **Describe the behavior you observed after following the steps** and point out the exact problem with that behavior. |
| 77 | +* **Explain which behavior you expected to see instead and why.** |
| 78 | +* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. You can try to **record the GIF of the steps to reproduce the bug**. You can use [licecap](http://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [silentcast](https://github.com/colinkeenan/silentcast) or [byzanz](https://github.com/GNOME/byzanz) on Linux. |
| 79 | +* **If you're reporting embARC OSP compilation failures**, include a verbose compiling log. Include the compiling log in the issue in a [code block](https://help.github.com/articles/markdown-basics/#multiple-lines), a [file attachment](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests/), or put it in a [gist](https://gist.github.com/) and provide link to that gist. |
| 80 | +* **If the problem happens randomly**, describe what you were doing before the problem happened and share more information using the guidelines below. |
| 81 | + |
| 82 | +Provide more context by answering these questions: |
| 83 | + |
| 84 | +* **Can you reproduce the problem in latest release of embARC OSP?** |
| 85 | +* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. |
| 86 | +* If the problem is related to embARC applications, please go to the embARC applications repository and report is by filing an issue |
| 87 | + |
| 88 | +Include details about your configuration and environment: |
| 89 | + |
| 90 | +* **Which version of embARC OSP are you using?** Provide the release version or commit of embARC OSP. |
| 91 | +* **Provide name and version of the OS and toolchain you are using** |
| 92 | +* **Provide hardware board and arc core you are using** |
| 93 | + |
| 94 | +#### [Template For Submitting Bug Reports](ISSUE_TEMPLATE.md) |
| 95 | + |
| 96 | +### Suggesting Enhancements |
| 97 | + |
| 98 | +This section guides you through submitting an enhancement suggestion for embARC OSP, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:. |
| 99 | + |
| 100 | +Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). If you'd like, you can use [this template](#template-for-submitting-enhancement-suggestions) to structure the information. |
| 101 | + |
| 102 | +#### Before Submitting An Enhancement Suggestion |
| 103 | + |
| 104 | +* Check the embARC OSP documentation, and embARC OSP roadmap. |
| 105 | +* Check if the enhancement is already developed or in development in latest sourcecode. |
| 106 | +* **Determine [which repository the enhancement should be suggested in](#embarc-osp-and-applications).** |
| 107 | + **Perform a cursory search in related embARC repositories** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. |
| 108 | + |
| 109 | +#### How Do I Submit A (Good) Enhancement Suggestion? |
| 110 | + |
| 111 | +Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#embarc-osp-and-applications) your enhancement suggestions is related to, create an issue on that repository and provide the following information: |
| 112 | + |
| 113 | +* **Use a clear and descriptive title** for the issue to identify the suggestion. |
| 114 | +* **Provide a step-by-step description of the suggested enhancement** in as many details as possible. |
| 115 | +* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). |
| 116 | +* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. |
| 117 | +* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. You can try to **record the GIF of the steps to reproduce the bug**. You can use [licecap](http://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [silentcast](https://github.com/colinkeenan/silentcast) or [byzanz](https://github.com/GNOME/byzanz) on Linux. |
| 118 | +* **Explain why this enhancement would be useful** to most embARC OSP users and isn't something that already existed as similiar feature. |
| 119 | +* **List some other text software platform where this enhancement exists.** |
| 120 | +* **Specify the name and version of the OS you're using.** |
| 121 | + |
| 122 | +#### [Template For Submitting Enhancement Suggestions](ISSUE_TEMPLATE.md) |
| 123 | + |
| 124 | +### Your First Code Contribution |
| 125 | + |
| 126 | +Unsure where to begin contributing to embARC OSP? You can start by looking through the existing issues. |
| 127 | + |
| 128 | +If you want to read about using embARC OSP or developing board support package, peripheral drivers, libraries, middlewares or applications in embARC OSP, the [embARC OSP documentation](http://foss-for-synopsys-dwc-arc-processors.github.io/embarc_osp) is free and available online. |
| 129 | + |
| 130 | +### Pull Requests |
| 131 | + |
| 132 | +* Include screenshots and/or animated GIFs in your pull request whenever possible. |
| 133 | +* Follow the [C](#c-styleguide) styleguide. |
| 134 | +* Include thoughtfully-worded, well-structured specs in your doc folder or `readme.md`. |
| 135 | +* Document new code based on the [Documentation Styleguide](#documentation-styleguide) |
| 136 | +* End files with a newline. |
| 137 | + |
| 138 | +## Styleguides |
| 139 | + |
| 140 | +### Git Commit Messages |
| 141 | + |
| 142 | +* Following the [good commit guideline](http://chris.beams.io/posts/git-commit/). |
| 143 | +* Use the present tense ("Add feature" not "Added feature") |
| 144 | +* Use the imperative mood ("Move cursor to..." not "Moves cursor to...") |
| 145 | +* Limit the first line to 72 characters or less |
| 146 | +* Reference issues and pull requests liberally |
| 147 | +* Consider starting the commit message with an category and colon: |
| 148 | + * `arc:` changes related to arc core |
| 149 | + * `board:` changes related to board support packages |
| 150 | + * `device:` changes related to device hal |
| 151 | + * `peripheral:` changes releated to peripheral drivers |
| 152 | + * `library:` changes related to libraries |
| 153 | + * `middleware:` changes related to middlewares |
| 154 | + * `os:` changes related to OSes |
| 155 | + * `test:` changes related to test cases |
| 156 | + * `doc:` changes related to documentation |
| 157 | + * `build:` changes related to build system |
| 158 | + * `tool:` changes related to tools |
| 159 | + * `example:` changes related to examples |
| 160 | + * `application:` changes related to applications |
| 161 | + * `misc:` changes not categorized |
| 162 | + |
| 163 | +### C Styleguide |
| 164 | + |
| 165 | +All C source code must adhere to [Linux Kernel Coding Style](https://www.kernel.org/doc/Documentation/CodingStyle). |
| 166 | +Here we use [AStyle tool](http://astyle.sourceforge.net/) to format the source code. The astyle option is provided [here](.astyle/embarc_astylerc). |
| 167 | + |
| 168 | +To help with writing c source code in editor, you can install plugin for your editor. |
| 169 | +- For sublime-text editor, you can use [SublimeAStyleFormatter](https://packagecontrol.io/packages/SublimeAStyleFormatter) plugin. |
| 170 | + |
| 171 | +### Documentation Styleguide |
| 172 | + |
| 173 | +* Use [Doxygen](http://www.stack.nl/~dimitri/doxygen/index.html). |
| 174 | + - To help with documentation in source code, you can install doxygen plugins for your editor. |
| 175 | + + For sublime-text editor, you can use [DocBlockr](https://packagecontrol.io/packages/DocBlockr) plugin. |
| 176 | +* Use [Markdown](https://daringfireball.net/projects/markdown). |
| 177 | + |
| 178 | +#### Example |
| 179 | + |
| 180 | +```c |
| 181 | +/** |
| 182 | + * \brief Reserve a DMA channel, and bind it with dma_chn, and set the dma |
| 183 | + * trigger source |
| 184 | + * |
| 185 | + * \param[in] channel This can be DMA_CHN_ANY or any valid |
| 186 | + * channel id. For DMA_CHN_ANY, it will try |
| 187 | + * to peek an available channel. For any |
| 188 | + * valid channel id, it will try to reserve |
| 189 | + * that channel. |
| 190 | + * \param dma_chn uDMA channel structure, should not be |
| 191 | + * NULL |
| 192 | + * \param[in] source DMA trigger source, this can be any value |
| 193 | + * in dma_request_source_t enum |
| 194 | + * |
| 195 | + * \retval DMA_CHN_INVALID dma_chn is NULL, or channel is not a |
| 196 | + * valid one, or there is no channel |
| 197 | + * available now |
| 198 | + * \retval 0-DMA_ALL_CHANNEL_NUM the channel id that reserved |
| 199 | + */ |
| 200 | +``` |
| 201 | + |
| 202 | +## Additional Notes |
| 203 | + |
| 204 | +### Issue and Pull Request Labels |
| 205 | + |
| 206 | +This section lists the labels we use to help us track and manage issues and pull requests. Most labels are used across all embARC repositories. |
| 207 | + |
| 208 | +[GitHub search](https://help.github.com/articles/searching-issues/) makes it easy to use labels for finding groups of issues or pull requests you're interested in. |
| 209 | + |
| 210 | +The labels are loosely grouped by their purpose, but it's not required that every issue have a label from every group or that an issue can't have more than one label from the same group. |
| 211 | + |
| 212 | +## Special Thanks to the Atom Project |
| 213 | +The contribution guideline takes a lot of reference from the [Atom Contribution Guideline](https://github.com/atom/atom/blob/master/CONTRIBUTING.md). |
0 commit comments