mirror of https://github.com/zulip/zulip.git
docs: Update main GSoC page.
This commit is contained in:
parent
029e765e20
commit
b8562bf7b4
|
@ -12,19 +12,22 @@ how to apply](./apply.md)** to a Zulip outreach program. As noted in the guide:
|
||||||
|
|
||||||
## Project size
|
## Project size
|
||||||
|
|
||||||
GSoC offers two project size options: 175 hours and 350 hours. We have
|
We have designed all our projects to have incremental milestones that can be
|
||||||
designed all our projects to have incremental milestones that can be
|
completed throughout the program. Consequently, Zulip projects described below
|
||||||
completed throughout the program. Consequently, Zulip projects
|
are generally compatible with both large-sized (350 hours) and medium-sized (175
|
||||||
described below are generally compatible with either project size. Of
|
hours) projects. Of course, the amount of progress you will be expected to make
|
||||||
course, the amount of progress you will be expected to make depends on
|
depends on whether you are doing a 175-hour or 350-hour project. Because it
|
||||||
whether you are doing a 175-hour or 350-hour project.
|
takes significant time investment to learn how to contribute complex features to
|
||||||
|
Zulip's codebase, we are not planning to offer small-size projects.
|
||||||
|
|
||||||
It's also important to understand that how much progress one can
|
Contributors who master the art of consistently packaging their work
|
||||||
accomplish over the course of the summer is as much a function of the
|
into correct, [reviewable pull
|
||||||
project as of the contributor. Contributors who learn to consistently
|
requests](../contributing/reviewable-prs.md) are able to make major
|
||||||
package their work into [reviewable pull
|
improvements to the Zulip app. If you pay attention to the contributor
|
||||||
requests](../contributing/reviewable-prs.md) tend to accomplish the
|
guidelines, carefully review your own work before asking anyone else
|
||||||
most during GSoC.
|
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
|
## Focus areas
|
||||||
|
|
||||||
|
@ -53,7 +56,100 @@ problems in one part of the Zulip project that we'd love to improve.
|
||||||
### Full stack and web frontend focused projects
|
### Full stack and web frontend focused projects
|
||||||
|
|
||||||
Code: [github.com/zulip/zulip](https://github.com/zulip/zulip/) -- Python,
|
Code: [github.com/zulip/zulip](https://github.com/zulip/zulip/) -- Python,
|
||||||
Django, JavaScript, and CSS.
|
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: Varies with 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.
|
||||||
|
|
||||||
|
Recent sweeps through the Zulip server and web app tracker have
|
||||||
|
identified about 100 older 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. These are tracked via the [completion candidate
|
||||||
|
label][completion-candidate]. 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, reading the code and the feedback, and then creating
|
||||||
|
your own PR for the issue, doing your own careful testing and
|
||||||
|
cross-linking the original work. Remember to credit the original
|
||||||
|
contributor [as documented in our commit
|
||||||
|
guidelines](../contributing/commit-discipline.md). We expect to have
|
||||||
|
a more detailed guide on this process available this Spring.
|
||||||
|
**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: Varies with project area.
|
||||||
|
|
||||||
|
[completion-candidate]: https://github.com/zulip/zulip/pulls?q=is%3Aopen+is%3Apr+label%3A%22completion+candidate%22
|
||||||
|
|
||||||
|
- Help **migrate our JavaScript codebase to Typescript**. Zulip is in
|
||||||
|
the process of porting the main web app JavaScript codebase to
|
||||||
|
TypeScript; at present, about 40% of the project is written in
|
||||||
|
TypeScript. We've resolved most of the roadblocks to completing this
|
||||||
|
migration, so it's mostly a matter of carefully translating modules,
|
||||||
|
putting in the effort with preparatory commits to make it any
|
||||||
|
refactoring easy to verify. Our goal is to leave the resulting code
|
||||||
|
more readable than it was before, always test the module works after
|
||||||
|
the migration, and avoid introducing logic bugs during this large
|
||||||
|
refactor. [This topic in the Zulip development
|
||||||
|
community][typescript-migration] is a good place to coordinate work
|
||||||
|
on this project. Multiple students are possible; 175 or 350 hours;
|
||||||
|
difficult. **Skills required**: TypeScript and refactoring
|
||||||
|
expertise; we're specifically interested in students who are a type
|
||||||
|
theory nerd and are invested in writing types precisely (Often using
|
||||||
|
[Zod](https://zod.dev/) to parse and verify data received from the
|
||||||
|
server) and checking their work carefully.
|
||||||
|
|
||||||
|
Experts: Zixuan James Li, Evy Kassirer, Anders Kaseorg
|
||||||
|
|
||||||
|
[typescript-migration]: https://chat.zulip.org/#narrow/stream/6-frontend/topic/typescript.20migration
|
||||||
|
|
||||||
|
- Migrate server's Python codebase from the legacy
|
||||||
|
`@has_request_variables` decorator to the new `@typed_endpoint`
|
||||||
|
decorator, and update our contributor documentation to recommend the
|
||||||
|
new system. The `@typed_endpoint` framework uses [Pydantic
|
||||||
|
V2](https://docs.pydantic.dev/latest/) in order to better express
|
||||||
|
how we want to parse API requests and turn them into fully typed
|
||||||
|
Python objects. **Skills required**: A good understanding of the
|
||||||
|
Python 3 / mypy type system and Pydantic 2, and the ability to
|
||||||
|
efficiently read Python code and write clear, structured commits. No
|
||||||
|
prior Pydantic experience required, but please take the time to go
|
||||||
|
through the Pydantic upstream tutorials and skim all the existing
|
||||||
|
endpoints using `typed_endpoint` before doing your first Zulip
|
||||||
|
changes (likely to migrate a smaller views file to the new
|
||||||
|
framework; one commit per smaller file is likely to be a good
|
||||||
|
structure). See the last commits from [the new framework's main
|
||||||
|
PR](https://github.com/zulip/zulip/pull/26365) for examples of
|
||||||
|
well-written migration commits.
|
||||||
|
|
||||||
|
Expert: Zixuan James Li, Anders Kaseorg
|
||||||
|
|
||||||
- Contribute to Zulip's [**migration to user groups for
|
- Contribute to Zulip's [**migration to user groups for
|
||||||
permissions**][user-group-permissions]. This migration is intended to replace
|
permissions**][user-group-permissions]. This migration is intended to replace
|
||||||
|
@ -72,83 +168,53 @@ Django, JavaScript, and CSS.
|
||||||
Attention to detail around code reuse/duplication, thoughtful testing, and
|
Attention to detail around code reuse/duplication, thoughtful testing, and
|
||||||
splitting large migrations into reviewable chunks.
|
splitting large migrations into reviewable chunks.
|
||||||
|
|
||||||
|
Experts: Sahil Batra
|
||||||
|
|
||||||
|
- Improve the framework and UI in **Zulip's overlays for managing
|
||||||
|
streams and groups**. These two components have very parallel design
|
||||||
|
patterns and implementations (the groups one is quite new!). Coupled
|
||||||
|
with the user groups permissions migration, the goal of this project
|
||||||
|
is to make these important settings panels ergonomic for the large
|
||||||
|
number of new settings that we expect to migrate or add via the
|
||||||
|
groups migration. See the [user groups
|
||||||
|
settings][group-settings-issues] and [stream
|
||||||
|
settings][stream-settings-issues] area labels for starter projects.
|
||||||
|
|
||||||
Experts: Purushottam Tiwari, Sahil Batra
|
Experts: Purushottam Tiwari, Sahil Batra
|
||||||
|
|
||||||
|
[group-settings-issues]: https://github.com/zulip/zulip/issues?q=is%3Aissue+is%3Aopen+label%3A%22area%3A+settings+%28user+groups%29%22
|
||||||
|
[stream-settings-issues]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3A%22area%3A+stream+settings%22
|
||||||
[user-group-permissions]: https://github.com/zulip/zulip/issues/19525
|
[user-group-permissions]: https://github.com/zulip/zulip/issues/19525
|
||||||
[organization-settings-label]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3A%22area%3A+settings+%28admin%2Forg%29%22
|
[organization-settings-label]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3A%22area%3A+settings+%28admin%2Forg%29%22
|
||||||
|
|
||||||
- Help **migrate our JavaScript codebase to Typescript**. Zulip is in the process of
|
- Migrate Zulip's **[direct message recipient data
|
||||||
porting the main web app JavaScript codebase to TypeScript; at present we've
|
structures](https://github.com/zulip/zulip/issues/25713)** to a new
|
||||||
done much of the necessary tooling setup, and about 8% of lines have been
|
model with better performance characteristics and that more
|
||||||
migrated (mostly in libraries used widely); the goal for this project will be
|
importantly enables personal settings associated with a direct
|
||||||
to get that to ~75%. [This topic in the Zulip development
|
message conversation, and add several settings (see the linked
|
||||||
community][typescript-migration] is a good place to coordinate work on this
|
issues) enabled by that infrastructure work. **Skills required**:
|
||||||
project. Multiple students are possible; 175 or 350 hours; difficult.
|
This project will be deep Python 3/PostgreSQL work. Concretely,
|
||||||
**Skills required**: TypeScript and refactoring expertise; we're specifically
|
challenging parts of this project include thinking about races and
|
||||||
interested in students who are a type theory nerd and are invested in writing
|
database transactions, writing database migrations intended to be
|
||||||
types precisely and checking their work carefully.
|
run live at scale, complex internal refactors, and carefully
|
||||||
|
verifying the indexes used by migrated database queries.
|
||||||
|
|
||||||
Experts: Zixuan James Li, Priyank Patel, Anders Kaseorg
|
Experts: Tim Abbott, Mateusz Mandera, Prakhar Pratyush
|
||||||
|
|
||||||
[typescript-migration]: https://chat.zulip.org/#narrow/stream/6-frontend/topic/typescript.20migration
|
- 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.
|
||||||
|
|
||||||
- **Add an Inbox view** to the web app. We intend to add a new
|
**Skills required**: A high level of fluency with writing readable
|
||||||
home screen option for the Zulip web application that works like
|
Python 3 and thinking about corner cases.
|
||||||
the mobile app's home screen -- showing just topics containing
|
|
||||||
unread messages, in an organized fashion, in the web app's center
|
|
||||||
pane. Details are available in the
|
|
||||||
[issue](https://github.com/zulip/zulip/issues/22189) and a [draft pull
|
|
||||||
request](https://github.com/zulip/zulip/pull/22408) with prototyping
|
|
||||||
towards this was done in GSoC 2022. The goal for this project would be
|
|
||||||
to extract preparatory refactoring changes to make it nicely
|
|
||||||
parallel to the similar "Recent conversations" panel so that it can be
|
|
||||||
merged in a maintainable fashion, work with the community to
|
|
||||||
integrate those changes, complete the Inbox feature through being
|
|
||||||
merged, and then spend the remainder of the summer polishing it. 175
|
|
||||||
or 350 hours; moderate difficulty. **Skills required**: JavaScript,
|
|
||||||
CSS, and reading and understanding a complex code path.
|
|
||||||
|
|
||||||
Experts: Aman Agrawal, Shlok Patel
|
Experts: Tim Abbott, Prakhar Pratyush
|
||||||
|
|
||||||
- **Extended notification settings**. Extend Zulip's powerful
|
|
||||||
notification settings model to support additional configuration
|
|
||||||
options. The top priorities in this area are [unmuting topics in
|
|
||||||
muted streams](https://github.com/zulip/zulip/issues/2517) and
|
|
||||||
[following a topic](https://github.com/zulip/zulip/issues/6027);
|
|
||||||
these are two of the 5 most requested features for the Zulip project
|
|
||||||
overall. For this project, one will likely want to start with some
|
|
||||||
simpler issues in the [notifications (messages)
|
|
||||||
area][notifications-messages] in order to get familiarity with the
|
|
||||||
code paths in question. There is enough to do in this project that
|
|
||||||
we could have two students working in this area. 175 or 350 hours;
|
|
||||||
moderate difficulty. **Skills required**: Python and JavaScript,
|
|
||||||
with a bit of CSS, database design, and other aspects of full-stack
|
|
||||||
feature development. Attention to detail, thinking through subtle
|
|
||||||
corner cases, designing good abstractions to help ensure
|
|
||||||
correctness, and writing tests to verify correct behavior in them
|
|
||||||
will be important for this work.
|
|
||||||
|
|
||||||
Experts: Abhijeet Bodas, Ryan Rehman
|
|
||||||
|
|
||||||
[notifications-messages]: https://github.com/zulip/zulip/labels/area%3A%20notifications%20%28messages%29
|
|
||||||
|
|
||||||
- **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: it depends
|
|
||||||
|
|
||||||
- Zulip's [**REST API documentation**](https://zulip.com/api), which is an
|
- Zulip's [**REST API documentation**](https://zulip.com/api), which is an
|
||||||
important resource for any organization integrating with Zulip, as
|
important resource for any organization integrating with Zulip, as
|
||||||
|
@ -187,7 +253,7 @@ Django, JavaScript, and CSS.
|
||||||
small, clean improvements to the Zulip UI (whether logged-in or logged-out
|
small, clean improvements to the Zulip UI (whether logged-in or logged-out
|
||||||
pages).
|
pages).
|
||||||
|
|
||||||
Experts: Aman Agrawal, Alya Abbott
|
Experts: Aman Agrawal, Karl Stolley, Alya Abbott
|
||||||
|
|
||||||
[redesign-label]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3Aredesign
|
[redesign-label]: https://github.com/zulip/zulip/issues?q=is%3Aopen+is%3Aissue+label%3Aredesign
|
||||||
|
|
||||||
|
@ -206,7 +272,7 @@ Django, JavaScript, and CSS.
|
||||||
[performance label][perf-label] may be helpful reading for the
|
[performance label][perf-label] may be helpful reading for the
|
||||||
backend part of this.
|
backend part of this.
|
||||||
|
|
||||||
Experts: Tim Abbott, Yash RE
|
Experts: Tim Abbott
|
||||||
|
|
||||||
[perf-label]: https://github.com/zulip/zulip/labels/area%3A%20performance
|
[perf-label]: https://github.com/zulip/zulip/labels/area%3A%20performance
|
||||||
|
|
||||||
|
@ -223,7 +289,7 @@ Django, JavaScript, and CSS.
|
||||||
do careful manual testing of third-party products. Fluent English, usability
|
do careful manual testing of third-party products. Fluent English, usability
|
||||||
sense and/or technical writing skills are all pluses.
|
sense and/or technical writing skills are all pluses.
|
||||||
|
|
||||||
Expert: Zixuan Li
|
Experts: Zixuan James Li, Lauryn Menard
|
||||||
|
|
||||||
- **Make Zulip integrations easier for nontechnical users to set up**.
|
- **Make Zulip integrations easier for nontechnical users to set up**.
|
||||||
This includes adding a backend permissions system for managing bot
|
This includes adding a backend permissions system for managing bot
|
||||||
|
@ -245,7 +311,7 @@ Django, JavaScript, and CSS.
|
||||||
has a bunch of good starter issues to demonstrate your skills if
|
has a bunch of good starter issues to demonstrate your skills if
|
||||||
you're interested in this area.
|
you're interested in this area.
|
||||||
|
|
||||||
Expert: Zixuan James Li
|
Experts: Zixuan James Li, 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
|
[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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue