# Contributing to `jaeger-client-go`

We'd love your help! If you would like to contribute code you can do so through GitHub
by forking the repository and sending a pull request into the `master` branch.

## Getting Started

This library uses [glide](https://github.com/Masterminds/glide) to manage dependencies.

The library's import path is `github.com/uber/jaeger-client-go`.

To get started:

```bash
git submodule update --init --recursive
glide install
make test
```

## Making A Change

*Before making any significant changes, please [open an
issue](https://github.com/uber/jaeger-client-go/issues).* Discussing your proposed
changes ahead of time will make the contribution process smooth for everyone.

Once we've discussed your changes and you've got your code ready, make sure
that tests are passing (`make test` or `make cover`) and open your PR! Your
pull request is most likely to be accepted if it:

* Includes tests for new functionality.
* Follows the guidelines in [Effective
  Go](https://golang.org/doc/effective_go.html) and the [Go team's common code
  review comments](https://github.com/golang/go/wiki/CodeReviewComments).
* Has a [good commit
  message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).

## Cutting a Release

See [RELEASE.md](./RELEASE.md)

## License

By contributing your code, you agree to license your contribution under the terms of the [Apache 2.0 License](LICENSE).

If you are adding a new file it should have a header like below. The easiest way to add such header is to run `make fmt`.

```
// Copyright (c) 2017 Uber Technologies, Inc.
//
// 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.
```

