owned this note
owned this note
Published
Linked with GitHub
### Run OCaml Exercises Everywhere
#### Project Short Title
Run OCaml Exercises Everywhere
#### Long Description
At present, several groups of exercises aimed at learning OCaml are available:
- https://github.com/gs0510/ofronds
- https://github.com/sudha247/learn-ocaml-workshop
- https://github.com/kayceesrk/cs3100_f19
- https://github.com/ocaml-sf/learn-ocaml, source for: http://ocaml-sf.org/learn-ocaml-public
- https://github.com/ocaml.org, source for: https://ocaml.org/exercises
There's probably more. Each set of exercises uses a different execution
framework (such as Jupyter, Learn-OCaml or custom). They provide a range of user
experiences, from available solutions up to candidate solution testing. The main
goal of this internship is to build a common configuration that allows running
each set of exercises in most known setups. This will have the following
benefits:
- Exercises are no longer tied to a setup, they can be used in several
- Loose coupling between the learning content and the technical setup
- For learners: Feature parity among exercise sets, self-learning, unique,
simple and quick start
- For teachers: Focus on exercise writing, using the common setup
- For the community: More exercices, easier startup, improved learning curve for OCaml
The goal is not to have all exercises from all the projects in all the setups.
Instead, the goal is to show it is possible to do it. However, this will be
established by porting a meaningful fraction of each exercise group into several
setups or forks, if required.
As a design constraint, we want to provide exercises at https://ocaml.org/. We
consider automatically processing exercise groups to generate the
https://ocaml.org/exercises page. The common setup should allow that, although
it is not part of the internship.
#### Internship Tasks
- Turn ocaml.org [exercises](https://ocaml.org/exercises) solutions into test cases
- Implement support for exercise passing in:
- Local execution
- GitHub Codespace
- Replit
- [LearnOCaml](http://ocaml-sf.org/learn-ocaml-public)
- Jupyter
#### Minimum System Requirements
A working Linux or macOS system.
#### Project Skills
* Unix Shell & Command Line: Required
* Git: Required
* Package management, Brew in macOS, apt in Ubuntu/Debian, etc: Required
* Markdown: Required
* YAML: Recommended
* Docker: Recommended
* Jupyter: Nice to Have
* Web Development: Nice to Have
* Functional Programming: Nice to Have
#### How can Applicants Make a Contribution to Your Project?
1. Install and configure an OCaml development environment (see: https://ocaml.org/docs/installing-ocaml)
2. Clone project https://github.com/ocaml/ocaml.org, compile and execute it locally by following the projects README and HACKING files
3. If not familiar with OCaml read the following tutorials
- https://ocaml.org/docs/tour-of-ocaml
- https://ocaml.org/docs/your-first-program
- https://ocaml.org/docs/values-and-functions
- https://ocaml.org/docs/basic-data-types
- https://ocaml.org/docs/lists
4. Have a look at the issue tracker for https://github.com/ocaml/ocaml.org. The project uses it to keep information about bugs to fix, project features to implement. Search for open and unassigned issues with the following tags: `good-first-issue` and `outreachy`
8. Pick one and try to complete the task described.
9. Create a pull request. The task does not have to be completely implemented to create the PR, but your PR can't be empty. This is the most important step, if your submission is good, we will assign the issue to you and once it is completed, we will review your application based on this PR.
Good luck, happy hacking.