1*6236dae4SAndroid Build Coastguard Worker<!-- 2*6236dae4SAndroid Build Coastguard WorkerCopyright (C) Daniel Stenberg, <[email protected]>, et al. 3*6236dae4SAndroid Build Coastguard Worker 4*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl 5*6236dae4SAndroid Build Coastguard Worker--> 6*6236dae4SAndroid Build Coastguard Worker 7*6236dae4SAndroid Build Coastguard Worker# Contributing to the curl project 8*6236dae4SAndroid Build Coastguard Worker 9*6236dae4SAndroid Build Coastguard WorkerThis document is intended to offer guidelines on how to best contribute to the 10*6236dae4SAndroid Build Coastguard Workercurl project. This concerns new features as well as corrections to existing 11*6236dae4SAndroid Build Coastguard Workerflaws or bugs. 12*6236dae4SAndroid Build Coastguard Worker 13*6236dae4SAndroid Build Coastguard Worker## Join the Community 14*6236dae4SAndroid Build Coastguard Worker 15*6236dae4SAndroid Build Coastguard WorkerSkip over to [https://curl.se/mail/](https://curl.se/mail/) and join 16*6236dae4SAndroid Build Coastguard Workerthe appropriate mailing list(s). Read up on details before you post 17*6236dae4SAndroid Build Coastguard Workerquestions. Read this file before you start sending patches. We prefer 18*6236dae4SAndroid Build Coastguard Workerquestions sent to and discussions being held on the mailing list(s), not sent 19*6236dae4SAndroid Build Coastguard Workerto individuals. 20*6236dae4SAndroid Build Coastguard Worker 21*6236dae4SAndroid Build Coastguard WorkerBefore posting to one of the curl mailing lists, please read up on the 22*6236dae4SAndroid Build Coastguard Worker[mailing list etiquette](https://curl.se/mail/etiquette.html). 23*6236dae4SAndroid Build Coastguard Worker 24*6236dae4SAndroid Build Coastguard WorkerWe also hang out on IRC in #curl on libera.chat 25*6236dae4SAndroid Build Coastguard Worker 26*6236dae4SAndroid Build Coastguard WorkerIf you are at all interested in the code side of things, consider clicking 27*6236dae4SAndroid Build Coastguard Worker'watch' on the [curl repository on GitHub](https://github.com/curl/curl) to be 28*6236dae4SAndroid Build Coastguard Workernotified of pull requests and new issues posted there. 29*6236dae4SAndroid Build Coastguard Worker 30*6236dae4SAndroid Build Coastguard Worker## License and copyright 31*6236dae4SAndroid Build Coastguard Worker 32*6236dae4SAndroid Build Coastguard WorkerWhen contributing with code, you agree to put your changes and new code under 33*6236dae4SAndroid Build Coastguard Workerthe same license curl and libcurl is already using unless stated and agreed 34*6236dae4SAndroid Build Coastguard Workerotherwise. 35*6236dae4SAndroid Build Coastguard Worker 36*6236dae4SAndroid Build Coastguard WorkerIf you add a larger piece of code, you can opt to make that file or set of 37*6236dae4SAndroid Build Coastguard Workerfiles to use a different license as long as they do not enforce any changes to 38*6236dae4SAndroid Build Coastguard Workerthe rest of the package and they make sense. Such "separate parts" can not be 39*6236dae4SAndroid Build Coastguard WorkerGPL licensed (as we do not want copyleft to affect users of libcurl) but they 40*6236dae4SAndroid Build Coastguard Workermust use "GPL compatible" licenses (as we want to allow users to use libcurl 41*6236dae4SAndroid Build Coastguard Workerproperly in GPL licensed environments). 42*6236dae4SAndroid Build Coastguard Worker 43*6236dae4SAndroid Build Coastguard WorkerWhen changing existing source code, you do not alter the copyright of the 44*6236dae4SAndroid Build Coastguard Workeroriginal file(s). The copyright is still owned by the original creator(s) or 45*6236dae4SAndroid Build Coastguard Workerthose who have been assigned copyright by the original author(s). 46*6236dae4SAndroid Build Coastguard Worker 47*6236dae4SAndroid Build Coastguard WorkerBy submitting a patch to the curl project, you are assumed to have the right 48*6236dae4SAndroid Build Coastguard Workerto the code and to be allowed by your employer or whatever to hand over that 49*6236dae4SAndroid Build Coastguard Workerpatch/code to us. We credit you for your changes as far as possible, to give 50*6236dae4SAndroid Build Coastguard Workercredit but also to keep a trace back to who made what changes. Please always 51*6236dae4SAndroid Build Coastguard Workerprovide us with your full real name when contributing, 52*6236dae4SAndroid Build Coastguard Worker 53*6236dae4SAndroid Build Coastguard Worker## What To Read 54*6236dae4SAndroid Build Coastguard Worker 55*6236dae4SAndroid Build Coastguard WorkerSource code, the man pages, the [INTERNALS 56*6236dae4SAndroid Build Coastguard Workerdocument](https://curl.se/dev/internals.html), 57*6236dae4SAndroid Build Coastguard Worker[TODO](https://curl.se/docs/todo.html), 58*6236dae4SAndroid Build Coastguard Worker[KNOWN_BUGS](https://curl.se/docs/knownbugs.html) and the [most recent 59*6236dae4SAndroid Build Coastguard Workerchanges](https://curl.se/dev/sourceactivity.html) in git. Just lurking on the 60*6236dae4SAndroid Build Coastguard Worker[curl-library mailing list](https://curl.se/mail/list.cgi?list=curl-library) 61*6236dae4SAndroid Build Coastguard Workergives you a lot of insights on what's going on right now. Asking there is a 62*6236dae4SAndroid Build Coastguard Workergood idea too. 63*6236dae4SAndroid Build Coastguard Worker 64*6236dae4SAndroid Build Coastguard Worker## Write a good patch 65*6236dae4SAndroid Build Coastguard Worker 66*6236dae4SAndroid Build Coastguard Worker### Follow code style 67*6236dae4SAndroid Build Coastguard Worker 68*6236dae4SAndroid Build Coastguard WorkerWhen writing C code, follow the 69*6236dae4SAndroid Build Coastguard Worker[CODE_STYLE](https://curl.se/dev/code-style.html) already established in 70*6236dae4SAndroid Build Coastguard Workerthe project. Consistent style makes code easier to read and mistakes less 71*6236dae4SAndroid Build Coastguard Workerlikely to happen. Run `make checksrc` before you submit anything, to make sure 72*6236dae4SAndroid Build Coastguard Workeryou follow the basic style. That script does not verify everything, but if it 73*6236dae4SAndroid Build Coastguard Workercomplains you know you have work to do. 74*6236dae4SAndroid Build Coastguard Worker 75*6236dae4SAndroid Build Coastguard Worker### Non-clobbering All Over 76*6236dae4SAndroid Build Coastguard Worker 77*6236dae4SAndroid Build Coastguard WorkerWhen you write new functionality or fix bugs, it is important that you do not 78*6236dae4SAndroid Build Coastguard Workerfiddle all over the source files and functions. Remember that it is likely 79*6236dae4SAndroid Build Coastguard Workerthat other people have done changes in the same source files as you have and 80*6236dae4SAndroid Build Coastguard Workerpossibly even in the same functions. If you bring completely new 81*6236dae4SAndroid Build Coastguard Workerfunctionality, try writing it in a new source file. If you fix bugs, try to 82*6236dae4SAndroid Build Coastguard Workerfix one bug at a time and send them as separate patches. 83*6236dae4SAndroid Build Coastguard Worker 84*6236dae4SAndroid Build Coastguard Worker### Write Separate Changes 85*6236dae4SAndroid Build Coastguard Worker 86*6236dae4SAndroid Build Coastguard WorkerIt is annoying when you get a huge patch from someone that is said to fix 11 87*6236dae4SAndroid Build Coastguard Workerodd problems, but discussions and opinions do not agree with 10 of them - or 9 88*6236dae4SAndroid Build Coastguard Workerof them were already fixed in a different way. Then the person merging this 89*6236dae4SAndroid Build Coastguard Workerchange needs to extract the single interesting patch from somewhere within the 90*6236dae4SAndroid Build Coastguard Workerhuge pile of source, and that creates a lot of extra work. 91*6236dae4SAndroid Build Coastguard Worker 92*6236dae4SAndroid Build Coastguard WorkerPreferably, each fix that corrects a problem should be in its own patch/commit 93*6236dae4SAndroid Build Coastguard Workerwith its own description/commit message stating exactly what they correct so 94*6236dae4SAndroid Build Coastguard Workerthat all changes can be selectively applied by the maintainer or other 95*6236dae4SAndroid Build Coastguard Workerinterested parties. 96*6236dae4SAndroid Build Coastguard Worker 97*6236dae4SAndroid Build Coastguard WorkerAlso, separate changes enable bisecting much better for tracking problems 98*6236dae4SAndroid Build Coastguard Workerand regression in the future. 99*6236dae4SAndroid Build Coastguard Worker 100*6236dae4SAndroid Build Coastguard Worker### Patch Against Recent Sources 101*6236dae4SAndroid Build Coastguard Worker 102*6236dae4SAndroid Build Coastguard WorkerPlease try to get the latest available sources to make your patches against. 103*6236dae4SAndroid Build Coastguard WorkerIt makes the lives of the developers so much easier. The best is if you get 104*6236dae4SAndroid Build Coastguard Workerthe most up-to-date sources from the git repository, but the latest release 105*6236dae4SAndroid Build Coastguard Workerarchive is quite OK as well. 106*6236dae4SAndroid Build Coastguard Worker 107*6236dae4SAndroid Build Coastguard Worker### Documentation 108*6236dae4SAndroid Build Coastguard Worker 109*6236dae4SAndroid Build Coastguard WorkerWriting docs is dead boring and one of the big problems with many open source 110*6236dae4SAndroid Build Coastguard Workerprojects but someone's gotta do it. It makes things a lot easier if you submit 111*6236dae4SAndroid Build Coastguard Workera small description of your fix or your new features with every contribution 112*6236dae4SAndroid Build Coastguard Workerso that it can be swiftly added to the package documentation. 113*6236dae4SAndroid Build Coastguard Worker 114*6236dae4SAndroid Build Coastguard WorkerDocumentation is mostly provided as manpages or plain ASCII files. The 115*6236dae4SAndroid Build Coastguard Workermanpages are rendered from their source files that are usually written using 116*6236dae4SAndroid Build Coastguard Workermarkdown. Most HTML files on the website and in the release archives are 117*6236dae4SAndroid Build Coastguard Workergenerated from corresponding markdown and ASCII files. 118*6236dae4SAndroid Build Coastguard Worker 119*6236dae4SAndroid Build Coastguard Worker### Test Cases 120*6236dae4SAndroid Build Coastguard Worker 121*6236dae4SAndroid Build Coastguard WorkerSince the introduction of the test suite, we can quickly verify that the main 122*6236dae4SAndroid Build Coastguard Workerfeatures are working as they are supposed to. To maintain this situation and 123*6236dae4SAndroid Build Coastguard Workerimprove it, all new features and functions that are added need to be tested in 124*6236dae4SAndroid Build Coastguard Workerthe test suite. Every feature that is added should get at least one valid test 125*6236dae4SAndroid Build Coastguard Workercase that verifies that it works as documented. If every submitter also posts 126*6236dae4SAndroid Build Coastguard Workera few test cases, it does not end up a heavy burden on a single person. 127*6236dae4SAndroid Build Coastguard Worker 128*6236dae4SAndroid Build Coastguard WorkerIf you do not have test cases or perhaps you have done something that is hard 129*6236dae4SAndroid Build Coastguard Workerto write tests for, do explain exactly how you have otherwise tested and 130*6236dae4SAndroid Build Coastguard Workerverified your changes. 131*6236dae4SAndroid Build Coastguard Worker 132*6236dae4SAndroid Build Coastguard Worker# Submit Your Changes 133*6236dae4SAndroid Build Coastguard Worker 134*6236dae4SAndroid Build Coastguard Worker## Get your changes merged 135*6236dae4SAndroid Build Coastguard Worker 136*6236dae4SAndroid Build Coastguard WorkerIdeally you file a [pull request on 137*6236dae4SAndroid Build Coastguard WorkerGitHub](https://github.com/curl/curl/pulls), but you can also send your plain 138*6236dae4SAndroid Build Coastguard Workerpatch to [the curl-library mailing 139*6236dae4SAndroid Build Coastguard Workerlist](https://curl.se/mail/list.cgi?list=curl-library). 140*6236dae4SAndroid Build Coastguard Worker 141*6236dae4SAndroid Build Coastguard WorkerIf you opt to post a patch on the mailing list, chances are someone converts 142*6236dae4SAndroid Build Coastguard Workerit into a pull request for you, to have the CI jobs verify it proper before it 143*6236dae4SAndroid Build Coastguard Workercan be merged. Be prepared that some feedback on the proposed change might 144*6236dae4SAndroid Build Coastguard Workerthen come on GitHub. 145*6236dae4SAndroid Build Coastguard Worker 146*6236dae4SAndroid Build Coastguard WorkerYour changes be reviewed and discussed and you are expected to correct flaws 147*6236dae4SAndroid Build Coastguard Workerpointed out and update accordingly, or the change risks stalling and 148*6236dae4SAndroid Build Coastguard Workereventually just getting deleted without action. As a submitter of a change, 149*6236dae4SAndroid Build Coastguard Workeryou are the owner of that change until it has been merged. 150*6236dae4SAndroid Build Coastguard Worker 151*6236dae4SAndroid Build Coastguard WorkerRespond on the list or on GitHub about the change and answer questions and/or 152*6236dae4SAndroid Build Coastguard Workerfix nits/flaws. This is important. We take lack of replies as a sign that you 153*6236dae4SAndroid Build Coastguard Workerare not anxious to get your patch accepted and we tend to simply drop such 154*6236dae4SAndroid Build Coastguard Workerchanges. 155*6236dae4SAndroid Build Coastguard Worker 156*6236dae4SAndroid Build Coastguard Worker## About pull requests 157*6236dae4SAndroid Build Coastguard Worker 158*6236dae4SAndroid Build Coastguard WorkerWith GitHub it is easy to send a [pull 159*6236dae4SAndroid Build Coastguard Workerrequest](https://github.com/curl/curl/pulls) to the curl project to have 160*6236dae4SAndroid Build Coastguard Workerchanges merged. 161*6236dae4SAndroid Build Coastguard Worker 162*6236dae4SAndroid Build Coastguard WorkerWe strongly prefer pull requests to mailed patches, as it makes it a proper 163*6236dae4SAndroid Build Coastguard Workergit commit that is easy to merge and they are easy to track and not that easy 164*6236dae4SAndroid Build Coastguard Workerto lose in the flood of many emails, like they sometimes do on the mailing 165*6236dae4SAndroid Build Coastguard Workerlists. 166*6236dae4SAndroid Build Coastguard Worker 167*6236dae4SAndroid Build Coastguard WorkerEvery pull request submitted is automatically tested in several different 168*6236dae4SAndroid Build Coastguard Workerways. [See the CI document for more 169*6236dae4SAndroid Build Coastguard Workerinformation](https://github.com/curl/curl/blob/master/tests/CI.md). 170*6236dae4SAndroid Build Coastguard Worker 171*6236dae4SAndroid Build Coastguard WorkerSometimes the tests fail due to a dependency service temporarily being offline 172*6236dae4SAndroid Build Coastguard Workeror otherwise unavailable, e.g. package downloads. In this case you can just 173*6236dae4SAndroid Build Coastguard Workertry to update your pull requests to rerun the tests later as described below. 174*6236dae4SAndroid Build Coastguard Worker 175*6236dae4SAndroid Build Coastguard WorkerYou can update your pull requests by pushing new commits or force-pushing 176*6236dae4SAndroid Build Coastguard Workerchanges to existing commits. Force-pushing an amended commit without any 177*6236dae4SAndroid Build Coastguard Workeractual content changed also allows you to retrigger the tests for that commit. 178*6236dae4SAndroid Build Coastguard Worker 179*6236dae4SAndroid Build Coastguard WorkerWhen you adjust your pull requests after review, consider squashing the 180*6236dae4SAndroid Build Coastguard Workercommits so that we can review the full updated version more easily. 181*6236dae4SAndroid Build Coastguard Worker 182*6236dae4SAndroid Build Coastguard WorkerA pull request sent to the project might get labeled `needs-votes` by a 183*6236dae4SAndroid Build Coastguard Workerproject maintainer. This label means that in addition to meeting all other 184*6236dae4SAndroid Build Coastguard Workerchecks and qualifications this pull request must also receive more "votes" of 185*6236dae4SAndroid Build Coastguard Workeruser support. More signs that people want this to happen. It could be in the 186*6236dae4SAndroid Build Coastguard Workerform of messages saying so, or thumbs-up reactions on GitHub. 187*6236dae4SAndroid Build Coastguard Worker 188*6236dae4SAndroid Build Coastguard Worker## When the pull request is approved 189*6236dae4SAndroid Build Coastguard Worker 190*6236dae4SAndroid Build Coastguard WorkerIf it does not seem to get approved when you think it is ready - feel free to 191*6236dae4SAndroid Build Coastguard Workerask for approval. 192*6236dae4SAndroid Build Coastguard Worker 193*6236dae4SAndroid Build Coastguard WorkerOnce your pull request has been approved it can be merged by a maintainer. 194*6236dae4SAndroid Build Coastguard Worker 195*6236dae4SAndroid Build Coastguard WorkerFor new features, or changes, we require that the *feature window* is open for 196*6236dae4SAndroid Build Coastguard Workerthe pull request to be merged. This is typically a three week period that 197*6236dae4SAndroid Build Coastguard Workerstarts ten days after a previous release. New features submitted as pull 198*6236dae4SAndroid Build Coastguard Workerrequests while the window is closed simply have to wait until it opens to get 199*6236dae4SAndroid Build Coastguard Workermerged. 200*6236dae4SAndroid Build Coastguard Worker 201*6236dae4SAndroid Build Coastguard WorkerIf time passes without your approved pull request gets merged: feel free to 202*6236dae4SAndroid Build Coastguard Workerask what more you can do to make it happen. 203*6236dae4SAndroid Build Coastguard Worker 204*6236dae4SAndroid Build Coastguard Worker## Making quality changes 205*6236dae4SAndroid Build Coastguard Worker 206*6236dae4SAndroid Build Coastguard WorkerMake the patch against as recent source versions as possible. 207*6236dae4SAndroid Build Coastguard Worker 208*6236dae4SAndroid Build Coastguard WorkerIf you have followed the tips in this document and your patch still has not 209*6236dae4SAndroid Build Coastguard Workerbeen incorporated or responded to after some weeks, consider resubmitting it 210*6236dae4SAndroid Build Coastguard Workerto the list or better yet: change it to a pull request. 211*6236dae4SAndroid Build Coastguard Worker 212*6236dae4SAndroid Build Coastguard Worker## Commit messages 213*6236dae4SAndroid Build Coastguard Worker 214*6236dae4SAndroid Build Coastguard WorkerHow to write git commit messages in the curl project. 215*6236dae4SAndroid Build Coastguard Worker 216*6236dae4SAndroid Build Coastguard Worker ---- start ---- 217*6236dae4SAndroid Build Coastguard Worker [area]: [short line describing the main effect] 218*6236dae4SAndroid Build Coastguard Worker -- empty line -- 219*6236dae4SAndroid Build Coastguard Worker [full description, no wider than 72 columns that describes as much as 220*6236dae4SAndroid Build Coastguard Worker possible as to why this change is made, and possibly what things 221*6236dae4SAndroid Build Coastguard Worker it fixes and everything else that is related, 222*6236dae4SAndroid Build Coastguard Worker -- end -- 223*6236dae4SAndroid Build Coastguard Worker 224*6236dae4SAndroid Build Coastguard WorkerThe first line is a succinct description of the change and should ideally work 225*6236dae4SAndroid Build Coastguard Workeras a single line in the RELEASE NOTES. 226*6236dae4SAndroid Build Coastguard Worker 227*6236dae4SAndroid Build Coastguard Worker - use the imperative, present tense: **change** not "changed" nor "changes" 228*6236dae4SAndroid Build Coastguard Worker - do not capitalize the first letter 229*6236dae4SAndroid Build Coastguard Worker - no period (.) at the end 230*6236dae4SAndroid Build Coastguard Worker 231*6236dae4SAndroid Build Coastguard WorkerThe `[area]` in the first line can be `http2`, `cookies`, `openssl` or 232*6236dae4SAndroid Build Coastguard Workersimilar. There is no fixed list to select from but using the same "area" as 233*6236dae4SAndroid Build Coastguard Workerother related changes could make sense. 234*6236dae4SAndroid Build Coastguard Worker 235*6236dae4SAndroid Build Coastguard Worker## Commit message keywords 236*6236dae4SAndroid Build Coastguard Worker 237*6236dae4SAndroid Build Coastguard WorkerUse the following ways to improve the message and provide pointers to related 238*6236dae4SAndroid Build Coastguard Workerwork. 239*6236dae4SAndroid Build Coastguard Worker 240*6236dae4SAndroid Build Coastguard Worker- `Follow-up to {shorthash}` - if this fixes or continues a previous commit; 241*6236dae4SAndroid Build Coastguard Workeradd a `Ref:` that commit's PR or issue if it is not a small, obvious fix; 242*6236dae4SAndroid Build Coastguard Workerfollowed by an empty line 243*6236dae4SAndroid Build Coastguard Worker 244*6236dae4SAndroid Build Coastguard Worker- `Bug: URL` to the source of the report or more related discussion; use 245*6236dae4SAndroid Build Coastguard Worker`Fixes` for GitHub issues instead when that is appropriate. 246*6236dae4SAndroid Build Coastguard Worker 247*6236dae4SAndroid Build Coastguard Worker- `Approved-by: John Doe` - credit someone who approved the PR. 248*6236dae4SAndroid Build Coastguard Worker 249*6236dae4SAndroid Build Coastguard Worker- `Authored-by: John Doe` - credit the original author of the code; only use 250*6236dae4SAndroid Build Coastguard Workerthis if you cannot use `git commit --author=...`. 251*6236dae4SAndroid Build Coastguard Worker 252*6236dae4SAndroid Build Coastguard Worker- `Signed-off-by: John Doe` - we do not use this, but do not bother removing 253*6236dae4SAndroid Build Coastguard Worker it. 254*6236dae4SAndroid Build Coastguard Worker 255*6236dae4SAndroid Build Coastguard Worker- `whatever-else-by:` credit all helpers, finders, doers; try to use one of 256*6236dae4SAndroid Build Coastguard Workerthe following keywords if at all possible, for consistency: `Acked-by:`, 257*6236dae4SAndroid Build Coastguard Worker`Assisted-by:`, `Co-authored-by:`, `Found-by:`, `Reported-by:`, 258*6236dae4SAndroid Build Coastguard Worker`Reviewed-by:`, `Suggested-by:`, `Tested-by:`. 259*6236dae4SAndroid Build Coastguard Worker 260*6236dae4SAndroid Build Coastguard Worker- `Ref: #1234` - if this is related to a GitHub issue or PR, possibly one that 261*6236dae4SAndroid Build Coastguard Workerhas already been closed. 262*6236dae4SAndroid Build Coastguard Worker 263*6236dae4SAndroid Build Coastguard Worker- `Ref: URL` to more information about the commit; use `Bug:` instead for a 264*6236dae4SAndroid Build Coastguard Workerreference to a bug on another bug tracker] 265*6236dae4SAndroid Build Coastguard Worker 266*6236dae4SAndroid Build Coastguard Worker- `Fixes #1234` - if this fixes a GitHub issue; GitHub closes the issue once 267*6236dae4SAndroid Build Coastguard Workerthis commit is merged. 268*6236dae4SAndroid Build Coastguard Worker 269*6236dae4SAndroid Build Coastguard Worker- `Closes #1234` - if this merges a GitHub PR; GitHub closes the PR once this 270*6236dae4SAndroid Build Coastguard Workercommit is merged. 271*6236dae4SAndroid Build Coastguard Worker 272*6236dae4SAndroid Build Coastguard WorkerDo not forget to use commit with `--author` if you commit someone else's work, 273*6236dae4SAndroid Build Coastguard Workerand make sure that you have your own user and email setup correctly in git 274*6236dae4SAndroid Build Coastguard Workerbefore you commit. 275*6236dae4SAndroid Build Coastguard Worker 276*6236dae4SAndroid Build Coastguard WorkerAdd whichever header lines as appropriate, with one line per person if more 277*6236dae4SAndroid Build Coastguard Workerthan one person was involved. There is no need to credit yourself unless you 278*6236dae4SAndroid Build Coastguard Workerare using `--author` which hides your identity. Do not include people's email 279*6236dae4SAndroid Build Coastguard Workeraddresses in headers to avoid spam, unless they are already public from a 280*6236dae4SAndroid Build Coastguard Workerprevious commit; saying `{userid} on github` is OK. 281*6236dae4SAndroid Build Coastguard Worker 282*6236dae4SAndroid Build Coastguard Worker## Push Access 283*6236dae4SAndroid Build Coastguard Worker 284*6236dae4SAndroid Build Coastguard WorkerIf you are a frequent contributor, you may be given push access to the git 285*6236dae4SAndroid Build Coastguard Workerrepository and then you are able to push your changes straight into the git 286*6236dae4SAndroid Build Coastguard Workerrepository instead of sending changes as pull requests or by mail as patches. 287*6236dae4SAndroid Build Coastguard Worker 288*6236dae4SAndroid Build Coastguard WorkerJust ask if this is what you would want. You are required to have posted 289*6236dae4SAndroid Build Coastguard Workerseveral high quality patches first, before you can be granted push access. 290*6236dae4SAndroid Build Coastguard Worker 291*6236dae4SAndroid Build Coastguard Worker## Useful resources 292*6236dae4SAndroid Build Coastguard Worker - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI) 293*6236dae4SAndroid Build Coastguard Worker 294*6236dae4SAndroid Build Coastguard Worker# Update copyright and license information 295*6236dae4SAndroid Build Coastguard Worker 296*6236dae4SAndroid Build Coastguard WorkerThere is a CI job called **REUSE compliance / check** that runs on every pull 297*6236dae4SAndroid Build Coastguard Workerrequest and commit to verify that the *REUSE state* of all files are still 298*6236dae4SAndroid Build Coastguard Workerfine. 299*6236dae4SAndroid Build Coastguard Worker 300*6236dae4SAndroid Build Coastguard WorkerThis means that all files need to have their license and copyright information 301*6236dae4SAndroid Build Coastguard Workerclearly stated. Ideally by having the standard curl source code header, with 302*6236dae4SAndroid Build Coastguard Workerthe `SPDX-License-Identifier` included. If the header does not work, you can 303*6236dae4SAndroid Build Coastguard Workeruse a smaller header or add the information for a specific file to the 304*6236dae4SAndroid Build Coastguard Worker`REUSE.toml` file. 305*6236dae4SAndroid Build Coastguard Worker 306*6236dae4SAndroid Build Coastguard WorkerYou can manually verify the copyright and compliance status by running the 307*6236dae4SAndroid Build Coastguard Worker[REUSE helper tool](https://github.com/fsfe/reuse-tool): `reuse lint` 308