Here is the roadmap for my Google Summer of Code 2016 project.
(23/05/2016 - 08/06/2016)
Creating a new D8 version of Mailhandler. Info, module files, configuration, schema, install hooks. Create a minimal proof of concept. This will include creating new plugins for Inmail - a body-email handler that will be able to create a new node by filling the body field of a node from email body. This period could require work on Inmail issues in order to get it into the state where it can be used well to integrate with Mailhandler.
(08/06/2016 - 15/06/2016)
Support for authentication via “from” email address. This will be done by providing a new Analyzer plugin for Inmail. We will provide basic authentication by only checking “from” header of an email. Beside this option, there will be more secure authentication option where an email has digitally signed and verified. However, that option will be optional. We will provide a new field on User entity (public key). By processing incoming emails we will extract the email address from the “from” header field and try to match it with an existing Drupal user. In case there is a user with this email and “require crypto sign” option was selected we will try to verify the the signature with the corresponding public key. This will be done by relying on GnuPGP PHP extension.
(08/06/2016 - 15/06/2016)
Support node creation from an incoming email. A new Inmail analyzer plugin for nodes should analyze the content of an incoming email message and create a node in case identified user (sender) has enough permissions to do it. A node created via email will be logged. Extend proof-of-concept plugin built in first weeks. Introduce an Inmail MailFooter plugin that should process the body of an email. Footer plugin should support limited number of footer variations. The basic cases that are going to be supported are including a regex match for "-- \n" (RFC3676) cutoff line and "On ... wrote" part which is de-facto standard within Gmail. MailFooter plugin will separate the email into real mail body and footer parts. From there, we can remove unnecessary signature/footer and the rest with a body field of a node. Subject of an email will be used as a node title. Subject must be provided in: “[node][node_type] Node title” format in order to map the node type we creating a node for.
(15/06/2016 - 22/06/2016)
Implement validation for parsed content after node analyzer. Use node entity validation, validate node type, fix bugs, refactor the code and prepare the project for mid term submission.
[#W6] Mid term submission
(20/06/2016 - 27/06/2016)
Final preparation of the project for mid-term submission. At this point, Mailhandler port should provide a D8 module that integrates with Inmail, can authenticate a user via “from” email address. A recognized authenticated user will be able to create valid nodes via email.
(06/07/2016 - 13/07/2016)
In this week I will work on adding/extending SimpleTest/Kernel/Unit test coverage for MailFooter, node create and authentication plugins.
(13/07/2016 - 20/07/2016)
Add support to post comments via email. We will process incoming emails and look for node references in subject of an email ([comment][#node_id]). Based on the “from” email authentication we will post a comment, in case a sender (user) has required permissions. Log comment attempts made via email. Implement a new Inmail plugin to support creation of basic Comment entities.
(20/07/2016 - 27/07/2016)
Create a demo module to present all the implemented features. We will create a mailhandler_demo module that integrates mailhandler, inmail and displays the preconfigured system with demo content.
[#W10] UI/UX/DX improvements
(27/07/2016 - 03/08/2016)
UI/UX improvements (User-interface changes, validation, user experience/Drupal experience and usability improvements). I will work on improving mailhandler user-interface and analyzer settings.
[#W10] Bug fixes
(03/08/2016 - 10/08/2016)
Refactoring, bug and test fixes (Optimization of the code, fixing bugs discovered using demo module, test fixes)
(10/08/2016 - 17/08/2016)
Writing documentation. ReadMe, Drupal.org module page updates, API documentation, improving code comments.
[#W12][#W13] Wrap up
(17/08/2016 - 23/08/2016)
Wrap up and Final submission,