When you’re ready for feedback, submit a pull request. Pull requests
are a feature specific to GitHub. They provide a simple, web-based way
to submit your work (often called “patches”) to a project. It’s called
a pull request because you’re asking the project to pull changes
from your fork.

If you’re unfamiliar with how to create a pull request, you can check
out GitHub’s documentation on
creating a pull request from a fork. You
might also find GitHub’s article
about pull requests helpful. That all said,
the tutorial below will walk you through the process.

In the Zulip project, we encourage submitting work-in-progress pull
requests early and often. This allows you to share your code to make
it easier to get feedback and help with your changes. Prefix the
titles of work-in-progress pull requests with [WIP], which in our
project means that you don’t think your pull request is ready to be
merged (e.g. it might not work or pass tests). This sets expectations
correctly for any feedback from other developers, and prevents your
work from being merged before you’re confident in it.

This is perfectly okay to do on your own feature branches, especially if you’re
the only one making changes to the branch. If others are working along with
you, they might run into complications when they retrieve your changes because
anyone who has based their changes off a branch you rebase will have to do a
complicated rebase.

The first step in creating a pull request is to use your web browser to
navigate to your fork of Zulip. Sign in to GitHub if you haven’t already.

Next, navigate to the branch you’ve been working on. Do this by clicking on the
Branch button and selecting the relevant branch. Finally, click the New
pull request button.

Alternatively, if you’ve recently pushed to your fork, you will see a green
Compare & pull request button.

You’ll see the Open a pull request page:

Provide a title and first comment for your pull request. Remember to prefix
your pull request title with [WIP] if it is a work-in-progress.

If your pull request has an effect on the visuals of a component, you might want
to include a screenshot of this change or a GIF of the interaction in your first
comment. This will allow reviewers to comment on your changes without having to
checkout your branch; you can find a list of tools you can use for this over
here.

When ready, click the green Create pull request to submit the pull request.

Note: Pull request titles are different from commit messages. Commit
messages can be edited with gitcommit--amend, gitrebase-i, etc., while
the title of a pull request can only be edited via GitHub.

As you get make progress on your feature or bugfix, your pull request, once
submitted, will be updated each time you [push commits][self-push-commits] to
your remote branch. This means you can keep your pull request open as long as
you need, rather than closing and opening new ones for the same feature or
bugfix.

And, as you address review comments others have made, we recommend posting a
follow-up comment in which you: a) ask for any clarifications you need, b)
explain to the reviewer how you solved any problems they mentioned, and c) ask
for another review.