| 
				     | 
				
| Line 1: | 
Line 1: | 
 |   	
  |  | #REDIRECT [[Thunderbird/ISPDB]]  | 
 | David Ascher   	
  |  | 
 |    |  | 
 | ISPDB will evolve a lot, I'm sure.  For example, the idea of ISPs like
  |  | 
 | Rick's being able to feed data into it is a fascinating one, but I think
  |  | 
 | we should start with baby steps.
  |  | 
 |    |  | 
 | Here are the first few steps as I see them:
  |  | 
 |    |  | 
 | Stage 0:  what we have now -- we serve a set of static XML files at a
  |  | 
 | well known URL, that Thunderbird's autoconfig dialog can poke at,
  |  | 
 | indexed by domain.  That's all we need to ship Thunderbird 3.
  |  | 
 |    |  | 
 | Stage 1: we push out the django app which we've been talking about
  |  | 
 | mostly, so that we have a minimal, biased-towards-secure,
  |  | 
 | simple-but-safe process for soliciting new configurations and validating
  |  | 
 | them.
  |  | 
 |    |  | 
 | The Django app that is currently in draft form has the following design
  |  | 
 | criteria:
  |  | 
 |    |  | 
 |    - it's easy for people to submit data (requiring some sort of login
  |  | 
 | -- currently openid, cause it's simple and means we don't need to store
  |  | 
 | emails or passwords)
  |  | 
 |    |  | 
 |    - only trusted people can label user-submitted data as "verified"
  |  | 
 |    |  | 
 |    - verified data can be exported into the XML format that Thunderbird
  |  | 
 | expects.
  |  | 
 |    |  | 
 |    - publishing of those XML files will be done by a (at first) manual
  |  | 
 | process of exporting to disk, and svn checkin into the repo that's
  |  | 
 | serving the static files, so that we have another review of data changes
  |  | 
 | before they go live.
  |  | 
 |    |  | 
 | End of Stage 1 is defined by: ispdb is live, and we actively solicit
  |  | 
 | input from the greater Mozilla community about settings for their ISPs.
  |  | 
 |    |  | 
 | Stages 2
  |  | 
 |   - we get feedback based on stage 1 being live
  |  | 
 |   - we analyze the logs from the autoconfig HTTP GET calls to find out
  |  | 
 | what domains people are asking for, so we can proactively look for
  |  | 
 | configuration information for those domains
  |  | 
 |   - we automate the export from the django app to svn
  |  | 
 |   - we put in some process for revocation
  |  | 
 |    |  | 
 | later:
  |  | 
 |    - we build in some karma notions, so we can reward good
  |  | 
 | contributors/reviewers.
  |  | 
 |    - we increase the scope of ISPs we target (e.g. Exchange servers?)
  |  | 
 |    - we increase the scope of kinds of data we publish (more than email?)
  |  | 
 |    |  | 
 | even later:
  |  | 
 |   - we internationalize the site
  |  | 
 |    - we actually serve from django directly (with a suitable caching
  |  | 
 | proxy in front)
  |  | 
 |    |  | 
 | ------
  |  | 
 |    |  | 
 | I'd strongly encourage that we focus on what's needed to get to Stage 1,
  |  | 
 | so that we have something to do Stage 2 with =).  To that end, here are
  |  | 
 | some of the things I suspect we need to have in place, and some ideas as
  |  | 
 | to who could do what.
  |  | 
 |    |  | 
 |   - a test suite, so we feel more confidence in changing code.  In
  |  | 
 | particular, I think it's critical that we test the code that does
  |  | 
 | "import from XML -> export to XML", and makes sure that that is not
  |  | 
 | lossy =). [students]
  |  | 
 |    |  | 
 |   - more testing from people acting as users, and acting as reviewers,
  |  | 
 | to expose issues in the user experience of both of those scenarios.
  |  | 
 | [students, everyone]  |  | 
 |    |  | 
 |   - a feature that given an ISP configuration, does some sanity
  |  | 
 | checking, to try and avoid security issues -- check that hostnames are
  |  | 
 | subdomains of the email domain in question, sanity check against known
  |  | 
 | bad actors somehow.
  |  | 
 |    |  | 
 |   - publish documentation on the rules that we're following to approve a
  |  | 
 | configuration.  My current draft is something like:
  |  | 
 |    |  | 
 |      - configuration information is available on a public web page that
  |  | 
 | is clearly affiliated with the main owner of the domain (not on some
  |  | 
 | bboard or newsgroup).
  |  | 
 |      - said configuration information is in a language that one of the
  |  | 
 | trusted people speaks
  |  | 
 |      - passes sanity-check enforced by the backend.
  |  | 
 |    |  | 
 |   - some scripts for gozer to test the exporting / checkin / publishing
  |  | 
 | phase. [gozer?]
  |  | 
 |    |  | 
 |    - until we have some more confidence in the data, I'd suggest that we
  |  | 
 | do daily backups of the sqlite DB, to go along w/ our changes to the
  |  | 
 | code [gozer].
  |  | 
 |    |  | 
 |    - we probably want some better looking graphics, but that can be late
  |  | 
 | in the process. [rebron]
  |  | 
 |    |  | 
 |    - we probably want some editorial review of the words on the page. [??]
  |  | 
 |    |  | 
 |    - we want a clear deployment plan, with the /admin URL probably
  |  | 
 | behind a MoMo certificate, which we can issue to any trusted person. [gozer]
  |  | 
 |    |  | 
 | ----
  |  | 
 |    |  | 
 | I think stage 1 is doable in a small number of weeks, because I think
  |  | 
 | what we have isn't a very complicated system.   If there are things that
  |  | 
 | strike people as complicated, _please_ point them out, I'm completely
  |  | 
 | happy to revise the requirements to make it less complicated.
  |  | 
 |    |  | 
 | Feedback, questions?
  |  | 
 |    |  | 
 | --david
  |  | 
 |    |  | 
 | PS: ISPDB is woefully underdocumented.  If someone wanted to start
  |  | 
 | authoring some wiki pages that collects some of the various bits of
  |  | 
 | writing (such as this one) on it, feel free.
  |  |