Proposal: Post By Email plugin

Update: There is now a more recent version of this proposal.

I’m applying to work on WordPress as part of GNOME’s Outreach Program for Women (similar to the Google Summer of Code).  This is the current draft of my project proposal for a summer contribution to the WordPress project, and will continue to evolve as I incorporate the latest feedback and suggestions from the community.

You can also read a bit more about my background here.

Post By Email Plugin

There’s already a ticket in Trac with a patch to deprecate the core Post By Email functionality. This project would be to build a standalone plugin that would serve as a drop-in replacement, and ultimately improve the user experience. An overview of the way the core functionality currently works is outlined in the Codex.

This would involve the following tasks:

  1. Convert wp-mail.php over to the Plugin API.
    • Plugin install: look for old settings and copy them over into the plugin’s options (get them out of the core database settings).
    • Create plugin settings page that shows an activity/error log.
  2. Update refresh methods
    • Automatic refresh hooked to the ‘shutdown’ action, with configurable refresh time.  NOTE: this still requires a hit to the blog to run. (Is there a good alternative that isn’t wp-cron? Looks like that plugin is no longer supported.)
    • Remove the old methods from the Codex (loading up wp-mail automatically or in an iframe – this will probably still work, for people who already have it in their themes, but I don’t think we should continue recommending it as a solution).
    • Replace these with a manual “refresh” button on the plugin settings, and maybe a template tag if we still want to support the iframe.
  3. Extend the current deprecation patch
    • Include instructions (or maybe auto-install?) for the new plugin (not sure what the protocol is for this, I presume we want to handle it the same way as Links).
    • wp-mail.php should just call the action hook.
  4. Submit for community feedback and testing! Squish bugs.
  5. Extend functionality (Order and priority TBD by discussion with mentors)
    • support formatting from HTML emails
    • support attachments (will be added to the media library for that post and embedded)
    • support IMAP access (right now only POP) and SSL
    • add support for tags/categories/custom taxonomies (shortcodes?)
    • streamline publishing, maybe with an admin panel to vet unpublished posts (not sure how this works in the current version, should review)
    • whitelist sender emails (this is what LiveJournal does) — looks like the current behavior does vet the sending address against authorized users, so maybe there is nothing to do here, but we should review and see if it needs improvement
    • PIN based authentication? Might save us some grief about security-through-obscurity email addresses.
  6. Finally, edit/update the Codex page to reflect the new state of the art.

Here’s a rough timeline:

  • June 17 – July 17: Convert existing code to plugin, deprecate core
  • July 18 – July 25: Feedback/testing/bug fixes
  • July 26 – Sept 15: Add new features
  • Sept 16 – Sept 23: Final round of review & bug fixes

We may not have enough time to implement all the new functionality on this list (which may well have gotten longer by the time we get to it), so we’ll need to prioritize the new features accordingly.

Please weigh in with any comments or criticisms!  Thanks!

One comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s