Skip to content

Commit

Permalink
Add Contributor License Agreement
Browse files Browse the repository at this point in the history
  • Loading branch information
wmnnd committed Dec 15, 2024
1 parent 612ec1a commit 777c163
Show file tree
Hide file tree
Showing 5 changed files with 170 additions and 3 deletions.
30 changes: 30 additions & 0 deletions .cla/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Keila Contributor License Agreement

Thank you for contributing to the Keila project.

Keila is a Free Software project under the stewardship of
Philipp Schmieder Medien (The Keila Maintainers). Before we can accept your
contribution, please sign the Contributor License Agreement (CLA).

## How does signing the CLA work?

We’ve created a [convenient little script](./sign.sh) that allows you to sign the CLA without ever leaving the command line.
The script is quite simple and well-documented, so please feel free to inspect the source code.

You can sign the CLA by running it from the main Keila folder:
`./.cla/sign.sh`

Here is how the signing process works:

1) The script shows you the [Keila CLA](./agreement.md)
2) You are asked to confirm your acceptance of the agreement by typing "yes"
3) You are asked to enter your name and email address.
Please, if at all possible, consider using your full real name.\
Your data will *not* be made available publicly.\
Your name and email are encrypted
using a public key and can only be accessed by The Keila Maintainers
and only for the purpose of the CLA.
4) The script adds the encrypted data to the [contributors.txt](./contributors.txt) file.
5) The script asks you if you want to commit and push your signature right away.
If you agree, the signature is committed to the current git branch and pushed to the remote repository.
You can also do this manually afterwards.
36 changes: 36 additions & 0 deletions .cla/agreement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Keila Contributor License Agreement

The following is an agreement between an individual copyright owner ("You") - who
submits software code or other copyrightable works (the "Contribution")
to the Keila project - and Philipp Schmieder Medien ("The Keila Maintainers").

**1. You grant The Keila Maintainers the ability to use the Contributions in any way.**
You hereby grant to The Keila Maintainers, a perpetual, worldwide, royalty-free,
irrevocable license to reproduce, prepare derivative works of, publicly
display, publicly perform, sublicense, and distribute your Contribution
and derivative works.

**2. You are able to grant these rights to The Keila Maintainers.**
You represent that You are legally entitled to grant the above license.

If Your employer has rights to intellectual property that You create,
You represent that You are authorized to make the Contributions on behalf
of that employer, or that Your employer has waived such rights
for the Contributions.

**3. The Contributions are your original work.**
You represent that the Contributions are Your original works of authorship,
and to Your knowledge, no other person claims, or has the right to claim,
any right in any invention or patent related to the Contributions.

You also represent that You are not legally obligated, whether by entering
into an agreement or otherwise, in any way that conflicts with the terms
of this license.
For example, if you have signed an agreement requiring you to assign the
intellectual property rights in the Contributions to an employer or customer,
that would conflict with the terms of this license.

**4. This agreement does not guarantee the acceptance of Your Contribution.**
You understand that the decision to include the Contribution in any project
or source repository is entirely that of The Keila Maintainers, and this agreement does
not guarantee that the Contributions will be included in any product.
14 changes: 14 additions & 0 deletions .cla/key.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAx03Ec3dXcDI6GIMcWxFJ
C1iCKEBCHHbxmN1HB5fEA1CpjxbIuQDpF7larWzRfwdRqQ1mdRmbq67HZaipOMYy
HRaUHOFoYr+5GkHS6gi09jZHasMieDb3sGYog5WI/4YxWW51+QBd7/d8NabkNBf7
iJ2kL0t/eYJoQa1I2w+k6oqsU2MrjWpz+yiB39ebkPPSsyZsPBiFx9g2dD4Nco3D
FX4PzaJlT7h2hiyuiBVFZSZSJ6Mx41hNfbafPp3ZAmMFJFKr4MqfHdEIgBisAJ5Z
cd1LtjrJMOqbakb0ixFJw7kEYv3DiO76j4wGuuQRT+yYoqSeuFv3TYW4pZlDQ5GC
jCtkhimvl812z8sYFsC55p1W0KDbTLel+8Ts2UgC8Y9RV9GO/QF9+qjEYY8tDnqc
pOryGjpw34vTCtFBWrVfEevTPR5Pma9jznrLfrPGLwLD7Ag7aw/bBK/U4j4utsNa
rTRT+3/94lTZSNPwtRBtD9QwdalKw0Q32BU9fuw+vzvbrWTNS7M+/rHREo+yo7Q8
FlTDUeMv28WrYmshZ2g5phFVSGaQydn3Z/ObBQ4opN7EmfLULOyN8s6/GeZxWKCu
aO/kq7AF5Il9s/td1hjCFu4EKQAh4uHqSk6FzH1qOtwfT7La71MmRb1FYQHWQwnZ
gpE6Ef9XqZ1QkmYJHCYQgDECAwEAAQ==
-----END PUBLIC KEY-----
80 changes: 80 additions & 0 deletions .cla/sign.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#!/bin/bash

# Running this script does the following:
# 1) Display the Keila CLA
# 2) Prompt for your acceptance of the CLA
# 3) Prompt for your name and email
# 4) Add your encrypted name and email to ./.cla/signatures.txt
# 5) Commit and push the updated ./.cla/signatures.txt file

confirm () {
read -p "$1 (yes/no) " agree
agree=$(echo -n $agree | tr '[:upper:]' '[:lower:]')
agree=${agree:-"$2"}

if [[ "$agree" == "y" ]] || [[ "$agree" == "yes" ]]; then
return 0
fi

if [[ "$agree" == "n" ]] || [[ "$agree" == "no" ]]; then
return 1
fi

confirm "$1"
}

# Get CLA directory
path=`dirname $(realpath $0)`

# Check if there are any staged files.
# We don't want to accidentally commit anything other than the signature
git_staged=$(git diff --staged)
if [ -n "$git_staged" ]; then
echo "Please run this command only when you have no files currently staged."
exit 1
fi

# Display the CLA and ask for acceptance
less -e "$path/agreement.md"
if ! confirm "Have you read and do you agree to the Keila CLA?"; then
echo "Please read the CLA before you continue."
exit 1
fi


# Prompt for name (default to git user.name)
git_name=`git config user.name`
read -p "Please enter your legal name [$git_name]: " name
name=${name:-$git_name}
git_email=`git config user.email`

# Prompt for email (default to git user.email)
read -p "Please enter your email [$git_email]: " email
email=${email:-$git_email}

# Print signature and ask for confirmation to commit and push
signature="$name <$email>"
echo -e "\nThis is the signature you're using to sign the agreement: $signature"
echo -e "Your signature will be encrypted and can only be decrypted by The Keila Maintainers."

if ! confirm "Write an encrypted version of this signature to .cla/contributors.txt? [yes]" "yes"; then
echo "Nothing written to disk."
exit 1
fi

echo $signature | openssl pkeyutl -encrypt -pubin -inkey "$path/key.pub" | base64 -w0 >> "$path/contributors.txt"
echo >> "$path/contributors.txt"
echo "Written signature to .cla/contributors.txt."

if ! confirm "Commit and push your signature now? [yes]" "yes"; then
echo "You can manually commit and push your signature by running git add ./.cla/contributors.txt && git commit -m 'Sign CLA' && git push"
exit 1
fi

git add "$path/contributors.txt"
git commit -m 'Sign CLA'
git push

echo "Thank you for signing the CLA!"

exit 0
13 changes: 10 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Start by cloning the repository: `git clone https://github.com/pentacent/keila.g
an an instance of [PostgreSQL](https://www.postgresql.org/).

#### Run Keila

* Install dependencies with `mix deps.get`
* Install dependencies and set up the database with `mix setup`
* Start Keila server with `mix phx.server`
Expand All @@ -46,6 +46,13 @@ If you don’t know where to start, take a look at these [Good First Issues](htt
Before you commit code to Keila, make sure to run `mix format` to ensure
consistent formatting.

### Contributor License Agreement (CLA)
Before we can accept your contribution, please sign the Contributor License Agreement (CLA).

Sign the CLA by running `./.cla/sign.sh` and following the instructions in the terminal.

Read here about how the CLA works: [CLA Readme](.cla/README.md)


## Translating Keila
Keila uses the [Gettext format](https://en.wikipedia.org/wiki/Gettext) for
Expand All @@ -56,7 +63,7 @@ Translation files are located in `priv/gettext`.
### Getting Started

Before you create a new translation or modify an existing translation, you need
to extract and update all strings from the code:
to extract and update all strings from the code:
`mix gettext.extract --merge`

### Modify existing translations
Expand All @@ -78,4 +85,4 @@ translation files is [Poedit](https://poedit.net).

## Finalizing your changes
Run `mix gettext.merge priv/gettext` to compile your changes. Make sure to
commit all changes to `.pot`, `.po` and the compiled `.mo`.
commit all changes to `.pot`, `.po` and the compiled `.mo`.

0 comments on commit 777c163

Please sign in to comment.