|
| 1 | +?> This documentation only covers submissions to the [Poseidon Community Archive](archive_overview). Look [here](minotaur) for the submission process to the [Poseidon Minotaur Archive](archive_overview). |
| 2 | + |
1 | 3 | # Contributing to our public archives |
2 | 4 |
|
3 | 5 | The Poseidon framework has a strongly decentralized philosophy and relies very much on a community of users willing to prepare and improve the data in the public data repositories. If you want to prepare a Poseidon dataset for one of the repositories or fix mistakes in the data, you should follow the procedures outlined below. To ensure a professional and welcoming atmosphere please respect our [Contributor Code of Conduct](conduct.md) in all interactions with the Poseidon team and other users on GitHub and beyond. If you have questions about the processes, you can post them as an issue on GitHub or contact us directly. |
4 | 6 |
|
5 | 7 | We assume you have some basic knowledge about using a command line software like [`trident`](trident), and how to handle Git and GitHub. If not, then you can become knowledgable quickly about the latter, for example [here](https://githubtraining.github.io/training-manual). |
6 | 8 |
|
7 | | -?> This documentation only covers submissions to the [Poseidon Community Archive](archive_overview). Look [here](minotaur) for the submission process to the [Poseidon Minotaur Archive](archive_overview). |
8 | | - |
9 | 9 | !> Never clone the archive repositories without `GIT_LFS_SKIP_SMUDGE=1`. Always clone with `GIT_LFS_SKIP_SMUDGE=1 git clone ...`. |
10 | 10 |
|
11 | 11 | ## Archive curation roles |
12 | 12 |
|
13 | 13 | To manage package submissions and modifications in our archives, we define the following roles, which are synonymous to the respective roles within github: |
14 | 14 |
|
15 | | -1. Assignees: A package is submitted by a single author, with a github account. This user is tagged as "Assignee" in the github interface. The same holds for the modification of an existing package: Here, the "assignee" is the user who authors a Pull Request to change a given package. Assignees are specific per package. **An assignee is responsible for bringing the package into shape, and responding to review requests.** |
| 15 | +1. **Assignees**: A package is submitted by a single author, with a github account. This user is tagged as "Assignee" in the github interface. The same holds for the modification of an existing package: Here, the "assignee" is the user who authors a Pull Request to change a given package. Assignees are specific per package. **An assignee is responsible for bringing the package into shape, and responding to review requests.** |
16 | 16 |
|
17 | | -2. Reviewers: A Pull request for a new or modified package is reviewed by one or more users, who are assigned by the respective _editor_. Reviewers will often be recruited from the Poseidon Core Team, but can also encompass other relevant users, for example if they have special knowledge on the package, or otherwise expertise. Guidelines for reviewers and assignees overlap, and are summarised below. **Reviewers are asked to ensure that all checklist items are covered.** Reviewers are asked to make a decision either by the "Request changes" status, or the "Approve" status in their review. It is then up to editors to ensure revisions to be complete. |
| 17 | +2. **Reviewers**: A Pull request for a new or modified package is reviewed by one or more users, who are assigned by the respective _editor_. Reviewers will often be recruited from the Poseidon Core Team, but can also encompass other relevant users, for example if they have special knowledge on the package, or otherwise expertise. Guidelines for reviewers and assignees overlap, and are summarised below. **Reviewers are asked to ensure that all checklist items are covered.** Reviewers are asked to make a decision either by the "Request changes" status, or the "Approve" status in their review. It is then up to editors to ensure revisions to be complete. |
18 | 18 |
|
19 | | -3. Editors: Editors are not assigned per package, but per repository. **Editors are responsible for assigning reviewers and eventually merging Pull Requests into their respective archives, and maintaining those archives.** Currently, editors for the [Community Archive](#the-poseidon-community-archive-pca) are users [@AyGhal](https://github.com/AyGhal) and [@nevrome](https://github.com/nevrome). Editor for the [Minotaur Archive](#the-poseidon-minotaur-archive-pma) is user [@TCLamnidis](https://github.com/TCLamnidis). |
| 19 | +3. **Editors**: Editors are not assigned per package, but per repository. **Editors are responsible for assigning reviewers and eventually merging Pull Requests into their respective archives, and maintaining those archives.** Currently, editors for the [Community Archive](#the-poseidon-community-archive-pca) are users [@AyGhal](https://github.com/AyGhal) and [@nevrome](https://github.com/nevrome). Editor for the [Minotaur Archive](#the-poseidon-minotaur-archive-pma) is user [@TCLamnidis](https://github.com/TCLamnidis). |
20 | 20 |
|
21 | 21 |
|
22 | 22 | ## Preparing a new package for the community archive |
@@ -51,29 +51,27 @@ Either manually, or with [`trident rectify`](trident?id=rectify-command). |
51 | 51 |
|
52 | 52 | This is mandatory. Please also run [`trident validate`](trident?id=validate-command) with the `--fullGeno` flag (so `trident validate -d path/to/your/package --fullGeno`) once. |
53 | 53 |
|
54 | | -*** |
55 | | - |
56 | | -The community archive has some additional requirements for your package beyond what you would need to simply use the package locally for your own analysis. So the following submission **checklist** includes some of these less obvious qualities you should consider before submitting the package online, on top of what is technically necessary: |
57 | | - |
58 | | -[](https://raw.githubusercontent.com/poseidon-framework/community-archive/master/.github/PULL_REQUEST_TEMPLATE/add_package_template.md ':include') |
| 54 | +!> The community archive has some additional requirements for your package beyond what you would need to simply use the package locally for your own analysis. A [submission checklist](https://raw.githubusercontent.com/poseidon-framework/community-archive/master/.github/PULL_REQUEST_TEMPLATE/add_package_template.md) includes some of these less obvious qualities you should consider before submitting the package online, on top of what is technically necessary: |
59 | 55 |
|
60 | 56 | ### Submitting the package |
61 | 57 |
|
62 | | -The procedure for the actual submission is then as follows (a shorter, slightly more hands-on tutorial is available [here](https://mpi-eva-archaeogenetics.github.io/comp_human_adna_book/poseidon.html#contributing-to-the-community-archive)): |
| 58 | +The procedure for the actual submission is then as follows (a shorter, slightly more hands-on tutorial is available [here](https://mpi-eva-archaeogenetics.github.io/comp_human_adna_book/poseidon.html#contributing-to-the-community-archive)) |
63 | 59 |
|
64 | 60 | **1. Fork and then clone the GitHub repository for the archive you want to modify.** |
65 | 61 |
|
66 | | -You need to be logged into github with your user account. You can then navigate to our github repository: [https://github.com/poseidon-framework/community-archive(https://github.com/poseidon-framework/community-archive) and hit the "Fork" button near the top of the page. |
| 62 | +You need to be logged into github with your user account. You can then navigate to our github repository: <https://github.com/poseidon-framework/community-archive> and hit the "Fork" button near the top of the page. |
67 | 63 |
|
68 | 64 | You will then have a copy of the entire repository under your own user name: `https://github.com/<yourGithubUserName>/community-archive`. |
69 | 65 |
|
70 | | -For the following to work, you need to have setup your github account in a way that allows you to communicate with github via the command line. For this, you need to configure an SSH public-key, so github really knows it's you. Find out more about it here: [https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). |
| 66 | +For the following to work, you need to have setup your github account in a way that allows you to communicate with github via the command line. For this, you need to configure an SSH public-key, so github really knows it's you. Find out more about it here: <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent>. |
71 | 67 |
|
72 | | -To safe our [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-git-large-file-storage) bandwidth, **we would like to ask you to clone in a way that does not download the large data files from GitHub** (they should be downloaded from our webserver with [`trident fetch`](trident?id=fetch-command)). At the same time you need to be able to add new LFS files. A proper setup for this includes the following steps |
| 68 | +!> To safe our [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-git-large-file-storage) bandwidth, **please clone in a way that does not download the large data files from GitHub** (they should be downloaded from our webserver with [`trident fetch`](trident?id=fetch-command)). |
| 69 | + |
| 70 | +At the same time you need to be able to add new LFS files. A proper setup for this includes the following steps: |
73 | 71 |
|
74 | 72 | - downloading and [installing Git LFS](https://git-lfs.github.com/), |
75 | 73 | - setting it up for your user with `git lfs install` |
76 | | -- cloning the repo with the `GIT_LFS_SKIP_SMUDGE` environment variable, which prevents downloading the LFS files despite Git LFS being enabled: |
| 74 | +- cloning the repo **with the `GIT_LFS_SKIP_SMUDGE` environment variable**, which prevents downloading the LFS files despite Git LFS being enabled: |
77 | 75 |
|
78 | 76 | ``` |
79 | 77 | GIT_LFS_SKIP_SMUDGE=1 git clone git@github.com:<yourGitHubUserName>/community-archive.git |
@@ -109,18 +107,16 @@ We will inspect your submission and contact you on GitHub about necessary change |
109 | 107 |
|
110 | 108 | ## Modifying existing packages in the community archive |
111 | 109 |
|
112 | | -If you identify a mistake in any package, be it in the context data (`.janno` files), package-meta-data (`POSEIDON.yml`), bibliographic information (`.bib` files) or genotype data, we welcome both issues to point them out and contributions to correct them directly. |
| 110 | +If you identify a mistake in any package, be it in the context data (`.janno` files), package metadata (`POSEIDON.yml`), bibliographic information (`.bib` files), or genotype data, we welcome both issues to point them out and contributions to correct them directly. The process is similar to the package submission described above. |
113 | 111 |
|
114 | 112 | **1. Fork and clone the GitHub repository that contains the package you want to improve.** |
115 | 113 |
|
116 | | -Unlike for the package submission (see above), it is recommended to make a full clone of the repository with Git LFS (see above, so to clone without `GIT_LFS_SKIP_SMUDGE=1` here). Expert users are asked, though, to reduce their bandwidth requirements as much as possible. Changes in non-genotype data files are well possible with an incomplete clone. |
| 114 | +Just as above described for the package submission, please remember to clone with `GIT_LFS_SKIP_SMUDGE=1`. Individual LFS files can be downloaded with `git lfs pull --include "PATH-TO-FILE"`. This is necessary if you would like to modify not just the context- and meta data, but also the genotype data of a package. |
117 | 115 |
|
118 | 116 | **2. Modify the files you want to change.** |
119 | 117 |
|
120 | 118 | Remember to also i. update the md5 checksums in the POSEIDON.yml file, ii. increment the package version number and iii. add an informative entry to the changelog file after you are done. This can be done automatically with [`trident rectify`](trident?id=rectify-command). |
121 | 119 |
|
122 | | -Please use its command line arguments to get well documented changes according to the following examples: |
123 | | - |
124 | 120 | - Example 1: You added a radiocarbon date for a sample in the .janno file |
125 | 121 | ``` |
126 | 122 | trident rectify \ |
@@ -148,18 +144,14 @@ Please use its command line arguments to get well documented changes according t |
148 | 144 | --newContributors "[Firstname Lastname](email@address.com)" |
149 | 145 | ``` |
150 | 146 |
|
151 | | -Make sure to check if the modified package passes the validation with [`trident validate`](trident?id=validate-command).** |
| 147 | +Make sure to check if the modified package passes the validation with [`trident validate`](trident?id=validate-command). |
152 | 148 | This is mandatory. |
153 | 149 |
|
154 | 150 | Finally commit and push your changes. |
155 | 151 |
|
156 | 152 | **3. Submit a pull request to merge your updates with our repository.** |
157 | 153 |
|
158 | | -Please do not wait too long (max. 2 weeks) between creation of the fork and submitting the pull request to prevent merge conflicts. |
159 | | - |
160 | | -*** |
161 | | - |
162 | | -Please note the following submission **checklist** for modified packages: |
| 154 | +!> Just as for the package submission a special [modification checklist](https://raw.githubusercontent.com/poseidon-framework/community-archive/master/.github/PULL_REQUEST_TEMPLATE/modify_package_template.md) covers additional details relevant only for the community archive. |
163 | 155 |
|
164 | | -[](https://raw.githubusercontent.com/poseidon-framework/community-archive/master/.github/PULL_REQUEST_TEMPLATE/modify_package_template.md ':include') |
| 156 | +Please do not wait too long (max. 2 weeks) between creation of the fork and submitting the pull request to prevent merge conflicts. |
165 | 157 |
|
0 commit comments