# Mandatory exercises
:::info
We are confident that during this program you are able to achieve these exercises and already improve your research software project. Furthermore the optional exercises provide you with more options that allow you to chose a path that fits your needs.
:::
1. **Fill in the post-workshop survey** using [this link](https://docs.google.com/forms/d/e/1FAIpQLSfw1s9m1Fk17mMmKYW4BPrAcZBd8o3OI6JTVIPH2I1FZz5w2A/viewform). This allows us to help understand where is your focus and where you need help in your project.
---
2. **Choose a license**
:::warning
**Important notice before deciding the license you will use**
Before you open source your repository, make sure you are allowed to do so. You can find out this by following the steps of the decision tree in [this presentation](https://doi.org/10.5281/zenodo.4772235).
:::
Once you are sure you can open source your code use [this tool](https://choosealicense.com/). You can base your choice on [this lesson](https://coderefinery.github.io/social-coding/software-licensing/) provided by the CodeRefinery. For TU Delft specific situations read [this material](/y1Ky9nkxSGK6W7r8bfE_BQ) and ask for help in the teams chat.
**[This repository](https://github.com/manuGil/fair-code)** provides an example of how to correctly license projects at TU Delft, according to the Research Software Policy.
<!-- - TODO: Refer to the Q&A of the coderefinery notes, -->
---
3. **Share your project openly.** Following the instructions in [this lesson](https://coderefinery.github.io/git-intro/sharing/). If you prefer gitlab or any other git service ask us on teams.
- If you're starting a new repository, you can use [this template](https://github.com/manuGil/fair-code) developed by our DCC colleagues.
---
4. **Draft a minimum plan using issues**. Software planning can be very complex, and there is a lot of tools, guidelines, and best practices. However a minimum plan could be a simple list of issues that you have to address.
Follow [these instructions](/9yl4S_7FS_mHoKy5bKAm7A).
:::info
If you need a more extensive and advanced approach to software management follow these **[extended version of the instructions](https://hackmd.io/RON18P0sTSOGlkiBp2VbYw)** You can find them also in the optional exercises.
:::
---
5. **Book at least one consultation** using the issues you have written. Follow [this instructions to book a consultation](/9H9Wd8fBT3qbioF-HkYJgw).
:::success
We would appreciate if you document your issues prior to the consultations, in this way, you and the helpers are more prepared to give you feedback.
Also share it in our teams group chat to get other participants inspired and maybe even contribute.
:::
---
6. **Record your dependencies in compliance to best practices in your programming language**. Follow [this coderefinery lesson]().
---
7. **Add a Readme to your repository.** Use the corresponding [Coderefinery lesson](https://coderefinery.github.io/documentation/writing-readme-files/) to do so.
- You can also use these automatic readme tools:
- https://www.makeareadme.com/
- https://www.readme-templates.com/
- https://github.com/Thenlie/readme-generator
- https://github.com/eli64s/readme-ai
---
8. **Add inline documentation.** Follow [this lesson](https://coderefinery.github.io/documentation/in-code-documentation/) to do so. Keep in mind that there are different standards for different languages, make sure to follow a standard of inline documentation for your specific langauge.
:::info
You can find more extensive documentation exercises to apply in your project in the optional exercises.
:::
---
9. **Structure your codebase using conventions.** Follow [this lesson as a reference](https://coderefinery.github.io/reproducible-research/organizing-projects/). For more examples and specific cases we have also created [this extended material](/CE8Y8sZaSMyqcYB43xGOWQ).
<!-- Our version [Structure your codebase using conventions](/CE8Y8sZaSMyqcYB43xGOWQ)-->
---
10. **Present your progress in the midterm.** Following [these instructions](/jNpyONaiTxirQEdy_1nhSw). Use the Project Presentation template assigned to you. You should find this template at the end of the sidebar next to all participant names.
---
11. **Present your results and feedback in the final presentation** following [these instructions](/YV9C41C2RiCZgLsnr_SFHA). This should result in updating the template assigned to you.