Summary

The Oil project needs a compiler engineer with experience in C++ and garbage collection to help "finish" the project! As of April 2022, we have a 50K euro grant from NLnet to pay someone, and I'm also collecting donations with Github Sponsors.

Overview

Code Overview

I made an HTML page that lists the code you'll be working with and working near: https://www.oilshell.org/release/latest/pub/metrics.wwz/line-counts/for-translation.html.

Note the line counts are quite small! This is not a 100K line project; it's more like 10K lines. (The big components are inputs and outputs to the compiler, not code we need to write.)

Skills Sought

In order of importance:

  1. Hard-won C++ experience and knowledge
  2. Understanding of Garbage Collection
  3. Test-driven and terminal-based workflow (on some kind of Unix)
  4. Type systems, and the relationship between types and garbage collection.
  5. Python

General attributes desired:

  1. You should consider yourself a "finisher". You should be able to prioritize work and not get lost in micro-optimization (although I hope to get to the point where we can do some fun micro-optimizations!). Again, this is not a research project; the goal is to make a production quality shell.
  2. You should have good communication skills, and be able to explain your work. (I encourage applicants in any country, though English is used for all docs and communication.)
  3. Generally speaking, you should be excited about the high level goals of the Oil project. The blog should not be boring to you :-)

Good Signs ...

Flexibility

I don't want to "overspecify" the job. I can see it going a few ways.

  1. One person could "own" the whole task of translating Oil to C++. That means you can totally rewrite it if you don't like the solutions I've come up with! I would like to learn some things from you!
  2. We could split the project in half, and have someone work on the Python front end, and someone work on the runtime. I would act as the coordinator.
  3. Or any other division of labor that makes sense, and moves the project forward.

So when I talk to people about this job, I'd like to know what kind of role you're interested in.

Subprojects

There are a few different starting points / approaches I can imagine.

Trial Period

I understand that most people have never "worked for" an open source project! I've tried to reduce and explain the risk by documenting everything on the blog (see below).

But if you want to jump in, but aren't sure if you'll like it, I think a one- or two- week trial period for both sides makes sense. You would still get paid for your work, but you wouldn't be under the obligation to finish "everything".

I also understand that many people qualified for this job are likely employed!

Background Knowledge / Links


Compiler Engineer Notes