## How Can I Contribute? ### Reporting Bugs This section guides you through submitting a bug report for Liquid-dl. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:. 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). Fill out [the required template](ISSUE_TEMPLATE.md), the information it asks for helps us resolve issues faster. > **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. #### Before Submitting A Bug Report * **Perform a [cursory search](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+in%3Aliquid_dl+repo%3Akthulu120%2Fliquid_dl&type=Issues)** to see if the problem has already been reported(simply type some keywords of the issue after the repo search string). If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. #### How Do I Submit A (Good) Bug Report? Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined your bug create an issue and provide the following information by filling in [the template](ISSUE_TEMPLATE.md). Explain the problem and include additional details to help maintainers reproduce the problem: * **Use a clear and descriptive title** for the issue to identify the problem. * **Describe the exact steps which reproduce the problem, don't just say what you did, but explain how you did it**. For example, if you moved the cursor to the end of a line, explain if you used the mouse, or a keyboard shortcut or an Liquid-dl command, and if so which one? * **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). * **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. * **Explain which behavior you expected to see instead and why.** * **Include screenshots and animated GIFs** * **If you're reporting that Liquid-dl crashed**, include a crash report with a stack trace from the operating system. On macOS, the crash report will be available in `Console.app` under "Diagnostic and usage information" > "User diagnostic reports". Include the crash report 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. Provide more context by answering these questions: * **Can you reproduce the problem?** * **Did the problem start happening recently** (e.g. after updating to a new version of Liquid-dl) or was this always a problem? * If the problem started happening recently, **can you reproduce the problem in an older version of Liquid-dl?** What's the most recent version in which the problem doesn't happen? You can download older versions of Liquid-dl from [the releases page](https://github.com/Kthulu120/liquid_dl/releases). * **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. * If the problem is related to working with files (e.g. opening and editing files), **does the problem happen for all files and projects or only some?** Does the problem happen only when working with local or remote files (e.g. on network drives), with files of a specific type (e.g. only JavaScript or Python files), with large files or files with very long lines, or with files in a specific encoding? Is there anything else special about the files you are using? Include details about your configuration and environment: * **Which version of Liquid-dl are you using?** * **What's the name and version of the OS you're using**? * **Are you running Liquid-dl in a virtual machine?** If so, which VM software are you using and which operating systems and versions are used for the host and the guest? ### Suggesting Enhancements This section guides you through submitting an enhancement suggestion for Liquid-dl, 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:. #### How Do I Submit A (Good) Enhancement Suggestion? Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined your enhancement suggestion is related to, create an issue on that repository and provide the following information: * **Use a clear and descriptive title** for the issue to identify the suggestion. * **Provide a step-by-step description of the suggested enhancement** in as many details as possible. * **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). * **Describe the current behavior** and **explain which behavior you expected to see instead** and why. * **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of Liquid-dl which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. * **Explain why this enhancement would be useful** to most Liquid-dl users * **Specify which version of Liquid-dl you're using.** * **Specify the name and version of the OS you're using.** ### Your First Code Contribution Unsure where to begin contributing to Liquid-dl? You can start by looking through these `good-first-issue` and `help-wanted` issues: * [Beginner issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+repo%3Akthulu120%2Fliquid_dl+label%3A%22good+first+issue%22&type=Issues) - issues which should only require a few lines of code, and a test or two. * [Help wanted issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+repo%3Akthulu120%2Fliquid_dl+label%3A%22help+wanted%22&type=Issues) - issues which should be a bit more involved than `beginner` issues. Both issue lists are sorted by total number of comments. While not perfect, number of comments is a reasonable proxy for impact a given change will have. #### Local development Build the project as you normally would then simply dive into the code base. To build the front-end we use webpack so as you add/clean the existing codebase you can simply run `./node_modules/.bin/webpack --config webpack.config.js --watch` and as you program the hot-reloader will automatically build. ### Pull Requests * Fill in [the required template](PULL_REQUEST_TEMPLATE.md) * Do not include issue numbers in the PR title * Include screenshots and animated GIFs in your pull request whenever possible. * Follow the [JavaScript](#javascript-styleguide) and [CoffeeScript](#coffeescript-styleguide) styleguides. * End all files with a newline * Avoid platform dependent code * Place requires in the following order: * Built in Node Modules (such as `path`) * Local Modules (using relative paths) * Place class properties in the following order: * Class methods and properties (methods starting with a `@` in CoffeeScript or `static` in JavaScript) * Instance methods and properties ## Styleguides ### Git Commit Messages * Use the present tense ("Add feature" not "Added feature") * Use the imperative mood ("Move cursor to..." not "Moves cursor to...") * Limit the first line to 72 characters or less * Reference issues and pull requests liberally after the first line * When only changing documentation, include `[ci skip]` in the commit title * Consider starting the commit message with an applicable emoji: * :art: `:art:` when improving the format/structure of the code * :racehorse: `:racehorse:` when improving performance * :non-potable_water: `:non-potable_water:` when plugging memory leaks * :memo: `:memo:` when writing docs * :penguin: `:penguin:` when fixing something on Linux * :apple: `:apple:` when fixing something on macOS * :checkered_flag: `:checkered_flag:` when fixing something on Windows * :bug: `:bug:` when fixing a bug * :fire: `:fire:` when removing code or files * :green_heart: `:green_heart:` when fixing the CI build * :white_check_mark: `:white_check_mark:` when adding tests * :lock: `:lock:` when dealing with security * :arrow_up: `:arrow_up:` when upgrading dependencies * :arrow_down: `:arrow_down:` when downgrading dependencies * :shirt: `:shirt:` when removing linter warnings ##### Most of this is copied from the Atom contributing guide, so hats off to them.