* Global user accounts
* Self-registration with email address (`=register <email>`)
* Self-removal of accounts
** Email confirmation
* Global and local flags
* Stalks are per-channel
* Stalk management flags are channel-specific
* Ops can manage local flags, as can users holding specific flags
== Proposed XML ==
* root
** users
*** user mask= mail= globalflags= mailconfirmed=
*** user mask= mail= globalflags=
*** user mask= globalflags=
*** ...
** channels
*** channel name=
**** users
***** user mask= localflags= subscribed=
***** ....
**** stalks
***** stalk name=
****** searchtree
****** subscribers
******* user mask=
******* ...
*** channel name=
*** ...
== Action plan ==
* [ ] Start storing users
** [ ] `=register` command
** [ ] Some way to delete your own account
** [ ] Some way for admins to forcibly delete accounts
** [ ] Some way to change your email address
** [ ] Don't force an email address to be stored
** [ ] Email confirmation before activation
** [ ] Privacy policy
* [ ] Global flags
** [ ] `=flags global <user> <changes>` command
** [ ] Persistence of flags
** [ ] Adjustments to BasicFlagService
** [ ] Owner protection
* [ ] Start storing channels
** [ ] Migrate all stalks to base channel
** [ ] Ensure base channel is read from configuration when nothing else exists
** [ ] `=channel <join|part> <#channel>` command
** [ ] Don't permit part of base channel
** [ ] Make stalks aware of the channel they are defined in
** [ ] Local flags
** [ ] ChanOps have access in their channel
* [ ] Subscriptions
** [ ] `=channel <subscribe|unsubscribe>`
** [ ] `=stalk <subscribe|unsubscribe>`
** [ ] Subscriptions don't work if you don't have a confirmed email address
** [ ] Removal of email address force-removes all subscriptions, but replacing doesn't