Skip to content
cketti edited this page Mar 23, 2011 · 24 revisions

While students are welcome to apply with their own well-formed project ideas, here are some for inspiration:

Table of Contents

My awesome example feature request

  • Description: detailed explanation of the idea.
  • link to a bugreport or feature request if one exists.
  • Requires: knowledge of Java and the Android SDK
  • Difficulty: easy/medium/hard
  • Mentor(s) interested in this project: include a name and email address here if applicable. You can propose an idea without necessarily being willing to mentor it.

Undo

  • Description: undo for operations like delete/archive/send(?).
  • Requires: knowledge of Java and the Android SDK
  • Difficulty: medium
  • Mentor(s) interested in this project: Jesse Vincent jesse@fsck.com

Overhaul database

  • Description: Overhaul database to enable the following features:
    1. Messages:
      • Store complete MIME structure
      • Not exactly new but very important: support partially downloaded messages (and message parts)
      • Support threading
      • Support easy displaying of message/rfc822 messages
      • Support easy displaying of messages contained in a Multipart/digest part
      • Support S/MIME
      • Support PGP/MIME
      • Keep track of new messages (don't show unread count in notifications)
    2. Folders:
      • Support folder hierarchy
      • Support local folders
    3. All data:
      • Expose tables (global settings, accounts, folders, messages) via a ContentProvider and only use that ContentProvider to access the database
      • Expose the ContentProvider to third-party applications, but with strict access control (permissions, e.g. read messages, write messages)
      • Support import/export of settings
  • Bonus points: Show "database upgrade" screen when upgrading the database (see issue 1601).
  • Issue tracker:
  • Requires: knowledge of Java and the Android SDK, database design
  • Difficulty: hard
  • Mentor(s) interested in this project:
    • cketti <cketti (at) gmail (dot) com> (might apply as student, though)

Implement missing IMAP features/extensions

  • Description: There are some IMAP features we don't fully support yet. Also there exist a lot of IMAP extensions that could make life easier, especially on a mobile device.
    • UIDVALIDITY handling (RFC 3501, §2.3.1.1, issue 2931) - Currently we completely ignore this. That is BAD!
    • improve IMAP parser (add some context-sensitivity) - Not all responses are equal. Don't treat them that way.
    • better handling of failing commands (issue 2916)
    • make use of UIDPLUS extension if available (RFC 4315, issue 861) - Will save round-trips to the server when copying/moving or uploading messages
    • use NOTIFY extension if available (RFC 5465)
    • support for using different namespaces at the same time (RFC 2342, issue 1992)
    • server-side search (needs UI adjustments?, RFC 3501, §6.4.4)
    • enable creation/deletion/renaming of mailboxes (folders) (needs UI support, issue 162)
    • enable (un)subscribing to folders (needs UI support, RFC 3501, §6.3.6)
    • use CATENATE extension when storing a forwarded message with attachments in the sent folder (RFC 4469)
  • Requires: knowledge of Java and the Android SDK
  • Difficulty: medium
  • Mentor(s) interested in this project:
    • cketti

Improve security & privacy

Proper error reporting

See "State and error reporting" here: Feature-sketch-pad

Setup wizard & auto-configuration

  • similar to Mozilla's auto-configuration

Microsoft Exchange ActiveSync Support

  • Description: K-9 is currently using WebDAV for Exchange support, which is very difficult to implement in a manner that supports all Exchange deployments. It is also obsolete as of version 2010. We would like to port the EAS support in the AOSP mail app to K-9.
  • Requires: Knowledge of Java and the Android SDK. Basic Exchange knowledge would also be beneficial.
  • Difficulty: Hard (scope currently unknown)
  • Mentor(s) interested in this project: Kris Wong <kris.p.wong at gmail dot com>

Clone this wiki locally