Your next contribution

We have everyone start with a first PR, which makes a small but valuable contribution. We ask that everyone starts there, and now that you've got it done, you can build something (a little bit) bigger.

Getting started

Below you'll find resources to help you figure out what to work on. After that, head over to Working in the Dark repo to learn how to contribute bigger things, like the basics of OCaml, the layout of the repo, technical guides to different parts of the codebase and product, and product and vision docs about where Dark is going.

Issues

We have started adding issues that have been reported by users to the the Issues on GitHub. We'll be going back through the backlog to add more of these soon.

We've marked a few good starting points:

We'll follow up with guides to solving various classes of bugs, as well as the backlog of issues we've been tracking internally.

Initiatives

We have a number of "initiatives" which involve many small, related-but-disconnected tasks. They're tagged in the issues. If you'd like to help with an initiative, mention that you're working on it in the comments, or just get started.

A common example is to add a standard library function.

Scratching your itches

If you've got something that you'd like to solve, either make an issue or discuss it in #contributors. Our main purpose of opening the repo was to allow users to solve their problems and not be blocked by us, so we highly prioritize solving things you need solved.

Larger Projects

Dark is a project with a vision for where it is going. Unfortunately, that vision is not as documented as it could be. We'll work on that!

In the meantime, the best thing to align well with that vision is to be very communicative. While many projects will take drive-by contributions, we are only going to take contributions which move in the same direction we are going. Often, those directions are quite subtle, so start by talking to us in #contributors, letting us know what you're thinking.

The best thing to work on is something that is personally (or professionally!) blocking you. Our main goal with opening Dark is to enable users to unblock themselves or to improve their experience. Many users have shown us long laundry lists of things that bother them - you might have one too. Or bring us the list, and we'll talk about where to start.

The important thing is to start small. Dark is nearly 100,000 LOC. And we have the constraints of supporting users' production apps in a continuous delivery manner. You should aim for your first few contributions to be small and non-controversial, before trying to design a big feature or product change.