Skip to content

Outreachy Summer 2023 #1402

@moazzammoriani

Description

@moazzammoriani

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:

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.

  1. We don't want these tools to be substitutes for your judgement and understanding.
  2. We don't want your responsibility to be deferred to these tools since they are often wrong and hence unreliable.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions