# Contributing to Ebitengine

Ebitengine is an open source project and we appreciate your contributions!

There are some rules for Ebitengine contribution.

## Filing an issue in the GitHub issue

File an issue in the GitHub issues, if you find a problem or have a feature request but this is not filed.

Except for very trivial fixes like fixing misspelling, it is a must to have an issue.

## Asking us when you are not sure

In Ebitengine, problems might not be documented very well in GitHub issues. Please ask us before you work on such issue.

You can ask us at these communities:

 * [Ebitengine Discord Server](https://discord.gg/3tVdM5H8cC)
 * `#ebitengine` channel in [Gophers Slack](https://invite.slack.golangbridge.org/)
 * [GitHub Discussion](https://github.com/hajimehoshi/ebiten/discussions)

## Following the Go convention

Please follow the Go convention like [Effective Go](https://golang.org/doc/effective_go.html).
For example, formatting by `go fmt` is required.

## Adding copyright comments to each file

```go
// Copyright [YYYY] The Ebitengine Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
```

You don't have to update existing files' license comments.

## Implementation details

See the [documents](https://ebitengine.org/en/documents/implementation.html) about internal implementation.

## Fixing the documentation

Ebitengine's documentations are managed at [ebitengine/ebitengine.org](https://github.com/ebitengine/ebitengine.org).

Before submitting a documentation PR, read through the [README](https://github.com/ebitengine/ebitengine.org/blob/main/README.md) in that repo.
