Skip to content

Commit 39a1c97

Browse files
committed
[CONTRIBUTING.md] Add CLA section + other small fixes
1 parent ff3f825 commit 39a1c97

File tree

1 file changed

+54
-13
lines changed

1 file changed

+54
-13
lines changed

CONTRIBUTING.md

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ great.
44
Contents
55
========
66

7-
1. [Building Juju](#building-juju)
8-
2. [Getting started](#getting-started)
9-
3. [Dependency management](#dependency-management)
10-
4. [Code formatting](#code-formatting)
11-
5. [Workflow](#workflow)
12-
6. [Community](#community)
7+
- [Quick links](#quick-links)
8+
- [Building Juju](#building-juju)
9+
- [Getting started](#getting-started)
10+
- [Dependency management](#dependency-management)
11+
- [Code formatting](#code-formatting)
12+
- [Workflow](#workflow)
13+
- [Contributor licence agreement](#contributor-licence-agreement)
14+
- [Community](#community)
1315

1416
Quick links
1517
===========
@@ -29,17 +31,17 @@ Building Juju
2931

3032
## Installing Go
3133

32-
`juju` is written in Go (http://golang.org), a modern, compiled, statically typed,
34+
`juju` is written in [Go](https://go.dev/), a modern, compiled, statically typed,
3335
concurrent language.
3436

3537
Generally, Juju is built against the most recent version of Go, with the caveat that Go versions are not incremented during a release cycle. This means that `develop` will typically be using the latest version of Go, but any given release branch may lag by one version or so. Check the `go.mod` file at the root of the project for the targeted version of Go, as this is authoritative.
3638

37-
For example, the following indicates that Go 1.18 is targeted:
39+
For example, the following indicates that Go 1.19 is targeted:
3840

3941
```
4042
module github.com/juju/juju
4143
42-
go 1.18
44+
go 1.19
4345
```
4446

4547
### Official distribution
@@ -50,7 +52,7 @@ Go can be [installed](https://golang.org/doc/install#install) from the official
5052

5153
[Snap](https://snapcraft.io/go) may also be used to install Go on Linux.
5254

53-
snap install go --channel=1.18/stable --classic
55+
snap install go --channel=1.19/stable --classic
5456

5557
## Build Juju and its dependencies
5658

@@ -150,7 +152,7 @@ running the check as a pre-commit hook also works.
150152
Staying in sync
151153
---------------
152154

153-
Make sure your local copy and github fork stay in sync with upstream:
155+
Make sure your local copy and GitHub fork stay in sync with upstream:
154156

155157
```bash
156158
cd juju
@@ -169,7 +171,8 @@ external repositories so that Juju is insulated from changes to those repos.
169171
go mod
170172
------
171173

172-
Juju uses Go modules to manage dependencies. Therfore you don't need to do anything to ensure you are building with the correct versions.
174+
Juju uses Go modules to manage dependencies. Your Go installation will ensure
175+
you are building with the correct version - you don't need to do anything.
173176

174177
Updating dependencies
175178
---------------------
@@ -353,14 +356,52 @@ Be sure to have a look at:
353356

354357
https://help.github.com/articles/using-pull-requests
355358

359+
360+
Contributor licence agreement
361+
----------------------
362+
363+
We welcome external contributions to Juju, but in order to incorporate these
364+
into the codebase, we will need you to sign the
365+
[Canonical contributor licence agreement (CLA)](https://ubuntu.com/legal/contributors).
366+
This just gives us permission to use your contributions - you still retain full
367+
copyright of your code.
368+
369+
We have a GitHub Action which checks if you have signed the CLA. To ensure this
370+
passes, please follow these steps:
371+
372+
1. Ensure your Git commits are signed by an email that you can access
373+
(you can't use the `@users.noreply.github.com` email that GitHub provides).
374+
2. Create an account on [Launchpad](https://launchpad.net/), if you don't
375+
already have one.
376+
3. Ensure the email you used for Git commits is a **verified** email on your
377+
Launchpad account. To do this:
378+
- Go to your Launchpad homepage (`launchpad.net/~[username]`).
379+
- Check the addresses listed under the **Email** heading. If your Git email
380+
is listed, you're good.
381+
- If not, click "Change email settings".
382+
- Add your Git email as a new address.
383+
- Follow the instructions to verify your email.
384+
4. Visit the [CLA website](https://ubuntu.com/legal/contributors), scroll down
385+
and press "Sign the contributor agreement".
386+
5. Read the agreement and fill in your contact details. Ensure that you provide
387+
your Launchpad username in the "Launchpad id" box.
388+
6. Press "I agree" to sign the CLA.
389+
390+
Eventually, your Launchpad account should be added to the
391+
["Canonical Contributor Agreement" team](https://launchpad.net/~contributor-agreement-canonical).
392+
You will see it listed under "Memberships" on your Launchpad homepage.
393+
Once this happens, the CLA check will pass, and we will happily review
394+
your contribution.
395+
396+
356397
Sanity checking PRs and unit tests
357398
----------------------
358399

359400
All PRs run pre-merge check - unit tests and a small but representative sample
360401
of functional tests. This check is re-run anytime the PR changes, for example
361402
when a new commit is added.
362403

363-
You can also initiate this check by commenting /build in the PR.
404+
You can also initiate this check by commenting `/build` in the PR.
364405

365406
Code review
366407
-----------

0 commit comments

Comments
 (0)