Modules
Split the project into 4 sub-modules:
- Main symfony_mailer contains the core features, and much of it could eventually become part of Drupal Core.
- mailer_transport for managing the transport layer. The aim is that it eventually becomes a separate project (similar to existing mailsystem) that can be used with either this project Core, or Drupal Symfony Mailer Lite. The code mailer module depends on this one. A placeholder module is added on upgrade to 1.6 to allow the upgrade to 2.x to work cleanly.
- mailer_policy as a UI for configurable emails. It should eventually become an optional layer over the Core mailer. This is automatically enabled on upgrade to 2.x.
- mailer_override for overriding other modules. This should eventually become obsolete. It is automatically enabled on upgrade to 2.x if it is in use.
Plugins
This part only affects developers who extend this module.
V2 makes non-BC changes to some namespaces, plug-ins and interfaces which will impact any other modules that build on this project. Some of these changes were needed to fix bugs, others were to make things clearer/simpler as an investment for the future – with the possibility of some code being taken into Drupal Core. It took quite a lot of my time, and will take a little of yours. Cross-version compatibility is unlikely. instead developers will likely need to create a new major version of their module compatible with the new major version of this project. This should not be especially difficult or time-consuming (I have done many of them by now).
- Plugins now use attributes rather than annotations
- EmailBuilder plugin renamed to Mailer, they act like a service (more detail in other CR)
- All parts of EmailBuilder relating to overriding split out to new MailerOverride plugin
- Transport plugin renamed to TransportUI to avoid confusion with the actual underlying transport classes
- Some other detailed changes that should become clear when you start developing😃