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
|
||||
|
||||
GSoC offers two project size options: 175 hours and 350 hours. 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 either project size. 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.
|
||||
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.
|
||||
|
||||
It's also important to understand that how much progress one can
|
||||
accomplish over the course of the summer is as much a function of the
|
||||
project as of the contributor. Contributors who learn to consistently
|
||||
package their work into [reviewable pull
|
||||
requests](../contributing/reviewable-prs.md) tend to accomplish the
|
||||
most during GSoC.
|
||||
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
|
||||
|
||||
|
@ -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
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
[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
|
||||
[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
|
||||
porting the main web app JavaScript codebase to TypeScript; at present we've
|
||||
done much of the necessary tooling setup, and about 8% of lines have been
|
||||
migrated (mostly in libraries used widely); the goal for this project will be
|
||||
to get that to ~75%. [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 and checking their work carefully.
|
||||
- Migrate Zulip's **[direct message recipient data
|
||||
structures](https://github.com/zulip/zulip/issues/25713)** to a new
|
||||
model with better performance characteristics and that more
|
||||
importantly enables personal settings associated with a direct
|
||||
message conversation, and add several settings (see the linked
|
||||
issues) enabled by that infrastructure work. **Skills required**:
|
||||
This project will be deep Python 3/PostgreSQL work. Concretely,
|
||||
challenging parts of this project include thinking about races and
|
||||
database transactions, writing database migrations intended to be
|
||||
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
|
||||
home screen option for the Zulip web application that works like
|
||||
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.
|
||||
**Skills required**: A high level of fluency with writing readable
|
||||
Python 3 and thinking about corner cases.
|
||||
|
||||
Experts: Aman Agrawal, Shlok Patel
|
||||
|
||||
- **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
|
||||
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
|
||||
|
@ -187,7 +253,7 @@ Django, JavaScript, and CSS.
|
|||
small, clean improvements to the Zulip UI (whether logged-in or logged-out
|
||||
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
|
||||
|
||||
|
@ -206,7 +272,7 @@ Django, JavaScript, and CSS.
|
|||
[performance label][perf-label] may be helpful reading for the
|
||||
backend part of this.
|
||||
|
||||
Experts: Tim Abbott, Yash RE
|
||||
Experts: Tim Abbott
|
||||
|
||||
[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
|
||||
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**.
|
||||
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
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in New Issue