ircv3 / ircv3-ideas

46 stars 3 forks source link

Google Summer of Code project proposals thread #86

Closed slingamn closed 2 years ago

slingamn commented 2 years ago

Thanks for your interest in doing a Google Summer of Code project with IRCv3!

Unlike other open-source projects, IRCv3 is not a single software project, but a federation of independent peer projects who come together to deliberate on shared open standards. Working with IRCv3 presents the opportunity to engage with a standards process, and to work across project boundaries with a variety of different developers and technologies.

When we say "specifications", we mean human-readable documents that describe an extension to the core IRC protocol. When we say "implementations", we mean code contributed to a participating (OSI-licensed) member project that conforms to the specification. It is typical for the "drafting" of a specification to involve a back-and-forth between the specification and implementation processes: deliberation over the specification will surface unforeseen edge cases and bugs in the candidate implementations, but also the process of implementation will surface ambiguities and bugs in the specification.

If you're interested in any of these projects, or if you want to discuss your own project idea with us, please contact us!

Note that although most of these projects are described as involving at least two different codebases and languages, you shouldn't feel that you necessarily need to contribute to multiple codebases or complete all the deliverables yourself: you can work out deliverables and a schedule with your prospective mentor.

File uploads

Difficulty: medium

Moxie Marlinspike just called us out:

People are still trying to standardize sharing a video reliably over IRC

We can't take this lying down: let's make file uploading in IRC happen this year! In the most likely direction for this project, there will be minimal involvement with the IRC protocol itself: the upload service will need to be discoverable over IRC, and will need to integrate with IRC-native mechanisms for authenticating users, but actual uploads and downloads will use HTTP.

The deliverables for this project are:

  1. A publishable draft of a specification
  2. Reference implementations for both a server (a greenfield project, probably Go or Rust) and a client (integrating with an existing client project, probably JavaScript but possibly a native desktop client).

Metadata

Difficulty: medium

The draft metadata specification would allow IRC users to publish information about themselves, such as a personal homepage or an avatar. This specification has languished for some time due to a lack of sustained time investment: however, most of the puzzle pieces are already in place.

The deliverables for this project are:

  1. A publishable draft of the specification, addressing outstanding concerns raised by stakeholders
  2. Reference implementations for both a server (probably Go) and a client (probably JavaScript)

Push notifications

Difficulty: hard

Push notifications upend the traditional client-server model of IRC by introducing additional third-party infrastructure, posing new privacy and abuse concerns. Nevertheless, the lack of a robust, standardized solution for this is a drag on IRC adoption: it's time we addressed it.

The deliverables for this project are:

  1. A minimum viable product for push notifications over IRC, including both a server component (probably Go) and a client component (probably a Java application for Android)
  2. Initial work on a draft specification; this involves engaging with existing RFCs for push notifications, including RFC 8030 and RFC 8291

Named modes

Difficulty: medium

"Modes" are the traditional mechanism for configuring settings on IRC channels and users. Unfortunately, the current situation with modes is messy: the ecosystem is fragmented and many important modes are not standardized.

The current proposed draft for named-modes promises to solve this issue, enabling the creation of friendly user interfaces for intuitive channel configuration across multiple server implementations. The deliverables for this project are:

  1. Reference implementations for both a server (probably Go) and a client (probably JavaScript)
  2. A publishable draft of the specification
slingamn commented 2 years ago

Thank you for applying to be a Google Summer of Code 2022 mentor organization. Sadly, we were unable to accept IRCv3 this year. We had many more applications than available slots. We hope you will apply again in the future!

slingamn commented 2 years ago

Postmortem for future reference: a sufficient condition for the application to be rejected was that it did not comply with the rules. Specifically, each project idea should have had an hours estimate (175 or 350 hours) and a list of possible mentors.

I was sent a reminder email about complying with these rules, but I didn't see it.