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: