Voyant sur le forum monnaie-libre que @elois aussi souhaiterait simplifier la machine à état des identités, je me permet de lancer les réflexions.
Pour rappel, historiquement, on a voulu représenter dans cette machine à état toute la complexité d’une adhésion « humaine » à une communauté. C’est à dire :
- La personne se fait connaitre (publication de l’identité)
- La personne déclare demander à adhérer (publication d’adhésion)
- La personne se fait certifier
- La personne souhaite quitter la communauté (publication d’une sortie de l’adhésion)
- La personne souhaite révoquer son identité (révocation de l’identité)
- La personne renouvelle son adhésion (renouvellement)
- La personne abandonne son identité (non renouvellement)
- La personne a disparue et on considère son identité exclue (non renouvellement au bout de 2 ans)
Aujourd’hui, a priori la machine à état est la suivante :
@startuml
[*] --> UIDPublished
UIDPublished --> [*]
UIDPublished --> UIDIsRevoked : UID is revoked
UIDPublished -> NotAMember
NotAMember : Awaits5Certs
NotAMember : SendsMembership
NotAMember --> UIDIsRevoked : UID is revoked
NotAMember -> MembershipSent
MembershipSent : Awaits5Certs
MembershipSent --> [*]
MembershipSent --> UIDIsRevoked : UID is revoked
MembershipSent -> IsMember : Got 5 certs
IsMember : Has To renew before 1 year
IsMember : UIDIsWritten
IsMember -> NoMoreMember : Does not renew
IsMember -> NoMoreMember : Leaving
IsMember -> NoMoreMember : Missing 5 certs
IsMember --> UIDIsRevoked : UID is revoked
NoMoreMember : Has to renew before 2 year
NoMoreMember --> UIDIsRevoked : UID is revoked
NoMoreMember --> UIDIsRevoked : Does not renew before 2 years
@enduml
Avec le recul, on voit que cette machine à état est trop complexe et aboutit à :
- Des interfaces logicielles compliquées
- Une compréhension du fonctionnement de l’adhésion laborieux à expliquer et à comprendre
Je pense qu’on pourrait aboutir aux mêmes fonctionnalités utilisateurs, en simplifiant a minima l’adhésion. L’utilisateur ne verrait quasiment pas la différence, tandis que cette simplification stabiliserait les logiciels et rendrait les interfaces plus claires :
@startuml
[*] --> UIDPublished
UIDPublished --> [*]
UIDPublished --> UIDIsRevoked : UID is revoked
UIDPublished : Awaits5Certs
UIDPublished -> IsMember : Got 5 certs
IsMember : Has To renew before 1 year
IsMember : UIDIsWritten
IsMember -> NoMoreMember : Does not renew
IsMember -> NoMoreMember : Missing 5 certs
IsMember --> UIDIsRevoked : UID is revoked
NoMoreMember : Has to renew before 2 year
NoMoreMember --> UIDIsRevoked : UID is revoked
NoMoreMember --> UIDIsRevoked : Does not renew before 2 years
@enduml
Qu’en pensez-vous ?