Contributing to the Chapel Project
- 1. Where to start
-
Everyone interested in contributing to the Chapel project
should start from a user's perspective. If you aren't already
familiar with the Chapel language, see
How Can I Learn Chapel? If
you don't already have access to a Chapel compiler,
download and install a copy,
ensuring that you can compile and run example programs.
- 2. Write a Chapel program of your own
-
Now that you have a working installation of Chapel, try
writing your favorite benchmark, test case, or homework
assignment in Chapel. This experience may cause you to run
into something you find poorly documented, a bug, or a
performance surprise. Filing these as
GitHub
Issues is a great starting point for contributing to the
project. Sometimes this process will lead you to find issues
that you can fix yourself, since you're already familiar with
the problem.
-
3. Learn the mechanics of contributing
-
Now that you've written your own Chapel program, familiarize
yourself with Chapel's
contributor guidelines.
If you want to observe how the development process works, browse (and optionally subscribe to)
GitHub issues
and pull requests.
-
4. Find a task to work on
-
Now that you're familiar with Chapel and the process for
contributing, see if you can find a GitHub issue with the
good
first issue label that you think you can make progress
on. Alternatively, if you have a feature or improvement to
Chapel that you'd like to propose (e.g., a new library you'd
like to provide), open a GitHub issue doing so to get buy-in
for the effort. It's OK to ask for help with issues, but
please see the "Dos and Don'ts" section below first.
-
"I want to contribute a library to Chapel, should I open a PR?"
-
No, you should start your library as a
mason package.
Introducing a new standard library to be distributed with Chapel is an
effort that requires significant
community discussion.
Dos and Don'ts of Early Interactions with the Community
Do:
Don't:
- Directly message developers via email or IRC to introduce yourself or ask technical questions. Initial interactions should be public.
- Introduce yourself and ask how you can contribute on chapel-users. You will just be pointed to this page.