Discussed the problem statement from Confluence
Confirmed that you will have a regular UI based installation and the option for a Composer based install if you want to - the GUI based installation will run the Composer tasks ‘under the hood’.
Combining the two is the biggest problem we are facing as we do not separate the plugins from core, and that the vendor folder is in the same folder as the application
If we want a zip file we need to have the vendor file in the same folder but Composer should be able to move it if that is desired.
How do we go from Zip based into Composer? Need to have a guide to help people as they will need to be able to do this
Plugins needs to be addressed first
Mautic Core in a core folder
Everything else is generated by Composer
Requires the whole structure of Mautic to be changed - big changes
Discussed how the Marketplace will work - @Jan Linhart outlined the principles of there being a UI that pulls from Packagist. It would call the Composer commands to install those packages.
Challenges
Composer would wipe out everything so we need to change the structure to prevent that happening
Local.php - move it to the database as some file systems are not writeable (hacky things going on to work around it)
Plugin and theme discovery is difficult - it should be possible to look for the folders rather than pre-specify the locations
We are essentially moving from being a Symfony project to being a library
Need to brainstorm the folder structure and come to an agreement what it would be
Would have to be 4.0 but we can work on it now and get those decisions made
Need to think about shared hosting and make it configurable (default in the same folder but an option to move it)
How will we migrate people to the new structure
Documentation is going to be really important
@Nick Veenhof (Deactivated) suggested it will be tricky for folk with custom plugins as we do not have a differentiator between core/custom right now
We should start to decouple the plugins sooner rather than later - that could happen in a minor release
Composer plugin which will move the files to the right folder is used by most people who are using Composer at the moment
Chunk down into projects/tasks and what needs to be done by when
Suggestion for structure by default (but we should have it discover the locations)
@Jan Linhart suggested there should still be an option to allow folk to configure their settings to move some/all folders
Store the db config to a file (or docroot/config) by the application or the user - as soon as the application is installed the file becomes read only
Composer merge plugin - to combine two composer files - adds all the dependencies into one file from multiple composer files but it does not support Composer 2 to date
Do we want to adopt Composer 2?
Marketplace will not work in the GUI with Composer 1 as it is too slow
Do we support both and have a switch for things that do not support it?
We want to support 2 but we are blocked by Symfony 4 support due to a dependency that is required
Makes sense to base this work on Symfony 4
Nick’s project will need to be updated to support Composer 2 but he thinks that the changes should be fairly minimal
Nick needs some support with the plugin discovery side of thing from someone with Mautic experience - need to make a POC (maybe there is something in Symfony that could do this)
Should create a POC
Packagist - we need to have some way we can test without using Packagist
Could decouple some of the plugins and use those to pull in with packagist
Would help to have some docs on how to decouple the plugins to help others do this
Can we use Acquia’s team to help with this?
We will work on Confluence and manage decisions/POC’s there.