+++ /dev/null
-+ login
-+ register
-+ settings
-+ upload avatar
-+ change password
-+ settings menu
-+ disallow login if user is logged in
-+ disallow register if user is logged in
-+ common_current_user()
-+ common_logged_in()
-+ session variable for login
-+ post notice
-+ logout
-+ subscribe
-+ unsubscribe
-+ subscribe links on profile
-+ header menu
-+ footer menu
-+ disallow direct to PHP files
-+ common_local_url()
-+ configuration for DB_DataObject
-+ date formatting
-+ new notice redirects to notice page
-+ date in shown notice links to notice page
-+ common_redirect()
-+ configuration system ($config)
-+ release 0.1
-+ design from Open Source Web Designs
-+ add H1 to each page
-+ add H2 for each page section
-+ default to public stream
-+ default avatar
-+ default HTML type
-+ set Content-Type
-+ show current values in profile settings
-+ save profile URL in profilesettings
-+ save profile URL on registration
-+ require valid nicknames
-+ reject empty notices
-+ validate registration form results
-+ validate profilesettings form results
-+ validate newnotice form results
-+ remove validation code from classes
-+ use only canonical usernames
-+ fix layout of textarea
-+ make notices into "big links"
-+ RSS 1.0 feeds of a user's notices
-+ RSS 1.0 feeds of a user's notices + friends
-+ RSS 1.0 dump of a user's notices
-+ RSS 1.0 feed of all public notices
-+ deal with PHP quotes escaping
-+ source link in footer menu
-+ public stream link in top menu
-+ dump, fix, undump database
-+ release 0.2
-+ YADIS document link on showstream
-+ YADIS document
-+ subscribe remote
-+ add subscriber remote
-+ server side of user authorization
-+ server side of request token
-+ server side of access token
-+ OAuth store
-+ log of consumers who ask for access
-+ receive remote notice
-+ send remote notice
-- receive remote profile update
-- send remote profile update
-+ subscribe form for not-logged-in users on showstream
-+ pretty URLs
-+ doc action
-+ about doc
-- help doc
-- FAQ doc
-+ privacy doc
-+ source doc
-- roadmap doc
-- contact doc
-- add a way to stick variables into documents
-+ FOAF document for user
-+ license in RSS feeds
-+ TOS checkbox on register
-+ registration instructions
-+ login instructions
-+ profile settings instructions
-+ avatar instructions
-+ password change instructions
-+ fix spacing on notices
-+ fix spacing in profile
-- limit entry in textarea to 140 chars
-+ add a next page link to showstream
-+ add a next page link to public
-+ add a next page link to all
-- AGPL notification
-- Check licenses of all libraries for compatibility
-+ @ messages
-+ Automatically linkify URLs in notices
-+ themes
-+ theme per site
-- only local notices in public stream
-- only local notices in public RSS
-+ graphic refresh on all
-+ graphic refresh on avatar
-- graphic refresh on doc
-+ graphic refresh on login
-- graphic refresh on newnotice
-+ graphic refresh on password
-+ graphic refresh on profilesettings
-+ graphic refresh on public
-+ graphic refresh on register
-- graphic refresh on remotesubscribe
-+ graphic refresh on shownotice
-+ graphic refresh on showstream
-- graphic refresh on subscribed
-- graphic refresh on subscriptions
-+ graphic refresh on userauthorization
-- update default theme to use new, more semantic, HTML
-- subscribe/unsubscribe on subscriptions page
-- subscribe/unsubscribe on subscribed page
-+ correct use of views menu in settings
-+ correct use of views menu in streams
-- INSTALL file
-- release 0.3
-- microid for profile page
-- format times per user
-- timezone preferences in Profile settings
-- email notification on subscriptions
-- content negotiation for interface language
-- user preference for interface language
-- gettext
-- tinyurl-ification of URLs
-- set Last-Modified
-- XML sitemap generation
-- email confirmation for registration
-- email options
-- change cookie handling for anon users to be more cache-friendly
-- jQuery for as much as possible
-- content negotiation for content type
-- content negotiation for encoding
-- If-Modified-Since support
-- Vary
-- site logo
-- check license compatibility for remote subscribe
-- optional FOAF URL in openmicroblogging exchange
-- release 0.4
-- content negotiation for charset (iconv?)
-- license per notice
-- use only canonical email addresses
-- allow mixed-case usernames
-- allow non-latin usernames
-- store canonical username for comparison and fetch
-- theme per profile
-- email newsletter
-- RDF dump of entire site
-- delete a notice
-- plugins and hooks and other extensibility
-- RDFa for stream pages
-- RDFa for subscriber pages
-- RDFa for subscribed pages
-- # tags
-- L: location
-- hreviews
-- stay logged in between sessions
-- use RSS as a subscription
-- license per attachment
-- forward notices to Jabber
-- receive notices from Jabber
-- release 0.5
-- URL notices
-- image notices
-- video notices
-- audio notices
-- forward notices to other IM
-- forward notices to mobile phone
-- receive notices from other IM
-- receive notices from mobile phone
-- machine tags
-- release 0.6
-- OAuth for third-party tools (desktop, other sites)
-- Twitter-compatible API
-- Pownce-compatible API
-- include twitter subscriptions (push and pull)
-- include Pownce subscriptions (push and pull)
-- privacy
-- Wrap DB_DataObject with memcached caching layer
-- login throttle to prevent brute-force attacks
-- form token in login to prevent XSS
-- release 1.0
-- Atom Publishing Protocol
-- "Universal" public feed
\ No newline at end of file
--- /dev/null
+Roadmap
+-------
+
+This is a roadmap of tasks for different versions of the
+[Laconica](http://laconi.ca/) software. It's meant to help answer the
+question, "Is Laconica ever going to have such-and-such a feature?" or
+"When will Laconica do such-and-such?"
+
+Release 0.1
+-----------
+
+This was an internal milestone release, mostly for developing the core
+functionality.
+
++ login
++ register
++ settings
++ upload avatar
++ change password
++ settings menu
++ disallow login if user is logged in
++ disallow register if user is logged in
++ common_current_user()
++ common_logged_in()
++ session variable for login
++ post notice
++ logout
++ subscribe
++ unsubscribe
++ subscribe links on profile
++ header menu
++ footer menu
++ disallow direct to PHP files
++ common_local_url()
++ configuration for DB_DataObject
++ date formatting
++ new notice redirects to notice page
++ date in shown notice links to notice page
++ common_redirect()
++ configuration system ($config)
+
+Release 0.2
+-----------
+
+Another internal milestone. Bumped up from cruddy caveman HTML to a
+borrowed design from [OSWD](http://www.oswd.org/), added a lot of RSS
+generation, and more careful form validation.
+
++ design from Open Source Web Designs
++ add H1 to each page
++ add H2 for each page section
++ default to public stream
++ default avatar
++ default HTML type
++ set Content-Type
++ show current values in profile settings
++ save profile URL in profilesettings
++ save profile URL on registration
++ require valid nicknames
++ reject empty notices
++ validate registration form results
++ validate profilesettings form results
++ validate newnotice form results
++ remove validation code from classes
++ use only canonical usernames
++ fix layout of textarea
++ make notices into "big links"
++ RSS 1.0 feeds of a user's notices
++ RSS 1.0 feeds of a user's notices + friends
++ RSS 1.0 dump of a user's notices
++ RSS 1.0 feed of all public notices
++ deal with PHP quotes escaping
++ source link in footer menu
++ public stream link in top menu
++ dump, fix, undump database
+
+Release 0.3
+-----------
+
+First public release (theoretically). Added distributed subscriptions,
+"fancy" URLs, and a new graphic design for stoi.ca.
+
++ YADIS document link on showstream
++ YADIS document
++ subscribe remote
++ add subscriber remote
++ server side of user authorization
++ server side of request token
++ server side of access token
++ OAuth store
++ log of consumers who ask for access
++ receive remote notice
++ send remote notice
+- receive remote profile update
+- send remote profile update
++ subscribe form for not-logged-in users on showstream
++ pretty URLs
++ doc action
++ about doc
++ help doc
+- FAQ doc
++ privacy doc
++ source doc
++ roadmap doc
+- contact doc
+- add a way to stick variables into documents
++ FOAF document for user
++ license in RSS feeds
++ TOS checkbox on register
++ registration instructions
++ login instructions
++ profile settings instructions
++ avatar instructions
++ password change instructions
++ fix spacing on notices
++ fix spacing in profile
+- limit entry in textarea to 140 chars
++ add a next page link to showstream
++ add a next page link to public
++ add a next page link to all
+- AGPL notification
+- Check licenses of all libraries for compatibility
++ @ messages
++ Automatically linkify URLs in notices
++ themes
++ theme per site
+- only local notices in public stream
+- only local notices in public RSS
++ graphic refresh on all
++ graphic refresh on avatar
+- graphic refresh on doc
++ graphic refresh on login
+- graphic refresh on newnotice
++ graphic refresh on password
++ graphic refresh on profilesettings
++ graphic refresh on public
++ graphic refresh on register
+- graphic refresh on remotesubscribe
++ graphic refresh on shownotice
++ graphic refresh on showstream
+- graphic refresh on subscribed
+- graphic refresh on subscriptions
++ graphic refresh on userauthorization
+- update default theme to use new, more semantic, HTML
+- subscribe/unsubscribe on subscriptions page
+- subscribe/unsubscribe on subscribed page
++ correct use of views menu in settings
++ correct use of views menu in streams
+- INSTALL file
+
+Release 0.4
+-----------
+
+- microid for profile page
+- format times per user
+- timezone preferences in Profile settings
+- email notification on subscriptions
+- content negotiation for interface language
+- user preference for interface language
+- gettext
+- tinyurl-ification of URLs
+- set Last-Modified
+- XML sitemap generation
+- email confirmation for registration
+- email options
+- change cookie handling for anon users to be more cache-friendly
+- jQuery for as much as possible
+- content negotiation for content type
+- content negotiation for encoding
+- If-Modified-Since support
+- Vary
+- site logo
+- check license compatibility for remote subscribe
+- optional FOAF URL in openmicroblogging exchange
+
+Release 0.5
+-----------
+
+- content negotiation for charset (iconv?)
+- license per notice
+- use only canonical email addresses
+- allow mixed-case usernames
+- allow non-latin usernames
+- store canonical username for comparison and fetch
+- theme per profile
+- email newsletter
+- RDF dump of entire site
+- delete a notice
+- plugins and hooks and other extensibility
+- RDFa for stream pages
+- RDFa for subscriber pages
+- RDFa for subscribed pages
+- # tags
+- L: location
+- hreviews
+- stay logged in between sessions
+- use RSS as a subscription
+- license per attachment
+- forward notices to Jabber
+- receive notices from Jabber
+
+Release 0.6
+-----------
+
+- URL notices
+- image notices
+- video notices
+- audio notices
+- forward notices to other IM
+- forward notices to mobile phone
+- receive notices from other IM
+- receive notices from mobile phone
+- machine tags
+
+Release 1.0
+-----------
+
+- OAuth for third-party tools (desktop, other sites)
+- Twitter-compatible API
+- Pownce-compatible API
+- include twitter subscriptions (push and pull)
+- include Pownce subscriptions (push and pull)
+- privacy
+- Wrap DB_DataObject with memcached caching layer
+- login throttle to prevent brute-force attacks
+- form token in login to prevent XSS
+
+Post-1.0
+--------
+
+- Atom Publishing Protocol
+- "Universal" public feed
+- global registry (LDAP at openmicroblogging.net, maybe?)
\ No newline at end of file