List of exercises

Full list

This is a list of all exercises and solutions in this lesson, mainly as a reference for helpers and instructors. This list is automatically generated from all of the other pages in the lesson. Any single teaching event will probably cover only a subset of these, depending on their interests.

Social coding

In social-coding.md:

Social-1: Think about if and how you share

  • Did you ever share your code? If yes, what motivated you? Come up with reasons for sharing your scripts/code/data.

  • Also think about reasons for not sharing.

In social-coding.md:

Social-2: Discussion about “You aren’t required to support anyone”

  • Have you experienced an implicit expectation of support?

  • Supporting all requests can lead to overworking and mental health issues.

  • Not supporting requests can also induce guilt.

  • Most projects are maintained by 1 or 2 persons.

  • Most projects cannot retain contributors for a longer time. Interests change. “Casual contributors are like tourists visiting NYC for a weekend” (Nadia Asparouhova, book below).

  • If you maintain all projects that you start forever, at some point it may be difficult to start new projects.

  • What are your experiences? Do you agree with the above thoughts?

  • Book recommendation: Nadia Asparouhova (formerly Nadia Eghbal): “Working in Public: The Making and Maintenance of Open Source Software (Stripe Press)”

Software licensing

In software-licensing.md:

Licensing-1: What constitutes derivative work?

This question 5 below can be used as a starting point and copied to the collaborative document or form input for an online poll:

## Question 5: Which of these are derivative works?

**Choose many**. Vote by adding an `o` character:

- A. Download some code from a website and add on to it
  - votes:

- B. Download some code and use one of the functions in your code
  - votes:

- C. Changing code you got from somewhere
  - votes:

- D. Extending code you got from somewhere
  - votes:

- E. Completely rewriting code you got from somewhere
  - votes:

- F. Rewriting code to a different programming language
  - votes:

- G. Linking to libraries (static or dynamic), plug-ins, and drivers
  - votes:

- H. Clean room design (somebody explains you the code but you have never seen it)
  - votes:

- I. You read a paper, understand algorithm, write own code
  - votes:

In software-licensing.md:

Licensing-2: Consider some common licensing situations

  1. What is the StackOverflow license for code you copy and paste?

  2. A journal requests that you release your software during publication. You have copied a portion of the code from another package, which you have forgotten. Can you satisfy the journal’s request?

  3. You want to fix a bug in a project someone else has released, but there is no license. What risks are there?

  4. How would you ask someone to add a license?

  5. You incorporate MIT, GPL, and BSD3 licensed code into your project. What possible licenses can you pick for your project?

  6. You do the same as above but add in another license that looks strong copyleft. What possible licenses can you use now?

  7. Do licenses apply if you don’t distribute your code? Why or why not?

  8. Which licenses are most/least attractive for companies with proprietary software?

Software citation

In software-citation.md:

Discussion (Citation-1): Explain how you currently cite software

  • Do you cite software that you use? How?

  • If I wanted to cite your code/scripts, what would I need to do?