Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update twisted.words.protocol.irc to use IRCv3 #12180

Open
16 tasks
capttwinky opened this issue May 20, 2024 · 3 comments
Open
16 tasks

Update twisted.words.protocol.irc to use IRCv3 #12180

capttwinky opened this issue May 20, 2024 · 3 comments
Labels

Comments

@capttwinky
Copy link

capttwinky commented May 20, 2024

Update twisted.words.protocol.irc to conform to RFC 1459 and RFC 2812: IRCv3
Updates in IRCv3:

  1. Capabilities Negotiation: IRCv3 introduces a mechanism for clients and servers to negotiate the use of specific protocol features. This allows clients to opt-in to new features as they are supported by the server.
  2. Extended Metadata: IRCv3 allows for more extensive metadata about users and channels. This includes the ability to set user modes and channel modes with more detailed information.
  3. Message Tags: Messages in IRCv3 can include tags, which provide additional context or metadata. This can be used for features like message IDs, timestamps, or user actions.
  4. Authentication Enhancements: IRCv3 includes support for SASL (Simple Authentication and Security Layer), which provides a standardized way to handle authentication mechanisms, improving security and interoperability.
  5. Batching: This feature allows multiple messages to be grouped together and sent as a single batch, reducing the number of separate messages that need to be processed and improving efficiency.
  6. Monitor Command: IRCv3 introduces the MONITOR command, which allows clients to track the online status of specific users more efficiently than with the older WATCH command.
  7. Standardization of Common Features: IRCv3 standardizes many features that were previously implemented inconsistently across different IRC servers, such as account registration, message histories, and away notifications.
  8. UTF-8 Support: IRCv3 supports the UTF-8 character encoding, allowing for a wider range of characters and better support for internationalization.
  9. Client and Server Time Synchronization: server-time message tags ensure that messages are timestamped accurately.
  10. Metadata Protocol (METADATA): Allows clients to store and retrieve arbitrary metadata associated with users and channels, enhancing the flexibility and richness of the IRC experience.

Updates to twisted.words.protocols.irc to support IRCv3

  1. Capabilities

    • Add support for the CAP command to handle capability negotiation between the client and server.
    • Modify the protocol to recognize and handle new capabilities advertised by the server.
  2. Message Tags

    • Modify the message parsing logic to recognize and parse message tags.
  3. Tag Handling

    • Ensure that message tags can be added to outgoing messages
    • Ensure tags are properly processed for incoming messages.
  4. Authentication Enhancements

    • Implement support for SASL (Simple Authentication and Security Layer) mechanisms including: PLAIN, EXTERNAL, and SCRAM-SHA-256.
    • Adjust the authentication flow to incorporate SASL mechanisms.
  5. Batching

    • Add support for the BATCH command to handle grouped messages.
    • Ensure that the protocol can create, send, and process batches of messages.
  6. Monitor Command

    • Implement MONITOR Command to efficiently track the online status of users.
  7. Standardization of Common Features

    • Consistent Implementation: Standardize features like account registration, message histories, and away notifications according to IRCv3 specifications.
  8. UTF-8 Support

    • Ensure that all message handling uses UTF-8 encoding, and that the protocol correctly handles UTF-8 characters in messages.
  9. Client and Server Time Synchronization

    • Implement support for the server-time message tag to ensure accurate timestamping of messages.
    • Timestamp Handling: Ensure that the protocol correctly parses and uses server-time timestamps.
  10. Metadata Protocol (METADATA)

    • Implement the METADATA command to manage arbitrary metadata for users and channels.
    • Add support for metadata-related commands to handle the storage and retrieval of user and channel metadata.
@adiroiban
Copy link
Member

Thanks Joel, for the report.

Note that IRC support in Twisted currently has no active maintainer.

You can try to submit PRs that add support for IRCv3 and hope someone is interested in reviewing them.

@glyph
Copy link
Member

glyph commented May 21, 2024

You can try to submit PRs that add support for IRCv3 and hope someone is interested in reviewing them.

really, core developers ought to be looking at the whole list of reviews and not worrying about what parts of the codebase they are the "active maintainer" for (not really a concept we have honored officially since 2009 or so). But we do not have a great way of tracking or motivating this since the high-scores board died in the move to Github 😞

@glyph
Copy link
Member

glyph commented May 21, 2024

(See https://twisted.reviews/ )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants