Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update contributing doc, add to issue template, add section on DCO #191

Merged
merged 3 commits into from
May 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE/new_language.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ body:
- type: markdown
attributes:
value: |
## Contributing

Check out our [Contributing Guide](https://github.com/flipt-io/flipt-server-sdks/blob/main/CONTRIBUTING.md) to learn more about how you can help contribute / implement this SDK request.

## Join the Flipt Community

- [Join our Discord](https://flipt.io/discord) `#sdk-dev` channel to discuss your language request with the Flipt community.
71 changes: 60 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ The structure of the client folder should be as follows:

The client shape should be as follows:

1. **Variant** method: Should take in a flag key, entity ID, and context. Should return a variant result. Follow language conventions for naming.
2. **Boolean** method: Should take in a flag key, entity ID, and context. Should return a boolean result. Follow language conventions for naming.
3. **Batch** method: Should take in a list of flag keys, entity ID, and context. Should return a list of results. Follow language conventions for naming.
1. **[Variant](https://docs.flipt.io/reference/evaluation/variant-evaluation)** method: Should take in a namespace, flag key, entity ID, and context. Should return a variant result. Follow language conventions for naming.
2. **[Boolean](https://docs.flipt.io/reference/evaluation/boolean-evaluation)** method: Should take in a namespace, flag key, entity ID, and context. Should return a boolean result. Follow language conventions for naming.
3. **[Batch](https://docs.flipt.io/reference/evaluation/batch-evaluation)** method: Should take in a list of namespaces, flag keys, entity ID, and context. Should return a list of results. Follow language conventions for naming.
4. **[Get Flag](https://docs.flipt.io/reference/flags/get-flag)** method: Should take in a namespace and flag key. Should return a flag result. Follow language conventions for naming.
5. **[List Flags](https://docs.flipt.io/reference/flags/list)** method: Should take in a namespace. Should return a list of all flags in that namespace. Follow language conventions for naming.

### 3. Setup Tests

Expand All @@ -60,18 +62,65 @@ Feel free to ask the team for help with this step.

Update the [README.md](./README.md) to include the new client in the list of clients. Follow the existing clients for examples.

### 5. Create a PR
### 5. Setup Dependabot

Add a new section to the [dependabot.yml](./.github/dependabot.yml) file for the new language if applicable. Follow the existing languages for examples.

### 6. Create a PR

Create a PR with the changes and we will review it as soon as possible. Please add any language specific idioms when it comes to packaging the client. This will allow us to automate and publish the client to the appropriate package manager.

### Conventional Commits

We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit messages. Please adhere to this specification when contributing.

## Legal

By submitting a Pull Request, you disavow any rights or claims to any changes submitted to this project and assign the copyright of those changes to Flipt Software Inc.

If you cannot or do not want to reassign those rights (your employment contract for your employer may not allow this), you should not submit a PR. Open an issue and someone else can do the work.

This is a legal way of saying "If you submit a PR to us, that code becomes ours". 99.9% of the time that's what you intend anyways; we hope it doesn't scare you away from contributing.
## Developer Certificate of Origin

We respect the intellectual property rights of others and we want to make sure
all incoming contributions are correctly attributed and licensed. A Developer
Certificate of Origin (DCO) is a lightweight mechanism to do that. The DCO is
a declaration attached to every commit. In the commit message of the contribution,
the developer simply adds a `Signed-off-by` statement and thereby agrees to the DCO,
which you can find below or at [DeveloperCertificate.org](http://developercertificate.org/).

```text
Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the
best of my knowledge, is covered under an appropriate open
source license and I have the right under that license to
submit that work with modifications, whether created in whole
or in part by me, under the same open source license (unless
I am permitted to submit under a different license), as
Indicated in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including
all personal information I submit with it, including my
sign-off) is maintained indefinitely and may be redistributed
consistent with this project or the open source license(s)
involved.
```

We require that every contribution to Flipt to be signed with a DCO. We require the
usage of known identity (such as a real or preferred name). We do not accept anonymous
contributors nor those utilizing pseudonyms. A DCO signed commit will contain a line like:

```text
Signed-off-by: Jane Smith <jane.smith@email.com>
```

You may type this line on your own when writing your commit messages. However, if your
user.name and user.email are set in your git configs, you can use `git commit` with `-s`
or `--signoff` to add the `Signed-off-by` line to the end of the commit message. We also
require revert commits to include a DCO.
Loading