Skip to content

Commit

Permalink
Create separate contributing guidelines
Browse files Browse the repository at this point in the history
buger committed Jan 20, 2017
1 parent 19ae295 commit de66f89
Showing 3 changed files with 104 additions and 33 deletions.
21 changes: 21 additions & 0 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Contributor License Agreement
The following terms are used throughout this agreement:

* You - the person or legal entity including its affiliates asked to accept this agreement. An affiliate is any entity that controls or is controlled by the legal entity, or is under common control with it.
* Project - is an umbrella term that refers to any and all Tyk Technologies open source projects.
* Contribution - any type of work that is submitted to a Project, including any modifications or additions to existing work.
* Submitted - conveyed to a Project via a pull request, commit, issue, or any form of electronic, written, or verbal communication with Tyk Technologies, contributors or maintainers.

### 1. Grant of Copyright License.

Subject to the terms and conditions of this agreement, You grant to the Projects’ maintainers, contributors, users and to Tyk Technologies a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your contributions and such derivative works. Except for this license, You reserve all rights, title, and interest in your contributions.

### 2. Grant of Patent License.

Subject to the terms and conditions of this agreement, You grant to the Projects’ maintainers, contributors, users and to Tyk Technologies a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer your contributions, where such license applies only to those patent claims licensable by you that are necessarily infringed by your contribution or by combination of your contribution with the project to which this contribution was submitted.

If any entity institutes patent litigation - including cross-claim or counterclaim in a lawsuit - against You alleging that your contribution or any project it was submitted to constitutes or is responsible for direct or contributory patent infringement, then any patent licenses granted to that entity under this agreement shall terminate as of the date such litigation is filed.

### 3. Source of Contribution.

Your contribution is either your original creation, based upon previous work that, to the best of your knowledge, is covered under an appropriate open source license and you have the right under that license to submit that work with modifications, whether created in whole or in part by you, or you have clearly identified the source of the contribution and any license or other restriction (like related patents, trademarks, and license agreements) of which you are personally aware.
79 changes: 79 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Contributing to Tyk

**First**: if you're unsure or afraid of anything, just ask or submit the issue or pull request anyways. You won't be yelled at for giving your best effort. The worst that can happen is that you'll be politely asked to change something. We appreciate any sort of contributions, and don't want a wall of rules to get in the way of that.

However, for those individuals who want a bit more guidance on the best way to contribute to the project, read on. This document will cover what we're looking for. By addressing all the points we're looking for, it raises the chances we can quickly merge or address your contributions.

## Filing issues

If you have a question about Tyk or have a problem using it, please
start with the GitHub search and our [community forum](https://community.tyk.io). If that doesn't answer your questions, or if you think you found a bug, please [file an
issue](https://github.com/kubernetes/kubernetes/issues/new).

## How to become a contributor and submit your own code

### Contributor License Agreements

We'd love to accept your patches! Before we can take them, we have to jump a couple of legal hurdles.

The Tyk CLA [must be signed](https://github.com/TykTechnologies/tyk/blob/master/CLA.md) by all contributors. You will be automatically asked to sign CLA once PR will be created.

Once you are CLA'ed, we'll be able to accept your pull requests. For any issues that you face during this process, please create an GitHub issue explaining the problem and we will help get it sorted out.

***NOTE***: Only original source code from you and other people that have
signed the CLA can be accepted into the repository. This policy does not
apply to [vendor](vendor/).

### Finding Things That Need Help

If you're new to the project and want to help, but don't know where to start,
we have a semi-curated list of issues that have should not need deep knowledge
of the system. [Have a look and see if anything sounds
interesting](https://github.com/TykTechnologies/tyk/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted).

Alternatively, read some of the [many docs on the system](https://tyk.io/tyk-documentation/get-started/), and pick a component that seems
interesting. Start with `main()` and read
until you find something you want to fix. The best way to learn is to hack!
There's always code that can be clarified and variables or functions that can
be renamed or commented.

### `master` is unstable

We will do our best to keep master in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with. We will do our best to communicate these changes and version appropriately so you can lock into a specific version if need be. For stable releases check our tags and `stable` branch, which contains our latest stable release.


### Contributing A Patch

If you're working on an existing issue, such as one of the `help-wanted` ones
above, simply respond to the issue and express interest in working on it. This
helps other people know that the issue is active, and hopefully prevents
duplicated efforts.

If you want to work on a new idea of relatively small scope:

1. Submit an issue describing your proposed change to the repo in question.
1. The repo owners will respond to your issue promptly.
1. Clone the repo, develop, and test your changes.
1. Submit a pull request.
1. If your proposed change is accepted, and you haven't already done so, sign a
Contributor License Agreement (see details above).

If you want to work on a bigger idea, we **strongly** recommend that you start with
some bugs or smaller features. It is always better to discuss your idea with our team first, before implementing it.

### Downloading the project
You need to clone Tyk from GitHub to your GOPATH folder, or alternatively you can run `go get -d github.com/TykTechnologies/tyk` which automatically downloads project to the right path.

### Building the project
You need to have working Go enironment: see [golang.org](https://golang.org/doc/code.html) for more info on how Go works with code.

To build and test Tyk use built-in `go` commands: `go build` and `go test -v`. If you want to just test a subset of the project, you can pass the `-run` argument with name of the test.

Currently in order for tests to pass, a **Redis host is required**. We know, this is terrible and should be handled with an interface, and it is, however in the current version there is a hard requirement for the application to have its default memory setup to use redis as part of a deployment, this is to make it easier to install the application for the end-user. Future versions will work around this, or we may drop the memory requirement. Simplest way to run Redis is to use official Docker image [https://hub.docker.com/_/redis/](https://hub.docker.com/_/redis/)

### Adding dependencies

If your patch depends on new packages, ensure that they will be put in `/vendor` folder. `git` is very handy when it comes to vendoring, because it automatically creates needed directories, example: `git clone https://github.com/Shopify/sarama.git vendor/github.com/Shopify/sarama`.

### Geo IP features
This product utilises GeoLite2 data created by MaxMind, available from [http://www.maxmind.com](http://www.maxmind.com).
37 changes: 4 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -50,44 +50,15 @@ All the documentation can be found on our main site at http://tyk.io/

Tyk is released under the MPL v2.0 please see the LICENSE.md file for a full version of the license.

## Contribute / Build ##
## Contributing ##

To get started contributing, clone the repo to your local go workspace, change into the new tyk directory and run `go get`, this should retrieve all the dependencies.
For more information about contributing PRs and issues, see our [Contribution Guidelines](CONTRIBUTING.md).

We are working to increase test coverage of features, currently the majority of auth methods and middleware are tested, however it could always be better.

Any changes that are submitted with a pull request should come with a test and be in a separate branch. Basically, use this checklist:

- Do your changes have tests?
- Have you run the tests?
- Did they pass?
- Have you written a test for your feature?
- Does it pass after merge?

If you can answer yes to all of the above, feel free to submit a pull request :-)

## Roadmap
## Roadmap ##

To coordinate development and be completely transparent as to where the project is going, the version roadmap for the next version, as well as proposed features
and adopted proposals can be viewed on our public Trello board:

[https://trello.com/b/59d5kAZ5/tyk-api-gateway-roadmap](https://trello.com/b/59d5kAZ5/tyk-api-gateway-roadmap)

Any proposals can be made in the Github issue tracker, proposals that are adopted will be placed into the trello and then moved according to their status.

### A note on the tests

Currently in order for tests to pass, a redis host is required. We know, this is terrible and should be handled with an interface, and it is, however
in the current version there is a hard requirement for the application to have its default memory setup to use redis as part of a deployment, this is
to make it easier to install the application for the end-user. Future versions will work around this, or we may drop the memory requirement.

The simplest way to get the tests to run is to install local redis, or (what I do) have a vagrant instance that is running redis, then you can just `vagrant up`
when you need redis and kill it later. Just make sure you are forwarding the default ports 1:1.

### Dev versus stable

The master branch is NOT the stable releases, check the tags for stable releases that can be patched, please see the CHANGELOG for breaking changes or to see how things stand.

### Geo IP features

This product utilises GeoLite2 data created by MaxMind, available from [http://www.maxmind.com](http://www.maxmind.com).
Any proposals can be made in the Github issue tracker, proposals that are adopted will be placed into the trello and then moved according to their status.

0 comments on commit de66f89

Please sign in to comment.