Skip to content

Instantly share code, notes, and snippets.

@alyx
Last active October 22, 2017 16:24
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save alyx/4a73491df0f8a1abffbf to your computer and use it in GitHub Desktop.
Save alyx/4a73491df0f8a1abffbf to your computer and use it in GitHub Desktop.
atheme-services account degradation

Account Degradation

  1. Current System

  1. Account reaches an age (e.g. 30d)

  2. Services considers the account expired

  3. Services removes this account. This frees all nicknames associated with the account for re-registration and removes this account, including all metadata, group and channel access from the database.

  4. There is no D. That's all that happens.

  5. Account Degradation System (Proposed by @alyx)


  1. Account reaches an age.
  2. Services considers the nicknames associated with the account to be expired.
  3. Services frees the associated nicknames for re-registration.
  4. The account name is set to the accounts unique id, which is defined internally by Atheme on account registry.
  5. The "account" is a permanent entity, and nicknames are the perishable product.

Discussion Questions

  1. Would the degraded system continue to support functioning as a full account?
  2. How would the degraded user regain his account? (Problem: People don't write down their UID.)
  3. How would the degraded account be displayed to users and services operators?

Currently Proposed Answers

  1. Discussion needed.
  2. The original idea was to send the user an email. However it would not be ideal for users to receive emails they haven't requested. Perhaps we could have a per-user option for them to enable email alerts for their account?
  3. Post-degradation, there would be two views for the different user classes.

Users would see:

Information on AAAAAABD5 (account AAAAAABD5):
Original Account Name  : Alyx
Last addr              : alyx@198.52.gwx.tr
Last seen              : Oct 15 01:44:23 2013 (32 weeks, 1 day, 09:35:21 ago)
*** End of Info ***

and operators would see the following:

Information on AAAAAABD5 (account AAAAAABD5):
Registered             : Oct 15 01:44:23 2013 (32 weeks, 1 day, 09:35:21 ago)
Entity ID              : AAAAAABD5
Expired Account Name   : Alyx
Last addr              : alyx@198.52.gwx.tr
Real addr              : alyx@198.52.ip.addr
Last seen              : Oct 15 01:44:23 2013 (32 weeks, 1 day, 09:35:21 ago)
Expired Nicknames      : Alyx, NotAlyx
Channels               : 2 founder, 2 other (See below note)
Groups                 : !atheme-developers (See below note)
*** End of Info ***
  1. Note: This could be changed to "Expired Channels" or just removed, depending on the discussion of [question one][q1].
@grawity
Copy link

grawity commented May 30, 2014

I think it would be really neat if the functions that look up accounts by nickname or account name could also look them up by entity ID

Already exists, ?entityid syntax. Some places opt out of it though (e.g. NickServ IDENTIFY). Discussed on IRC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment