python-hyper / python-hyper/h2

Extensibility framework

Ouverte
#57 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Enhancement
Langage dominant
Python
Étoiles
1k
Forks
187
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

HTTP/2 is extendable: it's one of its great strengths. It would be really nice if H2 was relatively easily extensible. We should aim to start supporting pluggable HTTP/2 extensions.

What do we need to do this? Well, the answer is: what can extensions do?

  • They can add new frames. This means we need to be able to add:
    • new frame types that can be successfully parsed;
    • new transitions in the state machine, both connection and stream, that occur when a new frame is received;
    • specific frame callbacks, both connection and stream, that allow manipulating the connection and stream objects;
    • allow new frames to follow the state machine transitions and callbacks of a pre-existing frame;
  • They can add new state machine transitions in the absence of new frames, or adjust the existing state machine transitions;
  • They can add new settings. We need to be able to inject useful representations of settings, and allow callbacks for those settings if they're changed;
  • They can add new error codes.

This will also require work in hyperframe.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par cartographier la machine à états HTTP/2 existante, l’analyse des frames, les callbacks, les settings et la gestion des codes d’erreur dans h2. Examinez ensuite le travail associé requis dans hyperframe et déterminez comment des extensions pourraient ajouter des frames, des transitions, des settings, des callbacks et des codes d’erreur sans modifier le comportement existant. Le travail est considéré comme terminé lorsqu’une conception d’extensibilité définie et une implémentation de support existent dans les deux projets.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api, networking
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
20/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.