I’m one of long-term maintainers of ansible.mysql (recently renamed from community.mysql — same codebase, same collection). This post is to open a discussion about whether it makes sense to split the collection into two: one focused on MySQL, one focused on MariaDB. I don’t have a strong position yet — would be great to get some input from other maintainers and users before forming one.
MySQL and MariaDB are diverging
MariaDB was forked from MySQL in 2009. Since then, they have evolved into distinct database systems with different philosophies, feature sets, SQL syntax, and even tooling.
Some examples of how this divergence surfaces in the collection today:
- Replication SQL: commands like
SHOW MASTER STATUS,SHOW SLAVE STATUS, andCHANGE MASTER TOwere renamed — but differently in each system and at different version thresholds. - Roles: MariaDB stores role mappings in
mysql.roles_mapping; MySQL usesmysql.role_edges. TheWITH ADMIN OPTIONclause exists only in MariaDB. - Authentication plugins:
mysql_native_passwordwas removed in MySQL 9.7+; MariaDB still supports it. The two systems also use different default authentication methods and hash algorithms. - Features unique to one side: temporal tables exist in MariaDB but not MySQL; MySQL has Group Replication, which MariaDB does not.
Maintenance implications
The collection already handles these differences through separate implementation modules (implementations/mysql/ and implementations/mariadb/), version-specific SQL command resolution, and scattered conditional branches throughout the code. Every new feature or bugfix that touches an area where the two systems differ requires implementing and testing it twice — once per system. Additionally, features that exist in one system but not the other require guard code and explicit documentation of the limitation. As the two systems continue to diverge, this overhead is likely to grow.
The case for a split
Maintaining separate collections (ansible.mysql and a new community.mariadb) could allow each to evolve independently — adding system-specific features without compromise, writing cleaner code without cross-system conditionals, and targeting integration tests precisely at the relevant database versions. A MariaDB-focused collection could also align more naturally with MariaDB-specific tooling and SQL extensions without carrying MySQL compatibility concerns.
The case against a split
A significant portion of the codebase is still relevant to both systems — connection handling, general query utilities, privilege management basics, and more. Splitting would mean maintaining two copies of this shared logic. Bugfixes to one collection would need to be manually identified and backported to the other, and vice versa. This coordination overhead could outweigh the benefits, especially given the current maintainer capacity. It would also split the contributor community, making it harder to attract and retain contributors to either project.
Questions for the community
- What do you all think?
- Is the divergence already causing you pain as a user or contributor?
- Would you be willing to contribute to a dedicated MariaDB collection if one existed?
- Are there approaches to the shared-code problem that we haven’t considered?
Any experience, opinion, or data point is welcome.