snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
171
docs/outreach/apply.md
Normal file
171
docs/outreach/apply.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# How to apply
|
||||
|
||||
This page should help you get started with applying for an outreach program
|
||||
with Zulip.
|
||||
|
||||
We try to make the application process as valuable for the applicant as
|
||||
possible. Expect high-quality code reviews, a supportive community, and
|
||||
publicly viewable patches you can link to from your resume, regardless of
|
||||
whether you are selected.
|
||||
|
||||
## Application criteria
|
||||
|
||||
We expect applicants to have experience with the technologies relevant
|
||||
to their project, or else have strong general programming
|
||||
experience. If you are just getting started learning how to program,
|
||||
we recommend taking time to learn the basics (there are many great
|
||||
online materials available for free!), and applying in the next
|
||||
program cycle.
|
||||
|
||||
In addition to the requirements of the specific outreach program
|
||||
you're applying to, successful applicants are expected to demonstrate
|
||||
the following:
|
||||
|
||||
1. **Responsibility for their own work.** Strong applicants consistently take
|
||||
responsibility for all their interactions with the Zulip community: the code
|
||||
changes they propose, PR descriptions and comments, discussions in the
|
||||
development community, etc. They understand the importance of respecting the
|
||||
time of everyone they interact with. If they use AI, they always follow
|
||||
[Zulip's AI use
|
||||
policy](../contributing/contributing.md#ai-use-policy-and-guidelines).
|
||||
|
||||
1. **Ability to contribute to a large production codebase.** Accepted applicants
|
||||
generally have five or more merged (or nearly merged) pull
|
||||
requests, including at least a couple involving significant
|
||||
complexity. The quality of your best work is more important than
|
||||
the quantity, so be sure to [follow our coding
|
||||
guidelines](../contributing/code-style.md) and [self-review your
|
||||
work](../contributing/code-reviewing.md#reviewing-your-own-code)
|
||||
before submitting it for review.
|
||||
|
||||
1. **Clear communication.** Building open-source software is a collaborative
|
||||
venture, and effective communication is key to making it successful. Learn
|
||||
how to [ask great questions](../contributing/asking-great-questions.md), and
|
||||
explain your decisions clearly [in your commit
|
||||
messages](../contributing/commit-discipline.md#commit-messages) and [on your
|
||||
pull requests](../contributing/reviewable-prs.md). Communicate accurately and
|
||||
succinctly -- no AI slop!
|
||||
|
||||
1. **Improvement in response to feedback.** Don't worry if you make
|
||||
mistakes in your first few contributions! Everyone makes mistakes
|
||||
getting started — just make sure you learn from them!
|
||||
|
||||
We are especially excited about applicants who:
|
||||
|
||||
- Help out other applicants
|
||||
|
||||
- Try to solve their own obstacles, and then [ask well-formed
|
||||
questions](/contributing/asking-great-questions)
|
||||
|
||||
- Develop well thought out project proposals
|
||||
|
||||
## Applicant eligibility
|
||||
|
||||
In our experience, a large (350-hour) project is incompatible with a second
|
||||
internship or job. Trying to do both leads to a stressful summer where you don't
|
||||
really get to benefit from the mentorship on offer, and will likely struggle to
|
||||
complete the GSoC program at all. Any outside commitments beyond the following
|
||||
require explicit discussion and approval:
|
||||
|
||||
- 10 hours/week for a large project
|
||||
- 25 hours/week for a medium project
|
||||
|
||||
We are happy to accept both student and non-student GSoC participants.
|
||||
|
||||
## Getting started
|
||||
|
||||
If you are new to Zulip, our [contributor
|
||||
guide](../contributing/contributing.md) is the place to start. It offers a
|
||||
detailed walkthrough for submitting your first pull request and beyond, with
|
||||
many pointers to additional documentation.
|
||||
|
||||
## Putting together your application
|
||||
|
||||
::: warning
|
||||
**We do not allow the use of AI for writing GSoC applications.** We want to see
|
||||
what _you_ think and how you communicate it. If we see that an application was
|
||||
written using AI, it will be rejected without review.
|
||||
:::
|
||||
|
||||
### What to include
|
||||
|
||||
In addition to following all the instructions for the program you are applying
|
||||
to, your application should describe the following:
|
||||
|
||||
- Why you are applying:
|
||||
- Why you're excited about working on Zulip.
|
||||
- What you are hoping to get out of your participation in the program.
|
||||
- How you selected your project.
|
||||
- Your summer obligations beyond GSoC (e.g., jobs, exams, travel plans, etc.),
|
||||
and how you plan to manage your time to complete your project with those
|
||||
obligations in mind. Do you expect to complete the program in 12 weeks, or
|
||||
would an extended timeline be more realistic?
|
||||
- Relevant experience:
|
||||
- Summary of your **prior experience with the technologies** used by Zulip.
|
||||
- Your **prior contributions to open-source projects** (including pull requests, bug
|
||||
reports, etc.), with links.
|
||||
- Any other **materials which will help us evaluate how you work**, such as
|
||||
links to personal or school projects, along with brief descriptions.
|
||||
- Your **contributions to Zulip**, including pull requests, bug reports, and helping
|
||||
others in the development community (with links to all materials).
|
||||
- A **project proposal** (see below).
|
||||
|
||||
**A note for Outreachy applicants**: It is not practical for us to individually
|
||||
help you develop a specific timeline for your application. We expect you to
|
||||
submit a project proposal as described below, and will help you manage the
|
||||
timeline for your project if your application is selected.
|
||||
|
||||
### Project proposals
|
||||
|
||||
Your first priority during the contribution period should be figuring out how to
|
||||
become an effective Zulip contributor. Start developing your project proposal
|
||||
only once you have experience with iterating on your PRs to get them ready for
|
||||
integration. That way, you'll have a much better idea of what you want to work
|
||||
on and how much you can accomplish.
|
||||
|
||||
As [discussed in the guide to having an amazing experience during the
|
||||
program](./experience.md#what-about-my-proposal):
|
||||
|
||||
> We have a fluid approach to planning, which means you are very unlikely to end
|
||||
> up working on the exact set of issues described in your proposal. Your proposal
|
||||
> is not a strict commitment (on either side).
|
||||
|
||||
Your proposal should demonstrate your thoughtfulness about what you want to work
|
||||
on, and consideration of project complexity. We will evaluate it based on the
|
||||
following criteria:
|
||||
|
||||
- Does it give us a good idea of what areas of Zulip you are most excited to
|
||||
work on?
|
||||
- Does it demonstrate some familiarity with the Zulip codebase, and reflection
|
||||
on what makes for a coherent project that is well-aligned with your interests
|
||||
and skill set?
|
||||
- Does it demonstrate your ability to put together a reasonable plan? Have you
|
||||
thought carefully about the scope of various pieces of your project and their
|
||||
dependencies? Are you taking into account the fact that there can be a lot of
|
||||
time in software development between having an initial prototype and merging
|
||||
the final, fully reviewed and tested, version of your code?
|
||||
- Are you proposing a project that would make a significant positive impact on the
|
||||
areas you plan to focus on?
|
||||
|
||||
Regardless of which program you are applying to, you can use the [GSoC project
|
||||
ideas list](./gsoc.md#project-ideas-by-area) as a source of inspiration for
|
||||
putting together your proposal.
|
||||
|
||||
### Circulating your application for feedback
|
||||
|
||||
We highly recommend posting a rough draft of your application at least one week
|
||||
before the deadline. That way, the whole development community has a chance to
|
||||
give you feedback and help you improve your proposal.
|
||||
|
||||
- If you do not have a complete draft ready, at a minimum, we recommend posting
|
||||
your **project proposal**, along with **your contributions to Zulip** for
|
||||
context.
|
||||
|
||||
- Please post a link to your draft in the Zulip development community
|
||||
channel dedicated to your program (e.g.,
|
||||
[#GSoC](https://chat.zulip.org/#narrow/channel/14-GSoC) or
|
||||
[#Outreachy](https://chat.zulip.org/#narrow/channel/391-Outreachy)). Use
|
||||
`Your name - project proposal` as the topic.
|
||||
|
||||
- We recommend linking to a draft in an app that works in the browser and allows
|
||||
commenting, such as Dropbox Paper or Google Docs.
|
||||
338
docs/outreach/experience.md
Normal file
338
docs/outreach/experience.md
Normal file
@@ -0,0 +1,338 @@
|
||||
# How to have an amazing experience
|
||||
|
||||
If you are joining Zulip as part of an outreach program (e.g.,
|
||||
[GSoC](https://summerofcode.withgoogle.com/) or
|
||||
[Outreachy](https://www.outreachy.org/)), welcome! Please make sure you read
|
||||
this page carefully early on, and we encourage you to come back to it over the
|
||||
course of the program.
|
||||
|
||||
## Your goals
|
||||
|
||||
Your experience as a Zulip outreach program participant is your
|
||||
responsibility, and we strongly encourage you take full ownership. The
|
||||
more care, attention, and energy you put in, the more you'll be able
|
||||
to get out of the program. We're here to support you, but the journey
|
||||
is yours to make!
|
||||
|
||||
The following are the main goals we'll be guiding you towards, as they are
|
||||
shared by the great majority of program participants, and are aligned with the
|
||||
objectives for our umbrella programs. If you have additional goals in mind for
|
||||
your experience, please let your mentor and the community know, so that we can
|
||||
help you along.
|
||||
|
||||
- You should gain mastery of the skills needed to be a self-sufficient and
|
||||
effective open-source developer. By the end of the program, all but the most
|
||||
complex PRs should ideally go through only a couple of rounds of code review
|
||||
before being merged. Our most successful contributors gain the expertise to
|
||||
become a maintainer for one or more areas within Zulip.
|
||||
|
||||
- You should become a valued member of the Zulip community, who works to make it
|
||||
better for all involved. Reviewing PRs, helping others debug, providing
|
||||
feedback, and finding bugs are wonderful ways to contribute beyond the code in
|
||||
your own project.
|
||||
|
||||
- You should feel proud of the significant positive impact you've made on the
|
||||
areas you focused on. Your areas should be more polished, and have several
|
||||
new major features that you have implemented. The sections of code you worked
|
||||
on should be more readable, better-tested, and have clearer documentation.
|
||||
|
||||
Please note that outreach programs are not a competition. Different participants
|
||||
have different types of projects and progress will look different for each project.
|
||||
Your focus should be on making steady and consistent progress and continuously
|
||||
learning from your work.
|
||||
|
||||
Don't forget to have fun! Spending a few months coding on open source is an
|
||||
amazing opportunity, and we hope you'll have a blast. Your acceptance to the
|
||||
program means that we are confident that if you put in the effort, your
|
||||
contributions to the open source world will be something you can be proud of for
|
||||
the rest of your life.
|
||||
|
||||
## You and your mentor
|
||||
|
||||
Zulip operates under a **group mentorship** model. Every participant in a Zulip
|
||||
mentorship program will:
|
||||
|
||||
- Have an assigned mentor, who will be their go-to for personal questions and
|
||||
concerns, and a consistent point of contact throughout the program.
|
||||
|
||||
- Receive lots of feedback and mentorship from others in the Zulip development
|
||||
community, in code reviews on pull requests, and by posting
|
||||
[questions](../contributing/asking-great-questions.md) and ideas in public
|
||||
channels.
|
||||
|
||||
Mentors and contributors should stay in close contact. We recommend setting up a
|
||||
weekly check-in call to make sure you stay on track and have a regular
|
||||
opportunity to ask your mentor questions and get their feedback. Talk with your
|
||||
mentor about the status of your projects, and get their advice on how to make
|
||||
progress if some project feels stuck.
|
||||
|
||||
Bring up problems early, whether technical or otherwise. If you're stressed
|
||||
about something, mention it your mentor immediately, so they can help you solve
|
||||
the problem. If you're stressed about something involving your mentor, bring it
|
||||
up with an organization admin.
|
||||
|
||||
## Communication and check-ins
|
||||
|
||||
Communicating proactively with your mentor, your peers, and the rest of the
|
||||
Zulip community is vital to having a successful mentorship program with Zulip.
|
||||
It's how we can help you make sure you're working on a great set of impactful
|
||||
issues, and not getting stuck or taking an approach that won't work out.
|
||||
|
||||
A key communication tool we use is posting regular public check-ins, which are
|
||||
a required part of the program. We recommend reading your peers' check-ins
|
||||
to get a feel for what they are working on and share ideas!
|
||||
|
||||
### Getting feedback and advice
|
||||
|
||||
We strongly encourage all Zulip contributors to post their questions and ideas
|
||||
in public channels in the [Zulip development
|
||||
community](https://zulip.com/development-community/). When you post in a public
|
||||
channel, you give everyone the opportunity to help you out, and to learn from
|
||||
reading the discussion.
|
||||
|
||||
Examples of topics you might ask about include:
|
||||
|
||||
- Making a technical decision while solving the issue.
|
||||
|
||||
- Making a product decision, e.g., if the issue description does not address some
|
||||
details, or you've identified a problem with the plan proposed in the issue.
|
||||
|
||||
- Making a design decision, e.g., if you have a couple of different ideas and
|
||||
aren't sure what looks best.
|
||||
|
||||
See our guide to [asking great
|
||||
questions](../contributing/asking-great-questions.md) for detailed advice on how
|
||||
to ask your questions effectively.
|
||||
|
||||
### How to post your check-ins
|
||||
|
||||
A check-in is a regular update that you post in the Zulip development community.
|
||||
You can find many examples in the
|
||||
[#checkins](https://chat.zulip.org/#narrow/channel/65-checkins) and
|
||||
[#GSoC](https://chat.zulip.org/#narrow/channel/14-GSoC) channels.
|
||||
|
||||
- **Frequency**: _Regular check-ins are a required for all program
|
||||
participants._ If you are working 20+ hours per week, post a check-in at least
|
||||
twice a week, e.g., Tuesday and Friday. If you are working less than 20 hours
|
||||
per week, post a check-in at least once a week.
|
||||
|
||||
Swatches of low productivity are very common, so post your check-ins no matter
|
||||
how much progress you've made. Regular communication helps your mentor keep up
|
||||
with your progress. Mentors can also help you out if you are facing any difficulties.
|
||||
|
||||
- **Where to post**: Unless your mentor or program administrator requests
|
||||
otherwise, post your check-ins in the
|
||||
[#checkins](https://chat.zulip.org/#narrow/channel/65-checkins) channel, using your
|
||||
name as the topic.
|
||||
|
||||
- **What to include** in each check-in:
|
||||
|
||||
- The **status** of each ongoing project, e.g., in progress, awaiting feedback,
|
||||
addressing review feedback, stuck on something, blocked on other work, etc.
|
||||
To make your update easy to read, include brief descriptions of what you're
|
||||
working on, not just issue/PR numbers. Please also include what has changed
|
||||
for each project since the last check-in. If nothing has changed, mention
|
||||
that explicitly as well.
|
||||
|
||||
- For projects where you are waiting on feedback, what **type of feedback** is
|
||||
needed (e.g., product review, next round of code review after initial
|
||||
feedback has been addressed, answer to some question, etc.). Use [silent
|
||||
mentions](https://zulip.com/help/mention-a-user-or-group#silently-mention-a-user)
|
||||
to indicate whose feedback is required, if you think you know who it should
|
||||
be.
|
||||
|
||||
- Any questions or problems you **feel stuck** on. If there's an ongoing thread
|
||||
elsewhere, please link to it. Please post each question/problem in a
|
||||
separate message to make it convenient to quote-and-reply to address it.
|
||||
Note that discussions about your work will happen in all the usual places
|
||||
(#**frontend**, #**backend**, #**design**, etc.), and those are the
|
||||
channels where you should be _starting_ conversations. Your check-ins are a
|
||||
place to point out where you're feeling stuck, e.g., there was some
|
||||
discussion in a channel or on GitHub, but it seems to have petered out
|
||||
without getting to a decision, and you aren't sure what to do.
|
||||
|
||||
- What you've been **actively working** on since your last check-in.
|
||||
|
||||
- What you **intend to focus** on until your next check-in. Indicate if you are
|
||||
unsure and would appreciate some suggestions or feedback on your plan.
|
||||
|
||||
## Peer reviews
|
||||
|
||||
Reviewing others' changes is one of the best ways to learn to be a better
|
||||
developer, since you'll both see how others solve problems and also practice the
|
||||
art of catching bugs in unfamiliar code. As discussed in the [code review
|
||||
guide](../contributing/code-reviewing.md):
|
||||
|
||||
> Doing code reviews is a valuable contribution to the Zulip project. It’s also
|
||||
> an important skill to develop for participating in open-source projects and
|
||||
> working in the industry in general... Anyone can do a code review – you don’t
|
||||
> have to have a ton of experience.
|
||||
|
||||
For programs with multiple participants, we will set up a **code review buddies**
|
||||
system at the start of the program:
|
||||
|
||||
1. Everyone will be assigned to a group of 2-3 people who will be your buddies
|
||||
for first-round code reviews. (In some cases, your buddy will be your
|
||||
mentor.)
|
||||
|
||||
2. Start by [self-reviewing your own code](../contributing/code-reviewing.md).
|
||||
|
||||
3. When ready, request a review from your code review buddies. Use [GitHub's
|
||||
review request
|
||||
feature](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)
|
||||
to send your request. This makes the PR's status clear to project maintainers.
|
||||
You may also want to send a quick direct message to let your buddies know
|
||||
their attention is needed.
|
||||
|
||||
4. Please respond to code review requests promptly (within one workday), and
|
||||
follow the guidelines [in the code review
|
||||
guide](../contributing/code-reviewing.md).
|
||||
|
||||
Your initial reply does not have to be a full review. If you’re pressed for
|
||||
time, start by quickly sharing your initial thoughts or feedback on the general
|
||||
direction, and let the PR author know when you expect to provide a more detailed
|
||||
review.
|
||||
|
||||
Make sure the GitHub comments on the PR are always clear on the status -- e.g.,
|
||||
buddy code review has been requested, feedback is being discussed, code buddy
|
||||
has approved the PR, etc. This will help project maintainers know when it's time
|
||||
to move on to the next step of the review process.
|
||||
|
||||
## How do I figure out what to work on?
|
||||
|
||||
Our goal is for contributors to improve their skills while making meaningful
|
||||
contributions to Zulip. We like to be flexible, which means that you are
|
||||
unlikely to work precisely on the issues described in your proposal, and that's
|
||||
OK!
|
||||
|
||||
In practice, this means that over the course of the program, you will:
|
||||
|
||||
- Get frequent guidance regarding what to work on next by posting your ideas and
|
||||
questions about what to tackle next in your
|
||||
[check-ins](#how-to-post-your-check-ins).
|
||||
|
||||
- Like other Zulip contributors, [claim
|
||||
issues](../contributing/contributing.md#claiming-an-issue) only when you
|
||||
actually start work on them.
|
||||
|
||||
If someone else fixes an issue you were planning to fix, don't worry about it!
|
||||
Consider [reviewing their work](../contributing/code-reviewing.md) to build your
|
||||
expertise in the subsystem you're working on.
|
||||
|
||||
### Prioritization
|
||||
|
||||
Always keep the following order of priorities in mind:
|
||||
|
||||
1. Your top priorities should be **fixing any regressions you introduced** with
|
||||
recently merged work, and **fixing any important bugs or regressions** that
|
||||
you pick up or are assigned.
|
||||
|
||||
2. **Review others' pull requests** promptly. As you'll experience yourself, getting quick
|
||||
feedback on your PR helps immensely. As such, if you are asked to review a
|
||||
PR, aim to provide an initial reply within one workday.
|
||||
|
||||
3. If any of your PRs are actively undergoing review or are marked as
|
||||
"integration review" ready, be sure to **rebase** them whenever merge
|
||||
conflicts arise.
|
||||
|
||||
4. Next, prioritize **responding to code review feedback** over starting new
|
||||
work. This helps you and your reviewers maintain context, which makes it
|
||||
easier to make progress towards getting your work integrated.
|
||||
|
||||
5. Do any relevant **follow-ups to larger projects** you've completed, to make sure
|
||||
that you've left things better than how you found them.
|
||||
|
||||
6. Finally, if all of the above are in good shape, **find a new issue** to pick up!
|
||||
|
||||
### What about my proposal?
|
||||
|
||||
We have a fluid approach to planning, which means you are very unlikely to end
|
||||
up working on the exact set of issues described in your proposal. Your proposal
|
||||
is not a strict commitment (on either side).
|
||||
|
||||
In terms of managing your work:
|
||||
|
||||
- Regardless of whether an issue was mentioned in your proposal, make
|
||||
sure you bring it up in your check-ins when you plan to start
|
||||
working on something. Project priorities shift over time, and we
|
||||
may have suggestions for higher-priority work in your area of
|
||||
interest, or issues that will serve as good preparation for other
|
||||
work you are excited about. It's also possible that a project idea
|
||||
is not ready to be worked on, or needs to be sequenced after other projects.
|
||||
|
||||
- When asking for recommendations for what to work on next, it's helpful to
|
||||
include a reminder of what areas you're most excited about, especially early
|
||||
on in the program when we're still getting to know you. Do not expect program
|
||||
administrators to remember what issues were listed in your proposal.
|
||||
|
||||
While some program participants stick closely to the spirit of their proposal,
|
||||
others find new areas they are excited about in the course of their work. You
|
||||
can be highly successful in the program either way!
|
||||
|
||||
### Tips for finding issues to pick up
|
||||
|
||||
- Look for, claim, and fix bugs to help keep Zulip polished. Bugs and polish
|
||||
make a huge difference to our users' experience. If you can fix a
|
||||
[high-priority
|
||||
bug](https://github.com/zulip/zulip/issues?page=2&q=is%3Aopen+is%3Aissue+label%3Abug+label%3A%22priority%3A+high%22)
|
||||
in an area you've been working on, it is likely to have more impact than any
|
||||
new feature you might build.
|
||||
|
||||
- If you're working on something other than the Zulip server / web app codebase,
|
||||
follow your project on GitHub to keep track of what's happening.
|
||||
|
||||
- The Zulip server / web app project is too active to follow, so instead we
|
||||
recommend joining [Zulip's GitHub teams](https://github.com/orgs/zulip/teams)
|
||||
that relate to your projects and/or interests. When an area label is added to
|
||||
an issue or PR, [Zulipbot](https://github.com/zulip/zulipbot) automatically
|
||||
mentions the relevant teams for that area, subscribing all team members to the
|
||||
issue or PR thread.
|
||||
|
||||
### Staying productive
|
||||
|
||||
Here are some tips for making sure you can always be productive, even when
|
||||
waiting for a question to be answered or for the next round of feedback on a PR:
|
||||
|
||||
- You should be working on multiple issues (or parallelizable parts of a large
|
||||
issue) at a time. That way, if you find yourself blocked on one project, you
|
||||
can always push on a different one in the meantime.
|
||||
|
||||
- It can help to plan a bit in advance by thinking about the issue you intend to
|
||||
pick up next. Are there decisions that will require input from others? Try to
|
||||
start the conversation a few days before you need an answer.
|
||||
|
||||
- If you are waiting for some decision to be finalized, consider doing
|
||||
preparatory refactoring that will make the feature easier to complete and can
|
||||
already be merged.
|
||||
|
||||
## How else can I contribute?
|
||||
|
||||
- Participate and be helpful in the community! Helping a new contributor get
|
||||
started or answering a user's question are great ways to contribute.
|
||||
|
||||
- Test and give feedback on new features that are deployed in the development
|
||||
community! It's fun, and it helps us find bugs before they reach our users.
|
||||
|
||||
- As you are doing your work, keep thinking about what could make contributing to Zulip
|
||||
easier for both yourself and the next generation of Zulip contributors. And then
|
||||
make those ideas reality!
|
||||
|
||||
## Timeline extensions for GSoC
|
||||
|
||||
Starting in 2022, it became possible to extend the timeline of a GSoC project.
|
||||
This can be a great idea if you don't have a lot of time to dedicate each week,
|
||||
or have an interruption during the program (e.g., getting sick, travel, family
|
||||
obligations, etc.).
|
||||
|
||||
We're generally very flexible, so if extending your project dates would make it
|
||||
less stressful to put in the required hours, please discuss this with your
|
||||
mentor and Zulip's GSoC administrator. Please start this conversation
|
||||
proactively as soon as you realize that you might need an extension, as this
|
||||
will give us confidence that you'll be able to manage your time effectively to
|
||||
successfully complete the program.
|
||||
|
||||
It is possible to have the midterm evaluation happen more than half-way through
|
||||
the project timeline. If the balance of hours you plan to spend on GSoC is
|
||||
significantly weighted towards the latter half of your GSoC contribution period,
|
||||
please contact Zulip's program administrator to discuss pushing out the midterm
|
||||
evaluation.
|
||||
378
docs/outreach/gsoc.md
Normal file
378
docs/outreach/gsoc.md
Normal file
@@ -0,0 +1,378 @@
|
||||
# GSoC project ideas
|
||||
|
||||
This page describes ideas you can use as a starting point for your project
|
||||
proposal. If you have not done so yet, you should **start by reading our [guide on
|
||||
how to apply](./apply.md)** to a Zulip outreach program. As noted in the guide:
|
||||
|
||||
> Your first priority during the contribution period should be figuring out how
|
||||
> to become an effective Zulip contributor. Start developing your project proposal
|
||||
> only once you have experience with iterating on your PRs to get them ready for
|
||||
> integration. That way, you'll have a much better idea of what you want to work
|
||||
> on and how much you can accomplish.
|
||||
|
||||
## Project size
|
||||
|
||||
We have designed all our projects to have incremental milestones that can be
|
||||
completed throughout the program. Consequently, Zulip projects described below
|
||||
are generally compatible with both large-sized (350 hours) and medium-sized (175
|
||||
hours) projects. Of course, the amount of progress you will be expected to make
|
||||
depends on whether you are doing a 175-hour or 350-hour project. Because it
|
||||
takes significant time investment to learn how to contribute complex features to
|
||||
Zulip's codebase, we are not planning to offer small-size projects.
|
||||
|
||||
Contributors who master the art of consistently packaging their work
|
||||
into correct, [reviewable pull
|
||||
requests](../contributing/reviewable-prs.md) are able to make major
|
||||
improvements to the Zulip app. If you pay attention to the contributor
|
||||
guidelines, carefully review your own work before asking anyone else
|
||||
for review, take the time to clearly communicate your changes, and
|
||||
apply the feedback you receive to your next contribution, you'll be
|
||||
amazed at what you can accomplish.
|
||||
|
||||
## Focus areas
|
||||
|
||||
For 2026, we are particularly interested in GSoC contributors who have
|
||||
strong skills at full-stack feature development, Typescript, visual design,
|
||||
HTML/CSS, Flutter, or performance optimization. So if you're an applicant with
|
||||
those skills and are looking for an organization to join, we'd love to
|
||||
talk to you!
|
||||
|
||||
The Zulip project has a huge surface area, so even when we're focused
|
||||
on something, a large amount of essential work goes into other parts of
|
||||
the project. Every area of Zulip could benefit from the work of a
|
||||
contributor with strong programming skills, so don't feel discouraged if
|
||||
the areas mentioned above are not your main strength.
|
||||
|
||||
## Project ideas by area
|
||||
|
||||
This section contains the seeds of project ideas; you will need to do research
|
||||
on the Zulip codebase, read issues on GitHub, read documentation, and talk with
|
||||
developers to put together a complete project proposal. It's also fine to come
|
||||
up with your own project ideas. As you'll see below, you can put together a
|
||||
great project around one of the [area
|
||||
labels](https://github.com/zulip/zulip/labels) on GitHub; each has a cluster of
|
||||
problems in one part of the Zulip project that we'd love to improve.
|
||||
|
||||
### Full stack and web frontend focused projects
|
||||
|
||||
Code: [github.com/zulip/zulip](https://github.com/zulip/zulip/) -- Python,
|
||||
Django, TypeScript/JavaScript, and CSS.
|
||||
|
||||
- **Cluster of priority features**. Implement a cluster of new full
|
||||
stack features for Zulip. The [high priority
|
||||
label](https://github.com/zulip/zulip/issues?q=is%3Aissue+is%3Aopen+label%3A%22priority%3A+high%22)
|
||||
documents hundreds of issues that we've identified as important to
|
||||
the project. A great project can be 3-5 significant features around
|
||||
a theme (often, but not necessarily, an [area
|
||||
label](https://github.com/zulip/zulip/labels)); the goal will be to
|
||||
implement and get fully merged a cluster of features with a
|
||||
meaningful impact on the project. Zulip has a lot of half-finished
|
||||
PRs, so some features might be completed by reading, understanding,
|
||||
rebasing, and reviving an existing pull request. 175 or 350
|
||||
hours; difficulty will vary. **Skills required**: Depends on the
|
||||
features; Tim Abbott will help you select an appropriate cluster
|
||||
once we've gotten to know you and your strengths through your getting
|
||||
involved in the project.
|
||||
|
||||
Experts: Tim Abbott and various others depending on project area
|
||||
|
||||
- **Complete some unfinished projects**. This is a variant of the
|
||||
previous project idea category, but focused on projects with
|
||||
significant existing work to start from and polish, rather than
|
||||
projects that have not been seriously attempted previously.
|
||||
|
||||
We maintain a [completion candidate label][completion-candidate]
|
||||
for pull requests where a previous contributor
|
||||
(sometimes via GSoC!) did significant work towards something
|
||||
valuable, and there's significant feedback from maintainers, but the
|
||||
project was never finished, and requires significant further effort
|
||||
from a new contributor in order to progress. One of our
|
||||
goals for this summer's GSoC is to complete many of these
|
||||
issues. Start by picking something that's interesting to you, and
|
||||
you feel you have the skills required to complete. Read the code and
|
||||
the feedback, and then create your own PR for the issue. See the [guide on
|
||||
continuing unfinished work][continuing-work] for details.
|
||||
175 or 350 hours; difficulty will vary.
|
||||
**Skills required**: Varies with project; a common skill will be
|
||||
good reading comprehension and organization/communication skills, to
|
||||
walk maintainers through how you resolved problems, addressed any
|
||||
pending feedback on the previous PR, and your understanding of the
|
||||
outstanding questions for a given project. Taking the time to get
|
||||
really good at resolving merge conflicts is likely to be valuable
|
||||
here as well.
|
||||
|
||||
Experts: Tim Abbott and various others depending on project area
|
||||
|
||||
[completion-candidate]: https://github.com/zulip/zulip/pulls?q=is%3Aopen+is%3Apr+label%3A%22completion+candidate%22
|
||||
[continuing-work]: ../contributing/continuing-unfinished-work.md
|
||||
|
||||
- Add the core infrastructure for **topic-based permissions and settings**
|
||||
like [pinned topics](https://github.com/zulip/zulip/issues/19483)
|
||||
and [read-only topics](https://github.com/zulip/zulip/issues/26944),
|
||||
and then build some of those settings. This project will be a
|
||||
mixture of Python 3/PostgreSQL work, including thinking about
|
||||
database transactions and races, writing database migrations
|
||||
intended to be run live at scale, and complex logic to handle moving
|
||||
messages correctly in the context of these settings, including
|
||||
significant changes to the Zulip API and API documentation.
|
||||
175 or 350 hours; fairly difficult.
|
||||
**Skills required**: A high level of fluency with writing readable
|
||||
Python 3 and thinking about corner cases.
|
||||
|
||||
Experts: Tim Abbott, Prakhar Pratyush
|
||||
|
||||
- Zulip's [**REST API documentation**](https://zulip.com/api/), which is an
|
||||
important resource for any organization integrating with Zulip, as
|
||||
well as the developers of our API clients. Zulip has a [nice
|
||||
framework](../documentation/api.md) for writing API documentation
|
||||
built by past GSoC students based on the OpenAPI standard with
|
||||
built-in automated tests of the data both the Python and curl
|
||||
examples. However, the documentation isn't yet what we're hoping
|
||||
for: there are a few dozen endpoints that are missing, several of
|
||||
which are quite important, the visual design isn't perfect
|
||||
(especially for, e.g., `GET /events`), many templates could be deleted
|
||||
with a bit of framework effort, etc. See the [API docs area
|
||||
label][api-docs-area] for some specific projects in the area, and
|
||||
[this api documentation discussion][czo-api-endpoints] for current
|
||||
priorities on API endpoints to document (`git grep pending_endpoints`).
|
||||
Our goal for the summer is for 1-2 students to resolve all open issues
|
||||
related to the REST API documentation. 175 or 350 hours; difficulty
|
||||
easy or medium. **Skills required**: Python programming. Expertise
|
||||
with reading documentation and English writing are valuable, and
|
||||
product thinking about the experience of using third-party APIs is
|
||||
very helpful.
|
||||
|
||||
Expert: Lauryn Menard
|
||||
|
||||
[api-docs-area]: https://github.com/zulip/zulip/issues?q=is%3Aopen%20is%3Aissue%20label%3A%22area%3A%20documentation%20(api)%22
|
||||
[czo-api-endpoints]: https://chat.zulip.org/#narrow/channel/412-api-documentation/topic/Undocumented.20endpoint.20priorities/with/2397881
|
||||
|
||||
- **Improve the UI and visual design** of the Zulip web app. We are working on a
|
||||
major redesign for the core surfaces of the Zulip web app -- see the [redesign
|
||||
label][redesign-label] for specced out work, with more to come. We're
|
||||
particularly excited about students who are interested in making our CSS clean
|
||||
and readable as part of working on the UI. 175 or 350 hours; medium to
|
||||
difficult. **Skills required**: Design, HTML and CSS skills; most important is
|
||||
the ability to carefully verify that one's changes are correct and will not
|
||||
break other parts of the app; design changes are very rewarding since they are
|
||||
highly user-facing, but that also means there is a higher bar for correctness
|
||||
and reviewability for one's work. A great application would include PRs making
|
||||
small, clean improvements to the Zulip UI (whether logged-in or logged-out
|
||||
pages).
|
||||
|
||||
Experts: Aman Agrawal, Karl Stolley, Alya Abbott
|
||||
|
||||
[redesign-label]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3Aredesign
|
||||
|
||||
- **Improve type safety of node tests**. Rework Zulip's [automated
|
||||
node tests](../testing/testing-with-node.md) to use objects that
|
||||
consistently have the correct type. Currently, many tests use fake
|
||||
message, user, or channel objects with only a handful of fields
|
||||
relevant to the test. We've been working towards
|
||||
`web/tests/lib/example_*`. A good starter project would be to try to
|
||||
convert a small test module that currently does not use the
|
||||
`make_user` type functions to do so. The [main TypeScript migration
|
||||
thread](https://chat.zulip.org/#narrow/channel/6-frontend/topic/typescript.20migration/with/2085240)
|
||||
is useful background reading, and
|
||||
[#frontend](https://chat.zulip.org/#narrow/channel/6-frontend)
|
||||
channel is a good place to start new topics while working on this
|
||||
project. 175 or 350 hours; medium difficulty. **Skills required**:
|
||||
TypeScript fluency, and the discipline
|
||||
to write easily reviewed pull requests that often will include a
|
||||
series of changes to clean up an individual test while you're
|
||||
working on it.
|
||||
|
||||
Experts: Afeefuddin, Lalit
|
||||
|
||||
- **Replace hundreds of `dict[str, Any]` types with modern
|
||||
dataclasses**. While functionally efficient, `dataclasses` are more
|
||||
readable, safe against typos, and have nice support for optimizing
|
||||
them further using `__slots__`. A lot of Zulip server code was
|
||||
written before dataclasses existed, and while a lot has been
|
||||
converted naturally as part of other projects, we'd like to make a
|
||||
focused push to replace the remaining ones. This project will
|
||||
involve making dozens of small commits and PRs, each a clean
|
||||
refactor converting a single type. Use [this
|
||||
conversation](https://chat.zulip.org/#narrow/channel/3-backend/topic/migrating.20to.20dataclasses/near/2085283)
|
||||
for discussion and coordination. **Skills required**. Solid
|
||||
understanding of statically typed Python, and the discipline to
|
||||
learn to write refactoring commits that are easy to integrate,
|
||||
following our standard guidelines, because they convincingly don't
|
||||
change any product behavior while improving type-safety.
|
||||
|
||||
Experts: Tim Abbott, Anders Kaseorg
|
||||
|
||||
- **Optimize performance and scalability**, either for the web
|
||||
frontend or the server. Zulip is already one of the faster web apps
|
||||
out there, but we have a number of ideas for how to make it
|
||||
substantially faster yet. This is likely a particularly challenging
|
||||
project to do well, since there are a lot of subtle interactions to
|
||||
understand. 175 or 350 hours; difficult. **Skill recommended**:
|
||||
Strong debugging, communication, and code reading skills are most
|
||||
important here. JavaScript experience; some Python/Django
|
||||
experience, some skill with CSS, ideally experience using the Chrome
|
||||
Performance profiling tools (but you can pick this up as you go) can
|
||||
be useful depending on what profiling shows. Our [backend
|
||||
scalability design doc](../subsystems/performance.md) and the
|
||||
[performance label][perf-label] may be helpful reading for the
|
||||
backend part of this.
|
||||
|
||||
Experts: Tim Abbott
|
||||
|
||||
[perf-label]: https://github.com/zulip/zulip/labels/area%3A%20performance
|
||||
|
||||
- Fill in gaps, fix bugs, and improve the framework for Zulip's **library of
|
||||
native integrations**. We have about 120 native integrations, but there are a
|
||||
number of others we would like to add. Also, several extensions to the
|
||||
framework that would dramatically improve the user experience of using
|
||||
integrations, e.g., being able to do callbacks to third-party services
|
||||
like Stripe to display more user-friendly notifications. The [the integrations
|
||||
label on GitHub](https://github.com/zulip/zulip/labels/area%3A%20integrations)
|
||||
lists some of the priorities here (many of which are great preparatory
|
||||
projects). 175 or 350 hours; medium difficulty with various possible difficult
|
||||
extensions. **Skills required**: Strong Python experience, will to install and
|
||||
do careful manual testing of third-party products. Fluent English, usability
|
||||
sense and/or technical writing skills are all pluses.
|
||||
|
||||
Experts: Niloth, Lauryn Menard
|
||||
|
||||
- **Make Zulip integrations easier for nontechnical users to set up**.
|
||||
This includes adding a backend permissions system for managing bot
|
||||
permissions (and implementing the enforcement logic), adding an
|
||||
OAuth system for presenting those controls to users, as well as
|
||||
making the `/integrations` page UI have buttons to create a bot,
|
||||
rather than sending users to the administration page. 175 or 350
|
||||
hours; easy to difficult depending on scope. **Skills recommended**:
|
||||
Strong Python/Django; JavaScript, CSS, and design sense
|
||||
helpful. Understanding of implementing OAuth providers, e.g., having
|
||||
built a prototype with [the Django OAuth
|
||||
toolkit](https://django-oauth-toolkit.readthedocs.io/en/latest/)
|
||||
would be great to demonstrate as part of an application. The [Zulip
|
||||
integration writing guide](../documentation/integrations.md) and
|
||||
[integration documentation](https://zulip.com/integrations/) are
|
||||
useful materials for learning about how things currently work, and
|
||||
[the integrations label on
|
||||
GitHub](https://github.com/zulip/zulip/labels/area%3A%20integrations)
|
||||
has a bunch of good starter issues to demonstrate your skills if
|
||||
you're interested in this area.
|
||||
|
||||
Experts: Niloth, Lauryn Menard
|
||||
|
||||
[all-settings-issues]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3A%22area%3A+settings+%28admin%2Forg%29%22%2C%22area%3A+settings+%28user%29%22%2C%22area%3A+stream+settings%22%2C%22area%3A+settings+UI%22
|
||||
|
||||
- Work on Zulip's **development and testing infrastructure**. Zulip is a
|
||||
project that takes great pride in building great tools for
|
||||
development, but there's always more to do to make the experience
|
||||
delightful. Significantly, about 10% of Zulip's open issues are
|
||||
ideas for how to improve the project's contributor experience, and
|
||||
are [in](https://github.com/zulip/zulip/labels/area%3A%20tooling)
|
||||
[these](https://github.com/zulip/zulip/labels/area%3A%20testing-coverage)
|
||||
[four](https://github.com/zulip/zulip/labels/area%3A%20testing-infrastructure)
|
||||
[labels](https://github.com/zulip/zulip/labels/area%3A%20provision)
|
||||
for tooling improvements.
|
||||
|
||||
This is a somewhat unusual project, in that it would likely consist of dozens
|
||||
of small improvements to the overall codebase, but this sort of work has a
|
||||
huge impact on the experience of other Zulip developers and thus the community
|
||||
as a whole (project leader Tim Abbott spends more time on the development
|
||||
experience than any other single area). 175 or 350 hours; difficult. **Skills
|
||||
required**: Python, some DevOps, and a passion for checking your work
|
||||
carefully. A strong applicant for this will have completed several projects in
|
||||
these areas.
|
||||
|
||||
Expert: Tim Abbott
|
||||
|
||||
### Terminal app
|
||||
|
||||
Code: [The official multi-platform terminal app, written in
|
||||
Python](https://github.com/zulip/zulip-terminal).
|
||||
|
||||
Experts: Neil Pilgrim, Aman Agrawal
|
||||
|
||||
- **Contribute to Zulip Terminal, our terminal user interface (TUI) client**.
|
||||
Zulip Terminal is out in beta, but there's still a lot to do for it to
|
||||
approach parity with the web app - and Zulip keeps coming out with new features too!
|
||||
|
||||
Previous contributors have themed their projects according to a **cluster of
|
||||
features** or **completing unfinished projects**, or some combination, much
|
||||
like the first two bullets in the Full-stack project list.
|
||||
Project complexity and potential scope can vary substantially, since the
|
||||
required changes can involve touching different parts of the application
|
||||
stack. For example, these may be purely improving multiple elements of the UI,
|
||||
platform/terminal, or client-side model of the data available to a user - or
|
||||
multiple of these in a full-stack style.
|
||||
|
||||
We would be happy to accept multiple strong students to work on this project.
|
||||
175 or 350 hours; medium difficulty.
|
||||
**Skills required**: Python 3 development skills, good communication and
|
||||
project management skills. Reading and understanding complex code and tests,
|
||||
and taking the initiative to propose clean refactoring and other solutions,
|
||||
will be highly valuable.
|
||||
|
||||
### Desktop app
|
||||
|
||||
Code:
|
||||
[Our cross-platform desktop app, written in JavaScript on
|
||||
Electron](https://github.com/zulip/zulip-desktop).
|
||||
|
||||
Expert: Anders Kaseorg
|
||||
|
||||
- **Contribute to our [Electron-based desktop client
|
||||
application](https://github.com/zulip/zulip-desktop)**. There's plenty of
|
||||
feature/UI work to do, but focus areas for us include things to (1) improve
|
||||
the release process for the app, using automated testing, TypeScript, etc.,
|
||||
and (2) polishing the UI. Browse the open issues and get involved! 175 or 350
|
||||
hours. This is a difficult project because it is important user-facing code
|
||||
without good automated testing, so the bar for writing high quality,
|
||||
reviewable PRs that convince others your work is correct is high. **Skills
|
||||
required**: JavaScript, Electron; you can learn Electron as part of your
|
||||
application.
|
||||
|
||||
- **Prototype a next generation Zulip desktop app implemented using
|
||||
the Tauri Rust-based framework**. Tauri is a promising new project
|
||||
that we believe is likely a better technical direction for client
|
||||
applications than Electron for desktop apps, for security and
|
||||
resource consumption reasons. The goal of this project would be to
|
||||
build a working prototype to evaluate to what extent Tauri is a
|
||||
viable platform for us to migrate the Zulip desktop app to. 350
|
||||
hours only; difficult. **Skills required**: Ability to learn
|
||||
quickly. Experience with Rust and secure software design may be
|
||||
helpful.
|
||||
|
||||
### Mobile app
|
||||
|
||||
Code: [Zulip's mobile app for Android and iOS, written in
|
||||
Flutter](https://github.com/zulip/zulip-flutter)
|
||||
|
||||
Experts: Greg Price, Chris Bobbe, Rajesh Malviya
|
||||
|
||||
- Work on the **Flutter-based Zulip client**.
|
||||
Zulip's brand new Futter-based mobile app was [released last
|
||||
summer][flutter-release-post].
|
||||
|
||||
This project will involve building features for the mobile app,
|
||||
including code for UI, data structures, and interacting with the
|
||||
Zulip server and the Android and/or iOS platforms.
|
||||
For a sense of the features we're working on, see our
|
||||
[project board][flutter-board];
|
||||
the tasks we'll be working on during GSoC will come mostly from
|
||||
the [M9: 2026 Q2][flutter-milestone-M9] and
|
||||
[MXA: Later][flutter-milestone-MXA] milestones.
|
||||
For some features, we [may find][flutter-upstream-summary]
|
||||
ourselves [contributing changes][flutter-upstream-autocomplete]
|
||||
upstream to the Flutter project itself. 175 or 350 hours; difficult.
|
||||
|
||||
**Skills required**: Ability to learn quickly, check your work
|
||||
carefully, and communicate clearly and accurately. The code for
|
||||
this project will be written primarily in Dart atop Flutter;
|
||||
previous experience may be helpful, but you can learn both during
|
||||
the contributions leading up to your application. Previous
|
||||
experience with Android or iOS may also be helpful but is not
|
||||
necessary.
|
||||
|
||||
[flutter-release-post]: https://blog.zulip.com/2025/06/17/flutter-mobile-app-launched/
|
||||
[flutter-board]: https://github.com/orgs/zulip/projects/5/views/4
|
||||
[flutter-milestone-M9]: https://github.com/zulip/zulip-flutter/milestone/14
|
||||
[flutter-milestone-MXA]: https://github.com/zulip/zulip-flutter/milestone/4
|
||||
[flutter-upstream-summary]: https://chat.zulip.org/#narrow/channel/2-general/topic/Flutter/near/1524757
|
||||
[flutter-upstream-autocomplete]: https://github.com/flutter/flutter/pull/129802
|
||||
13
docs/outreach/index.md
Normal file
13
docs/outreach/index.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# Outreach programs
|
||||
|
||||
```{toctree}
|
||||
---
|
||||
maxdepth: 3
|
||||
---
|
||||
|
||||
overview
|
||||
apply
|
||||
experience
|
||||
gsoc
|
||||
mentoring
|
||||
```
|
||||
122
docs/outreach/mentoring.md
Normal file
122
docs/outreach/mentoring.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# Mentoring
|
||||
|
||||
Mentoring an outreach program participant is a great way to help bring up the
|
||||
next generation of open-source contributors and support the Zulip community. The
|
||||
experience of watching your mentee's skills develop can be truly rewarding, and
|
||||
we encourage you to give it a try.
|
||||
|
||||
Signing up to mentor means committing to being reliable source of support on your
|
||||
mentee's open-source journey over the course of the program. By signing up,
|
||||
you're committing to dedicating roughly 3-5 hours a week to the program.
|
||||
|
||||
Mentors generally have weekly calls with their mentees to answer any questions
|
||||
and help make sure that everything is on track. You are also expected to help
|
||||
program administrators keep an eye on your mentee's progress, and flag any
|
||||
concerns you might have.
|
||||
|
||||
Mentors can refer to the excellent [GSoC Mentor
|
||||
Guide](https://google.github.io/gsocguides/mentor/) for detailed guidance,
|
||||
including GSoC's expectations, and best practices that can apply to any program.
|
||||
|
||||
## Who can mentor
|
||||
|
||||
In order to mentor with Zulip, you need to have spent significant time working
|
||||
on Zulip yourself. You need to be familiar with what it takes to get work
|
||||
integrated, so that you can help your mentee with this process. We encourage
|
||||
anyone who has successfully completed a mentorship program with Zulip as a
|
||||
participant to give mentorship a try!
|
||||
|
||||
Note that you do _not_ need to have any expertise in the part of the
|
||||
codebase that your mentee is working in. We have seen many successful
|
||||
mentor-mentee relationships where the mentor was new to the parts of
|
||||
the codebase that were the focus of the project.
|
||||
|
||||
You also do not need to be a currently active contributor to Zulip. Our
|
||||
expectations and patterns of getting work done have been quite consistent over
|
||||
time, and it should be easy for you to catch up on anything that's changed since
|
||||
you were actively involved.
|
||||
|
||||
## Supporting your mentee
|
||||
|
||||
At the start of the program, please read our [guide](experience.md) for program
|
||||
participants to understand Zulip's expectations for your mentee.
|
||||
|
||||
What exactly you focus on in your mentorship will vary from week to week, and
|
||||
will depend on what your mentee needs. It might be any combination of:
|
||||
|
||||
- Helping your mentee plan, chunk, and prioritize their work.
|
||||
|
||||
- [Manually testing](../contributing/code-reviewing.md#manual-testing) UI
|
||||
changes and helping find bugs or identify corner cases needing
|
||||
further discussion.
|
||||
|
||||
- Providing early feedback on visual and technical design questions.
|
||||
|
||||
- Helping your mentee figure out how to test their changes.
|
||||
|
||||
- Helping your mentee break their PRs into [coherent
|
||||
commits](../contributing/commit-discipline.md).
|
||||
|
||||
- Doing [code review](../contributing/code-reviewing.md) of your
|
||||
mentee's work.
|
||||
|
||||
- Helping with the technical design of projects and making sure
|
||||
they're aware of useful and relevant reference materials.
|
||||
|
||||
- Pair programming with your mentee to share useful tricks.
|
||||
|
||||
- Emotional support when things feel like they aren't going well.
|
||||
|
||||
It might seem challenging to review code if you're not an expert on
|
||||
your mentee’s focus area. Don't let yourself be intimidated!
|
||||
Reviewing changes to code your don't fully understand is a common
|
||||
experience in software development, and you can still provide valuable
|
||||
feedback.
|
||||
|
||||
If you don’t understand something about the changes being made, there
|
||||
is a good chance others would also find it confusing. Asking your
|
||||
mentee for an explanation will itself be valuable feedback on what
|
||||
parts of the PR need to be commented or rewritten in a more clear way.
|
||||
|
||||
### Establishing communication patterns
|
||||
|
||||
Over the course of the program, you will interact with your mentee both
|
||||
synchronously (e.g., on calls, pair programming, and/or via chat in the
|
||||
development community), and asynchronously (in the development community and on
|
||||
GitHub).
|
||||
|
||||
It's important to ensure that there are regular opportunities for synchronous
|
||||
interactions, which are the best way to resolve some types of questions and
|
||||
concerns, and will help your mentee feel supported.
|
||||
|
||||
Please schedule at least one synchronous interaction opportunity with your
|
||||
mentee per week. A weekly call is highly recommended, as calls can be especially
|
||||
helpful for getting a feel for how your mentee is doing, and lowering the bar
|
||||
for asking questions and sharing concerns. A good pattern might be a weekly
|
||||
call, plus 1-2 other regular time slots when you and your mentee check in in the
|
||||
development community.
|
||||
|
||||
## Managing challenges
|
||||
|
||||
We rely on you to proactively flag your concerns to Zulip's program
|
||||
administrators as early as possible. Situations you should bring up include:
|
||||
|
||||
- Lack of communication from your mentee, e.g., missing a scheduled call,
|
||||
missing multiple [check-ins](./experience.md#communication-and-check-ins), lack
|
||||
of response to PR reviews, etc.
|
||||
|
||||
- If your mentee's rate of progress on their projects is not commensurate with
|
||||
the hours of work they are supposed to be dedicating to the project.
|
||||
|
||||
- If you are not seeing improvement in response to the feedback you give.
|
||||
|
||||
- If your mentee seems to be struggling, deeply frustrated, or otherwise is not
|
||||
having a good experience with the program.
|
||||
|
||||
- Any significant questions or concerns raised by your mentee that you cannot
|
||||
resolve, which for some reason your mentee cannot raise directly.
|
||||
|
||||
- If it turns out that you cannot dedicate sufficient time to support your mentee
|
||||
for all or part of the remaining duration of the program. As long as Zulip's
|
||||
program administrators are informed, we can make sure someone else covers for
|
||||
you.
|
||||
87
docs/outreach/overview.md
Normal file
87
docs/outreach/overview.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# Outreach programs overview
|
||||
|
||||
This page describes what it's like to participate in a Zulip outreach program,
|
||||
such as [Google Summer of Code (GSoC)](https://summerofcode.withgoogle.com/) or
|
||||
[Outreachy](https://www.outreachy.org/).
|
||||
|
||||
## About Zulip
|
||||
|
||||
[Zulip](https://zulip.com) is the only modern team chat app that is ideal for both
|
||||
live and asynchronous conversations. Zulip has a web app, a cross-platform
|
||||
mobile app for iOS and Android, cross-platform desktop and terminal apps, and
|
||||
over 100 native integrations. The entire Zulip codebase is 100% open source.
|
||||
|
||||
Zulip has been gaining in popularity since it was [released as open source
|
||||
software][oss-release] in late 2015, with code contributions from [over 1000
|
||||
people](https://zulip.com/team/) from all around the world. Thousands of people
|
||||
use Zulip every day, and your work on Zulip will have meaningful impact
|
||||
on their experience.
|
||||
|
||||
[oss-release]: https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project/
|
||||
|
||||
As an organization, we value engaged, responsive mentorship and making sure our
|
||||
product quality is extremely high. You can expect to receive disciplined code
|
||||
reviews by highly experienced engineers. Since Zulip is a team chat product,
|
||||
your internship experience with the Zulip project will be highly interactive.
|
||||
|
||||
> _“The experience of working with Zulip for the summer was really phenomenal and
|
||||
> taught me a lot about software development and working with a community. Zulip
|
||||
> has one of the best open source communities out there who are super friendly
|
||||
> and welcoming. You learn a lot just by watching others work and talk.”_ – Sai
|
||||
> Rohitth Chiluka, Zulip GSoC 2021 participant
|
||||
|
||||
As part of our commitment to mentorship, Zulip has over 185,000 words of
|
||||
[documentation for
|
||||
developers](../index.md#zulip-documentation-overview), much of it
|
||||
designed to explain not just how Zulip works, but why Zulip works the way that
|
||||
it does. To learn more about our mission and values, check out [this blog
|
||||
post](https://blog.zulip.com/2021/04/28/why-zulip-is-on-github-sponsors/)!
|
||||
|
||||
## Outreach program experience
|
||||
|
||||
Zulip has been a [GSoC](https://summerofcode.withgoogle.com/) mentoring
|
||||
organization since 2016, and we accept 10-20 GSoC participants each summer. We
|
||||
have also mentored several interns through the
|
||||
[Outreachy](https://www.outreachy.org/) program, and hundreds of Google Code-In
|
||||
participants.
|
||||
|
||||
Zulip operates under a **group mentorship** model. While you will have an
|
||||
assigned mentor, you will also get lots of feedback from other members of the
|
||||
[Zulip development community](https://zulip.com/development-community/) by
|
||||
posting your questions and ideas in public channels. We encourage outreach
|
||||
program participants to help each other out as well!
|
||||
|
||||
Program participants work on a variety of issues in their areas of interest,
|
||||
from major features to small bugs. You will see your work integrated into Zulip
|
||||
throughout the program, and even experience the impact of the changes yourself
|
||||
in the [development community chat](https://zulip.com/development-community/).
|
||||
|
||||
Many program participants stay involved with the project past the
|
||||
official end of the program. A number of folks who get started as participants
|
||||
go on to mentor the next cohort, and several have joined Zulip's team of core
|
||||
maintainers.
|
||||
|
||||
To learn more about the experience of doing an outreach program with Zulip:
|
||||
|
||||
- Check out our blog posts about Zulip's
|
||||
[2025](https://blog.zulip.com/2025/12/02/google-summer-of-code-2025/),
|
||||
[2024](https://blog.zulip.com/2024/10/09/google-summer-of-code-2024/),
|
||||
[2023](https://blog.zulip.com/2024/01/24/google-summer-of-code-2023/),
|
||||
[2022](https://blog.zulip.com/2022/11/02/google-summer-of-code-2022/), and
|
||||
[2021](https://blog.zulip.com/2021/09/30/google-summer-of-code-2021/) Google
|
||||
Summer of Code programs.
|
||||
|
||||
- Watch our [3-minute video](https://youtu.be/h4s-JUei3Z0) about what it's like
|
||||
to do GSoC with Zulip.
|
||||
|
||||
- Watch our [Having a Great GSoC](https://youtu.be/dPUAEZVBrJg) Google Summer of
|
||||
Code Community Talk.
|
||||
|
||||
- Read our [guide](experience.md) to having an amazing experience with Zulip's
|
||||
outreach programs.
|
||||
|
||||
> _“It has been the best summer I've ever had! I'm thankful to my mentors, my
|
||||
> peers, Zulip, and Google for providing me an opportunity of getting involved
|
||||
> in the community! You have helped and supported me to become a better software
|
||||
> developer and a passionate open-source contributor.”_ – Sarthak Garg, Zulip
|
||||
> GSoC 2021 participant
|
||||
Reference in New Issue
Block a user