Features/Thunderbird/Modern MIME Parser

From MozillaWiki
< Features‎ | Thunderbird
Revision as of 00:08, 30 January 2012 by Jcranmer (talk | contribs) (Created page with "{{FeatureStatus |Feature name=Modern MIME Parser |Feature stage=Draft |Feature version=Thunderbird 14? |Feature health=OK }} {{FeatureTeam |Feature lead engineer=Joshua Cranmer }...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Please use "Edit with form" above to edit this page.

Status

Modern MIME Parser
Stage Draft
Status `
Release target Thunderbird 14?
Health OK
Status note `

{{#set:Feature name=Modern MIME Parser

|Feature stage=Draft |Feature status=` |Feature version=Thunderbird 14? |Feature health=OK |Feature status note=` }}

Team

Product manager `
Directly Responsible Individual `
Lead engineer Joshua Cranmer
Security lead `
Privacy lead `
Localization lead `
Accessibility lead `
QA lead `
UX lead `
Product marketing lead `
Operations lead `
Additional members `

{{#set:Feature product manager=`

|Feature feature manager=` |Feature lead engineer=Joshua Cranmer |Feature security lead=` |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=` |Feature ux lead=` |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=` }}

Open issues/risks

`

Stage 1: Definition

1. Feature overview

The current implementation of libmime is not maintainable, by combination of the library pushing the entire stack from parsing to display management logic into one single system and the implementation in an obfuscatory style of C. The goal of this project is to provide a new implementation of the parsing logic which is more accessible to other people.

2. Users & use cases

The new implementation should be easily usable and drivable from JS, and have at least a usable API from C++. These are the kinds of tasks we envision supporting: 1. Use in the fakeservers where understanding MIME is necessary 2. Things like Gloda that need an accurate representation of the MIME tree

3. Dependencies

`

4. Requirements

1. Must be usable from different threads (in both C++ and JS, from ChromeWorkers) 2. Should avoid main thread if it all possible 3. Extension authors should confirm that the design is tenable in the long term

Non-goals

This feature is intended to eventually replace libmime in the long run. However, replacing the current code in libmime is not a goal in this iteration.

In this iteration, the following features will be unsupported to keep the implementation manageable: 1. RFC 2047/RFC 2231 decoding (all i18n concerns, basically) 2. Support for uuencode, yEnc, S/MIME, PGP

Stage 2: Design

5. Functional specification

`

6. User experience design

`

Stage 3: Planning

7. Implementation plan

The core parser that can handle the MIME torture test is already complete as of this writing. Support for decoding needs to be done.

8. Reviews

Security review

A MIME fuzzer should be developed at some part in this process.

Privacy review

`

Localization review

l10n and i18n are explicit non-goals for now.

Accessibility

`

Quality Assurance review

We need some way of checking that the new parser and libmime return the same results.

Operations review

`

Stage 4: Development

9. Implementation

`

Stage 5: Release

10. Landing criteria

We need to ensure that this gets added to an automated test suite somehow. {{#set:Feature open issues and risks=` |Feature overview=The current implementation of libmime is not maintainable, by combination of the library pushing the entire stack from parsing to display management logic into one single system and the implementation in an obfuscatory style of C. The goal of this project is to provide a new implementation of the parsing logic which is more accessible to other people. |Feature users and use cases=The new implementation should be easily usable and drivable from JS, and have at least a usable API from C++. These are the kinds of tasks we envision supporting: 1. Use in the fakeservers where understanding MIME is necessary 2. Things like Gloda that need an accurate representation of the MIME tree |Feature dependencies=` |Feature requirements=1. Must be usable from different threads (in both C++ and JS, from ChromeWorkers) 2. Should avoid main thread if it all possible 3. Extension authors should confirm that the design is tenable in the long term |Feature non-goals=This feature is intended to eventually replace libmime in the long run. However, replacing the current code in libmime is not a goal in this iteration.

In this iteration, the following features will be unsupported to keep the implementation manageable: 1. RFC 2047/RFC 2231 decoding (all i18n concerns, basically) 2. Support for uuencode, yEnc, S/MIME, PGP |Feature functional spec=` |Feature ux design=` |Feature implementation plan=The core parser that can handle the MIME torture test is already complete as of this writing. Support for decoding needs to be done. |Feature security review=A MIME fuzzer should be developed at some part in this process. |Feature privacy review=` |Feature localization review=l10n and i18n are explicit non-goals for now. |Feature accessibility review=` |Feature qa review=We need some way of checking that the new parser and libmime return the same results. |Feature operations review=` |Feature implementation notes=` |Feature landing criteria=We need to ensure that this gets added to an automated test suite somehow. }}

Feature details

Priority Unprioritized
Rank 999
Theme / Goal `
Roadmap Thunderbird
Secondary roadmap `
Feature list Thunderbird
Project `
Engineering team `

{{#set:Feature priority=Unprioritized

|Feature rank=999 |Feature theme=` |Feature roadmap=Thunderbird |Feature secondary roadmap=` |Feature list=Thunderbird |Feature project=` |Feature engineering team=` }}

Team status notes

  status notes
Products ` `
Engineering ` `
Security ` `
Privacy ` `
Localization ` `
Accessibility ` `
Quality assurance ` `
User experience ` `
Product marketing ` `
Operations ` `

{{#set:Feature products status=`

|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=` |Feature security health=` |Feature security notes=` |Feature privacy status=` |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=` |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}