Strategic Initiative – Mautic https://mautic.org World's Largest Open Source Marketing Automation Project Mon, 23 Jun 2025 11:43:31 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.1 https://mautic.org/wp-content/uploads/2024/10/iTunesArtwork2x-150x150.png Strategic Initiative – Mautic https://mautic.org 32 32 Mautic Campaign Library Strategic Initiative receives grant from NLnet Foundation https://mautic.org/blog/mautic-campaign-library-strategic-initiative-receives-grant-nlnet-foundation Sun, 13 Oct 2024 21:23:31 +0000 https://www.mautic.org/mautic-campaign-library-strategic-initiative-receives-grant-nlnet-foundation/ We are really delighted to announce that phase one of our Campaign Library project has been selected to receive a grant from the NLnet Foundation as part of the April 2024 NGI0 Commons Fund call. 

About the Mautic Campaign Library Project

Termed the ‘Mautic Campaigns Portability Project’ for the purposes of this funding grant, this first phase of the wider project implements the groundwork needed to bring to life a much-requested feature – a library of campaigns which allow users to get started quickly with Mautic by selecting from a searchable collection of premade campaign workflows and associated resources. Requested back in 2018, it’s one of the most voted for ideas in the Ideas Forum, and something we’ve been wanting to implement since 2021 when the strategic initiatives were announced.

This phase of the project addresses the need by establishing export and import functionality for campaigns and associated resources. This will not only save time but also promote best practice adoption among marketers.  We aim to enable seamless portability of campaigns between Mautic instances, enhancing the platform’s flexibility and usability. This feature will lay the groundwork for a more connected and efficient marketing environment, empowering users to maximize their strategic outreach efforts.

Next Steps and Participation

As we move forward, we will be working closely with NLnet to finalize the grant amount and our project plan. We encourage our supporters and the Mautic community to stay tuned via the Community Portal for more updates as we progress. We are eager to share our journey and milestones with you.

Moving Forward

We are in the process of refining our project plan, which will involve setting distinct tasks with specific outcomes. Each task will have a donation amount attached from the grant funding, unlocked by publishing the associated results. This structure ensures that our efforts are aligned with delivering measurable and impactful outcomes. 

We will be advertising opportunities related to this in the near future, however as the money is EU funded we are obliged in the first instance to recruit people who have EU citizenship. Watch out on our jobs channels for the announcements.

Once we finalize our consolidated plan and establish our team, we will proceed with the ‘Memorandum of Understanding’ to formally kick off the project. 

Thank you to everyone who has supported us thus far. We look forward to sharing more updates and celebrating milestones with you. Stay tuned for more exciting developments!

For further details, feel free to visit our dedicated project page on the NLnet website: Mautic Portability Project and join us in the public channel on Slack, #i-campaign-library. We will be tracking the project progress via the Roadmap project on the Community Portal.

]]>
Managing Mautic with Composer https://mautic.org/blog/managing-mautic-with-composer https://mautic.org/blog/managing-mautic-with-composer#comments Mon, 30 Aug 2021 08:53:08 +0000 https://www.mautic.org/managing-mautic-with-composer/ Background to the Composer Initiative

Many organizations are moving toward a GitOps-based approach to managing software, and the way that Mautic was configured from the Composer perspective was previously suboptimal for organizations who need to manage Mautic installation and deployment with Composer.

This also made it very difficult to apply patches – whether from Mautic or from the organization themselves – in a way that is commonly accepted as best practice.

Two other Strategic Initiatives – Mautic Next Generation and the Mautic Marketplace – depend on significant changes to our architecture for being able to decouple plugins and themes and also have them managed independently.

We announced the Composer Initiative as a Strategic Initiative in November 2020 and work started to determine how to move Mautic toward a more future-friendly configuration.

What we have done

This project has been led by Nick Veenhof from Dropsolid and we are extremely grateful for his knowledge and time in making this initiative a reality. Also, big thanks to Rahul Shinde, John Linhart, and Dennis Ameling for their support in testing, reviewing, and suggesting improvements; and to the Drupal project from which we have taken much inspiration!

Three things were kept in mind when deciding how to execute this project:

  • Making the developer experience as smooth as possible
  • Enabling a phased approach to decoupling from core
  • Following established best practices

There are several key things to be aware of now that we have mostly completed this project.

  1. While we have ‘technically’ decoupled the app directory, all plugins, and themes into separate repositories, you will still find them located in the original folders in github.com/mautic/mautic at this stage:
    1. This approach allows for a smooth development process as all the files and folders that you see in Mautic are in the same repository.
    2. In the future, we may consider removing some plugins that are not widely used from Core and enabling users to selectively install them via the marketplace.
    3. Those plugins will, at that point, become maintained by a separate Tiger Team.
    4. The mirror repositories are read-only, pull requests should be made against https://github.com/mautic/mautic, not the mirrors – you will receive a reply from the bot if you attempt to make a PR against a mirror.
  2. Whenever a pull request is made which touches any of these files, the changes are automatically pushed down to the read-only mirror repositories thanks to the amazing tool SubTreeSplit by Tobias Nyholm.
  3. We now have a composer.json file in /app (as well as in all plugin and theme directories) which is used to build Mautic when installing with Composer.
  4. We now have the Recommended Project repository – https://github.com/mautic/recommended-project and the scaffold – https://github.com/mautic/core-composer-scaffold which allows you to manage dependencies and move files outside the web root directory if you wish to do so.

What happens when you build Mautic

As before, you can still pull down Mautic and use the composer install command to install dependencies. This will now be much faster thanks to the upgrade to Composer 2.

You will notice that we now have a requirement on mautic/core-lib – this is the /app folder. We also now pull in all of the plugins and themes individually however in this first phase, we are telling Composer to use the files which it finds in mautic/mautic rather than looking elsewhere for the files – this is a precursor to being able to move some of this outside of the core.

We have also added some configuration settings and we set the correct paths for the different types of resources we are pulling in – the app directory, plugins, and themes.

Within the app folder, we have an additional composer.json file (in fact, all plugins and themes also now have a composer.json file) which has some settings relating to the scaffolding.

How do you use the recommended project?

This recommended project template provides a starter kit for managing your Mautic dependencies with Composer.

Usage

Note: The instructions below refer to the global composer installation. You might need to replace composer with php composer.phar (or similar) for your setup.

After that you can create the project:

composer create-project mautic/recommended-project:4.x-dev some-dir --no-interaction

With composer require … you can download new dependencies to your installation.

cd some-dir
composer require mautic/mautic-saelos-bundle:~2.0

The composer create-project command passes ownership of all files to the project that is created. You should create a new git repository, and commit all files not excluded by the .gitignore file.

What does the template do?

When installing the given composer.json some tasks are taken care of:

  • Mautic will be installed in the public-directory.
  • Autoloader is implemented to use the generated composer autoloader in vendor/autoload.php, instead of the one provided by Mautic (public/vendor/autoload.php).
  • Plugins (packages of type mautic-plugin) will be placed in public/plugins/
  • Themes (packages of type mautic-theme) will be placed in public/themes/
  • Creates public/media directory.
  • Creates environment variables based on your .env file. See .env.example.

Updating Mautic Core

This project will attempt to keep all of your Mautic Core files up-to-date; the project mautic/core-composer-scaffold is used to ensure that your scaffold files are updated every time mautic/core is updated. If you customize any of the “scaffolding” files (commonly .htaccess), you may need to merge conflicts if any of your modified files are updated in a new release of Mautic core.

Follow the steps below to update your core files.

  1. Run composer update mautic/core –with-dependencies to update Mautic Core and its dependencies.
  2. Run git diff to determine if any of the scaffolding files have changed. Review the files for any changes and restore any customizations to .htaccess or others.
  3. Commit everything all together in a single commit, so the public will remain in sync with the core when checking out branches or running git bisect.
  4. In the event that there are non-trivial conflicts in step 2, you may wish to perform these steps on a branch, and use git merge to combine the updated core files with your customized files. This facilitates the use of a three-way merge tool such as kdiff3. This setup is not necessary if your changes are simple; keeping all of your modifications at the beginning or end of the file is a good strategy to keep merges easy.

FAQs

Should I commit the contributed plugins I download?

Composer recommends no. They provide arguments against but also workarounds if a project decides to do it anyway.

Should I commit the scaffolding files?

The Mautic Composer Scaffold plugin can download the scaffold files (like index.php, .htaccess, …) to the public/ directory of your project. If you have not customized those files you could choose to not check them into your version control system (e.g. git). If that is the case for your project it might be convenient to automatically run the mautic-scaffold plugin after every install or update of your project. You can achieve that by registering @composer mautic:scaffold as post-install and post-update command in your composer.json:

"scripts": {
"post-install-cmd": [
"@composer mautic:scaffold",
"..."
],
"post-update-cmd": [
"@composer mautic:scaffold",
"..."
]
},

How can I apply patches to downloaded plugins?

If you need to apply patches (depending on the project being modified, a pull request is often a better solution), you can do so with the composer-patches plugin.

To add a patch to Mautic plugin foobar insert the patches section in the extra section of composer.json:

"extra": {
"patches": {
"mautic/foobar": {
"Patch description": "URL or local path to patch"
}
}
}

How do I specify a PHP version?

This project supports PHP 7.4 as the minimum version, however, it’s possible that a composer update will upgrade some package that will then require PHP 7+ or 8+.

To prevent this you can add this code to specify the PHP version you want to use in the config section of composer.json:

"config": {
"sort-packages": true,
"platform": {
"php": "7.4"
}
},
Want to find out more? Contribute to improving our Composer implementation? Please join #i-composer-support on Slack.
]]>
https://mautic.org/blog/managing-mautic-with-composer/feed/ 1