Readers' Questions: "I'd like to contribute to Ember. How can I get started?"

Hello once again to Readers’ Questions, presented by the folks at the :newspaper:Ember.js Times :slightly_smiling_face:

Today I’ll be answering a question by a reader who is interested in contributing to Ember and wondering about how to get started:

I just started learning Ember and would like to get more experience with the project by contributing to it. What’s a good way for me to get started in open-source work related to Ember and to get more familiar with its internals at the same time?

That’s a great question and first things first: There are many different ways to contribute to Ember in which you’ll be able to learn more about the project along the way: For example, you can write and share an Ember addon with the community or collaborate with the authors of your favorite addon to make it even better. You can share any of your experiences with Ember by blogging, screencasting or speaking about them at your local Ember meetup group or organizing local Ember events on your own. Helping to make Ember even better understood is in itself a great way to contribute to the community.

Since you’re asking about open-source contributions specifically, I want to outline a successful scenario of how you can make code contributions to Ember projects.

Finding a project to contribute to

As an open-source project, all work on the Ember JavaScript library and Ember-related projects is done publicly and more specifically on Github. You can find all of Ember’s official open-source repositories distributed among several Github organizations, which include

among others.

For example, one great place to start with contributing to the project - and especially if you’re new to it - is by helping with improving any of the official documentation sources. Many of the learning projects, like the brand-new Guides App are Ember apps and even easier to setup and run on your local machine if you’re already a bit familiar with Ember. Your contribution can have a very direct and tangible impact on the way Ember is taught, making contributions to these projects a meaningful task. Especially if you’re curious or even passionate about writing or teaching, starting off with contributions to any of the learning projects can get you involved in even more, great and ambitious projects easily.

Of course, Ember’s learning-related projects are not the only places in which your first contribution may land and in which it will have a meaningful impact! :slight_smile: To get started in any of Ember’s open-source repositories, there are a couple of ways to find a suitable first issue.

Finding a specific issue for your first contribution

Many of Ember’s repositories already make use of the Good first issue or Good For New Contributors labels to tag issues that own a simple, well-defined working scope and are a good fit for a first time contribution. You can use these labels to filter the list of open and ongoing issues of almost any main Ember project and find something interesting to get started with yourself. For example and as of date, the Ember API Docs alone have 16 open issues which are specifically well-suited for new contributors to tackle.

If you’ve already championed your first contribution, Quest Issues are a great way to work on a feature that might be more complex than the one of your first contributio, but still so well-defined that picking a task up is straight-forward even if you haven’t contributed to Ember regularly yet. A Quest Issue is typically an issue with a detailed description of requirements. It also breaks down the work load for a major feature into smaller sub tasks which are easier to be picked up by individual contributors. You can find Quest Issues by filtering the list of Github Issues of an Ember repository for the Quest label. For example, currently the Ember.js repo has several open Quest Issues to offer with many unassigned sub tasks. Also this type of issue oftentimes allows you to work on parts of Ember projects in which you’ll get more familiar with its internals while collaborating with others on significant features at the same time.

The process of actually contributing

Many Ember-related projects follow a forking workflow; this means you’ll fork a repository on Github and send any changes to the project as pull requests from your personal fork against the original repository - most likely, against the master branch specifically. Be sure to check out the specific contribution guidelines for each project you’d like to work on. They’re usually directly linked from the project’s README and will be found in the of each repository.

For example, Ember CLI has a nicely detailed contribution guideline that also discusses how you can mark your contributions on Github descriptively or what you should keep in mind when trying to file a bug.

Once you have sent your pull request, someone from the associated Ember team of this project will approve your change or open a discussion on it. Be sure to check back in to any of your open pull requests every once in a while. A reviewer might have left a useful suggestion for improving your changes or might have follow-up questions. Being responsive in the early stages of your contribution makes the communication between you and your reviewer(s) easier and also makes your pull request more likely to be merged soon. :tada:

Asking questions and reaching out to collaborators

While contributing you might have questions about the code base you’re working on or you’d like to have a more in-depth discussion on the implementation details of something that you’re focussing on. Some of these discussion might go beyond the scope of the regular code review process.

In these cases, it’s often more useful to make use of a real-time communication channel to reach out to other people working on the same project. On the Ember Community Slack Channel you’ll find many like-minded folks who’re involved in a similar project as you are and who might already have extensive experience with the project itself and who are supporting others with their questions. Several #dev- channels (e.g. #dev-ember, or #dev-ember-data) offer a forum for a more specific discussion on internals of the project. If you feel passionate about a specific aspect of Ember that you’d like to contribute to, for example accessibility, you can also join the discussion on #topic-a11y, and several other #topic-channels. Collaboration efforts on new or emerging topics, for example Glimmer Components, are sometimes gathered in the form of Strike Teams - a group of active contributors who come together to spike the work on a particular topic or feature together. You can follow their discussions on the #st-channels on Slack and reach out to its members if you could use feedback on a contribution you’re making for their particular topic.

Most importantly though…

Ember is an open-source community project which wouldn’t be the great framework that it is without the consistent efforts put in by so many contributors who are willing to dedicate their time to develop it. Because of this your interest in contributing to Ember is appreciated a lot and I hope you feel even more encouraged to champion your first contribution! :sparkles:

This answer was published in Issue #50 of the Ember.js Times. Don’t forget to subscribe to the newsletter to get new Readers’ Questions and other development news right in your inbox. You can also submit your own questions! You will find a link at the bottom of the newsletter.

See you in the next issue! :sparkling_heart: