# Contribuindo com Electron

:memo: Traduções disponíveis: [Inglês](https://github.com/electron/electron/tree/master/CONTRIBUTING.md) | [Coreano](https://github.com/electron/electron/tree/master/docs-translations/ko-KR/project/CONTRIBUTING.md) | [Chinês Simplificado](https://github.com/electron/electron/tree/master/docs-translations/zh-CN/project/CONTRIBUTING.md)

:+1::tada: Primeiramente, obrigado por utilizar seu tempo contribuindo! :tada::+1:

Esse projeto segue um [código de conduta](CODE_OF_CONDUCT.md).
Ao participar, é esperado que o código seja seguido. Favor reportar comportamentos inaceitáveis para electron@github.com.

O texto a seguir é um conjunto de diretrizes para a contribuir com o Electron.
Estas são apenas diretrizes e não regras, use o seu bom senso e sinta-se livre para propor alterações nesse documento em um pull request.

## Reportando Issues

* Você pode criar uma issue [aqui](https://github.com/electron/electron/issues/new),
mas antes disso, por favor, leia as notas abaixo e inclua o máximo de detalhes possíveis em seu relato. Se puder, favor informar:
  * A versão do Electron utilizada
  * O sistema operacional utilizado
  * Se possível, o que estava fazendo quando o problema ocorreu e o que era esperado que acontecesse
* Alguns outros meios que irão ajudar a resolver a issue:
  * Capturas de tela e GIFs animados
  * Saída de erro que aparece no terminal, dev tools ou algum em algum alerta
  * Faça uma [pesquisa rápida](https://github.com/electron/electron/issues?utf8=✓&q=is%3Aissue+)
  para verificar se já não existe uma issue similar já aberta

## Submetendo Pull Requests

* Inclua capturas de tela e GIFs animados em seu pull request sempre que possível.
* Siga os [padrões de código definidos nos documentos](/docs/development/coding-style.md) para JavaScript, C++, e Python.
* Escreva a documentação em [Markdown](https://daringfireball.net/projects/markdown).
  Veja o [Guia de estilo de documentação](/docs/styleguide.md).
* Use mensagens curtas e com a conjugação verbal no tempo presente. Veja em [Guia de estilo de mensagens de commit](#git-commit-messages).

## Guias de estilo

### Código Geral

* Terminar arquivos com uma nova linha.
* A organização deve estar na seguinte ordem:
  * Módulos embutidos do Node (como o `path`)
  * Módulos embutidos do Electron (como `ipc`, `app`)
  * Módulos locais (usando caminhos relativos)
* Defina as propriedades da classe na seguinte ordem:
  * Métodos e propriedades da classe (métodos iniciam com `@`)
  * Métodos e propriedades de instância
* Evite o uso de códigos dependentes da plataforma:
  * Use `path.join()` para concatenar nomes de arquivos.
  * Use `os.tmpdir()` ao invés de `/tmp` quando precisar referenciar o diretório temporário.
* Use um simples `return` para retornar explícitamente o fim de uma função.
  * Não usar `return null`, `return undefined`, `null`, ou `undefined`

### Mensagens de Commit do Git

* Use o tempo presente ("Adicionando função" não "Adicionada função")
* Use o modo imperativo ("Mova o cursor para..." não "O cursor deve ser movido...")
* Limite a primeira linha para 72 caracteres ou menos
* Referencie issues e pull requests livremente
* Quando alterar somente a documentação. inclua `[ci skip]` na descrição do commit
* Considerando iniciar a mensagem do commit com um emoji:
  * :art: `:art:` quando aperfeiçoar o formato/estrutura do código
  * :racehorse: `:racehorse:` quando aperfeiçoar a performance
  * :non-potable_water: `:non-potable_water:` quando previnir vazamento de memória
  * :memo: `:memo:` quando escrever documentação
  * :penguin: `:penguin:` quando corrigir algo no Linux
  * :apple: `:apple:` quando corrigir algo no OSX
  * :checkered_flag: `:checkered_flag:` quando corrigir algo no Windows
  * :bug: `:bug:` quando corrigir um bug
  * :fire: `:fire:` quando remover código ou arquivos
  * :green_heart: `:green_heart:` quando corrigir o build do CI
  * :white_check_mark: `:white_check_mark:` quando adicionar testes
  * :lock: `:lock:` quando estiver lidando com segurança
  * :arrow_up: `:arrow_up:` quando atualizar dependências
  * :arrow_down: `:arrow_down:` quando abaixar as dependências
  * :shirt: `:shirt:` quando remover avisos do linter
