-
Notifications
You must be signed in to change notification settings - Fork 255
Description
Some info about Outreachy summer 2023
Hi all,
here's some information about the Outreachy application period. First of all: welcome! 🥳
For non-applicants confused by this see this section.
For applicants
Thanks for contributing to the MirageOS ecosystem! This is the right place to start, if you're considering applying to any of the following three Outreachy projects:
- Persistent Storage in MirageOS
- Extend the network testing tool
conntest
with visualizations - MIDI with MirageOS
Installing OCaml on Your System
Quick Installation
The quickest way to install OCaml currently is using the OCaml Platform Installer.
You'll need to install some dependencies if they're not already installed. This can be done easily using a package manager.
If you're running an Ubuntu/Debian system you can run the following command in your terminal.
sudo apt install bzip2 make gcc bubblewrap rsync patch curl unzip
After your dependencies are installed run the below install script.
bash < <(curl -sL https://ocaml.org/install-platform.sh)
Install the Platform tools.
ocaml-platform
We also need to install an opam switch that uses a version of OCaml 4 that Mirage currently supports.
opam switch create mirage 4.14.1
Finally, we simply update the new opam environment.
eval $(opam env --switch=mirage)
Other Installation Methods
If the OCaml Platform installation method does not suit you then you can take a look at the variety of other installation methods described at ocaml.org.
What is MirageOS?
You see OS in the name so you're probably guessing that MirageOS is some sort of operating system. That's certainly true but perhaps that distracts from the problem MirageOS tries to solve.
MirageOS is indeed an operating system, but it is a special kind of operating system. It is a library operating system that constructs this thing called a unikernel. A unikernel is a stripped-down, bare-bones operating system that has only the parts needed to run a single application.
When it comes to containing applications, if the container--e.g Docker--was the successor to virtual machines then the next step after the container is the unikernel.
You can learn more about MirageOS from its overview page and its documentation page.
Contributions
Let's get right at it! By the end of the day, you're here to contribute to the MirageOS ecosystem and to apply to one of the three projects mentioned above.
First step: the MirageOS hello-world
If you want to apply to any of the those projects, the first step for you will be to compile and run the MirageOS hello-world unikernel: https://mirage.io/docs/hello-world. Please, read through Step 0 and Step 1 of that document to build a Unix binary containing your hello-world unikernel. When running ./hello
, you should see hello
(no need to build it for the hvt
backend as well - although, of course, you're welcome to do so, if you're interested and on a Linux machine).
Once you've achieved that, please let us know here on the issue that you have. And if you have troubles with it, don't hesitate to ask!
Second step: a good-first-issue
Once got the hello-world
unikernel to run, you're ready to start contributing. Where to find good issues to work on depends on the project you want to apply to.
Persistent Storage in MirageOS
Please find a list of relevant issues to contribute towards here: mirage/ocaml-mbr#15
Once you've tackled one good-first-issue issue, you can try a medium
issue as well (optional):
<We're going to post an issue tracker with medium
issues for the Persistent Storage in MirageOS soon.>
Extend the network testing tool conntest
with visualizations
Please find a list of relevant issues to contribute towards here: https://github.com/rand00/conntest/issues
Once you've tackled one good-first-issue issue, you can try a medium
issue as well (optional):
<We're going to post an issue tracker with medium
issues for the Extend the network testing tool conntest
with visualizations soon.>
MIDI with MirageOS
Good first issues:
- https://github.com/pitag-ha/cardio-crumble/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
- https://github.com/rand00/fry
Once you've tackled one good-first-issue issue, you can try a medium
issue as well (optional):
<We're going to post an issue tracker with medium
issues for the MIDI with MirageOS soon.>
Note: when working with cardio-crumble
make sure that your opam switch
is using OCaml 5
Ask Questions!
You are bound to get stuck somewhere and that's perfectly fine because that means you're moving towards progress!
If you don't know how to move forward with the problem you're stuck with then don't hesitate to ask .
For general questions, you can ask on discord, which you can access via this invitation link. Once you've joined discord, if you have a question about PPX that's not related to some issue, you can ask on the MirageOS channel. If you have a general question about something else, e.g. how to get OCaml up and running, you can ask on another discord channel, for example on the Outreachy channel.
Happy hacking :)
Mentors
You have five mentors for the application period: Reynir (github: @reynir), Claes (@rand00), Oskar (@musha68k), Moazzam (github: @moazzammoriani, discord: mwzm) and Sonja (github: @pitag-ha, discord: pitag). Reynir and Claes are both experienced MirageOS hackers (including OCaml experience). Oskar, long time OCaml and MirageOS enthusiast is very familiar with networks and general systems programming. Moazzam has completed his own Outreachy internship about a year ago and has since been hacking on RISC-V. Sonja is very familiar with OCaml, has some experience with MirageOS and MIDI, and has already mentored during three previous Outreachy rounds.
We're all very excited about having Outreachy applicants and later Outreachy interns contributing to the MirageOS context! On weekends we tend to be non- or less available.
For Non-applicants
Outreachy is an initiative to give folks from under-represented groups in open-source the opportunity to do a remote internship in an open-source project. So for open-source communities, Outreachy is a great opportunity to work together with folks from lots of different backgrounds and maybe even grow the community and become more diverse! Outreachy provides the infrastructure for the internships and application process, and the open-source communities need to provide projects and mentoring. Three of the projects we -i.e. the OCaml community- is participating with in this Outreachy round are MirageOS related. So we might get some Outreachy applicants contributing to some of our MirageOS repos from (...) till (...). as part of the application process to those projects :)
A Note on Using ChatGPT and Generative AI for Contributions
We, the mentors for MirageOS-related projects (@moazzammoriani, @pitag-ha, @rand00, @reynir) have discussed the role of ChatGPT and generative AI during this contribution period and have identified some of the following--non-exhaustive list of--problems in using this technology to contribute.
- We don't want these tools to be substitutes for your judgement and understanding.
- We don't want your responsibility to be deferred to these tools since they are often wrong and hence unreliable.
- We want to make sure mentors spend their time and efforts helping you improve and learn.
Your judgement and understanding
We don't want contributors to be using generated contributions in situations where we want you to make your judgement. Submitting generated code with little or no understanding as a contribution would be an extreme case of this.
We think if you make a contribution you should be exercising your own judgement and trying your best to solve some problem. Your effort and hard-work are the true essence of any contribution.
Borrowing code has almost always been fine, but even when you do that you are expected to make the judgement to borrow it in the first place. It also is still your responsibility to test that code and abstractly know why that code is there to begin with.
Responsibility
A large part of open-source involves is about taking on responsibility. We think that use of these tools should not take away from that.
Mentor time
With all the contributions, the mentor would be trying to read through this contribution and provide any feedback so that the contributor can learn from this and improve. This takes time and effort on the mentor's part. This would be wasted if they realize half-way that the code was AI-generated.
Mentors want to help you learn and improve. This is difficult or even impossible to do if you don't show them your own work.
Concluding remarks
We only request you to be mindful of all this.
If you happened to use ChatGPT for something like brain-storming ideas for a contribution, that's ok. We ask you in that case to let your mentor know. Giving them the heads up might help them save time and even put you in a better position of trust.