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

Review of Episode 07: Open project collaboration & management #94

Merged
merged 7 commits into from
Jun 29, 2024
Merged
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
39 changes: 21 additions & 18 deletions episodes/07-open-collaboration.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
#### LGPL

In order to allow library software to be combined with ("linked" in
technical terms) other software that's no GPLed, a special version of the
technical terms) other software that is not GPLed, a special version of the
GPL called the LGPL (L for "Lesser" or "Library") was created. This is
used by many popular libraries including the GNU C library that is linked
to every C program compiled on a Linux system.
Expand Down Expand Up @@ -406,8 +406,8 @@

### License Compatibility

Generally you can relicense someone else's code under more permissive
licenses to less permissive ones without their permission. For example
Generally, you can relicense someone else's code under more permissive
licenses to less permissive ones without their permission. For example,
you could relicense code from the MIT license to the GPL. This is because
nothing in the GPL contradicts anything in the MIT license, but you'll
still have to display the MIT license for the original code and the GPL
Expand All @@ -426,8 +426,7 @@
doesn't have an equivalent patent clause.

The GNU project has a
[https://www.gnu.org/licenses/license-list.en.html](useful guide) to
license compatibility on their website.
[useful guide][gnu-license-guide] to license compatibility on their website.

### Getting agreement to relicense

Expand Down Expand Up @@ -455,7 +454,7 @@
Definition or the Four Freedoms the person receiving the software can
make copies and give (or sell) them to anybody else.

It is also possible to release software under a two licenses, one open
It is also possible to release software under two licenses, one open
source and one commercial. This has been done by a few open source
projects who wish to sell the software to some customers (sometimes with
extra custom modifications) and give it to others.
Expand All @@ -466,9 +465,11 @@
## Relicensing exercise

Q: Find the webpage of a major open source project that is relevant to
your research. See if you can find a contributor license agreement. Add a
your research or the `Spacewalks` codebase we have been working with. See if you can find a contributor license agreement. Add a
link to this in the chat/etherpad/hackmd.

Hint: try looking at Matplotlib - https://matplotlib.org which Spacewalks uses for plotting

::: solution

A: Here are a few examples:
Expand Down Expand Up @@ -555,11 +556,13 @@
the Zenodo version of the repository.
If you click on the DOI image in the Details section of the Zenodo page then you will be shown instructions for
obtaining a link to the DOI badge in various formats including Markdown.
Here is the badge for this repository:
Here is the badge for this repository and the corresponding Markdown:

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.11869450.svg)](https://doi.org/10.5281/zenodo.11869450)

Check warning on line 561 in episodes/07-open-collaboration.md

View workflow job for this annotation

GitHub Actions / Build markdown source files if valid

[image missing alt-text]: https://zenodo.org/badge/DOI/10.5281/zenodo.11869450.svg


```text
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.11869450.svg)](https://doi.org/10.5281/zenodo.11869450)
```

::: challenge

Expand Down Expand Up @@ -613,7 +616,7 @@
date-released: 2024-06-01
```

Although we can write the CITATION.cff file by hand, an easier opton can be to use the [https://citation-file-format.github.io/cff-initializer-javascript/#/](cff-initalizer)

Check warning on line 619 in episodes/07-open-collaboration.md

View workflow job for this annotation

GitHub Actions / Build markdown source files if valid

[missing file]: [https://citation-file-format.github.io/cff-initializer-javascript/#/](cff-initalizer)
tool which will ask us a series of questions and then create a file for us to download and include. We can also use this tool to validate
an existing file is correctly formatted.

Expand All @@ -634,7 +637,7 @@
What else might we want to do in order to improve how findable, accessible or reusable it is?
One further step we could take is to publish the code with a peer reviewed journal. Some traditional journals will accept software submissions, although these are usually
as a supplementary material for a paper. There also journals which specialise in research software such as the [Journal of Open Research Software](https://openresearchsoftware.metajnl.com/),
[The Jornal of Open Source Software](https://joss.theoj.org/) or [SoftwareX](https://www.sciencedirect.com/journal/softwarex). With these the submission will be the software
[The Jornal of Open Source Software](https://joss.theoj.org/) or [SoftwareX](https://www.sciencedirect.com/journal/softwarex). With these venues, the submission will be the software
itself and not a paper, although a short abstract or description of the software is often required.
:::

Expand All @@ -646,7 +649,7 @@

## Tracking Issues with Code

A key feature of Github (as opposed to Git itself) is the issue tracker. This provides us a place to keep track of any problems or bugs in the code and to discuss them
A key feature of Github (as opposed to Git itself) is the issue tracker. This provides us with a place to keep track of any problems or bugs in the code and to discuss them
with other developers. Sometimes advanced users will also use issue trackers of public projects to report problems they are having (and sometimes this is misused by users
seeking help using documented features of the program).

Expand Down Expand Up @@ -679,7 +682,7 @@

:::::::::::::::::::::::::::::::::::::::::::::::

### Disscussing an issue
### Discussing an issue

Once the issue is created, further discussion can take place with additional comments. These can include code snippets and file attachments such as screenshots or logfiles.
We can also reference other issues by writing a # symbol and the number of the other issue. This is sometimes used to identify related issues or if an issue is a duplicate.
Expand All @@ -695,13 +698,13 @@
work. Commits can be made to one branch without interferring with
another. Branches are commonly used as a way for one developer to work on
a new feature or a bug fix while other developers work on other features.
When those new features or bug fixes are complete the branch will be merged back with the main (sometimes called master) branch.
When those new features or bug fixes are complete, the branch will be merged back with the main (sometimes called master) branch.

### Creating a new Branch

New git branches are created with the `git branch` command. This should be followed by the name of
the branch to create. It is common practice when the bug we are fixing has a corresponding issue to name the branch after the issue number and name.
For example we might call the branch `01-missing-values-bug` instead of something less descriptive like `bugfix`.
For example, we might call the branch `01-missing-values-bug` instead of something less descriptive like `bugfix`.

For example, the command:

Expand Down Expand Up @@ -776,7 +779,7 @@
git switch 01-missing-values-bug
```

If we want to push our changes to a remote such as Github we have to tell the `git push` command which branch to push to. If the branch doesn't exist on the remote (as it currently won't)
If we want to push our changes to a remote such as GitHub we have to tell the `git push` command which branch to push to. If the branch doesn't exist on the remote (as it currently won't)
then it will be created.

```bash
Expand Down Expand Up @@ -812,11 +815,11 @@

On larger projects we might need to have a code review process before changes are merged, especially before they are merged onto the main branch that might be what is being released
as the public version of the software. Github has a process for this that it calls a "Pull Request", other Git services such as GitLab have different names for this, GitLab calls them "Merge Requests".
Pull requests are where one developer requests that another merge code from a branch (or "pull" it from another copy of the repository). The person recveing the request then has the
Pull requests are where one developer requests that another merge code from a branch (or "pull" it from another copy of the repository). The person receiving the request then has the
chance to review the code, write comments suggesting changes or even change the code themselves before merging it. It is also very common for automated checks of code to be run on a pull
request to ensure the code is of good quality and is passing automated tests.

As a simple example of a pull request we can now create a pull request for the changes we made on our `01-missing-values-bug` branch and pushed to Github earlier on. The Github webpage for our repository
As a simple example of a pull request, we can now create a pull request for the changes we made on our `01-missing-values-bug` branch and pushed to Github earlier on. The Github webpage for our repository
will now be saying something like "bugfix had recent pushes n minutes ago - Compare & Pull request". Click on this button and create a new pull request.

Give the pull request a title and write a brief description of it, then click the green "Create pull request" button. Github will then check if we can merge this pull request without
Expand Down Expand Up @@ -857,7 +860,7 @@
They will get an email and an alert within Github to accept your invitation to work on this repository, without doing this they won't be able to access it.

- Now make a fork of your partners repository.
- Edit the authors or citation file and add your name to it.
- Edit the CITATION.cff file and add your name to it.
- Commit these changes to your fork
- Create a pull request back to the original repository
- Your partner will now receive your pull request and can review
Expand Down
Loading