Skip to content
Day 3 Workshop

Using Composer in Moodle Development: Challenges, Workarounds, and Future Enhancements

The presentation begins with an overview of Composer, explaining its purpose and functionality as a dependency management tool. It highlights the advantages of using Composer in software development and emphasizes its significance in managing dependencies effectively.

Next, the discussion delves into the challenges associated with using Composer in Moodle development. It addresses the unique complexities and conflicts that arise due to Moodle’s architecture and module system, making it difficult to integrate Composer seamlessly. The presentation explores these challenges, ranging from conflicts between Moodle’s dependencies and those managed by Composer to the difficulties of maintaining version control.

To overcome these challenges, the presentation introduces the concept of a Satis server as a workaround. It explains how a Satis server can act as a private package repository, allowing developers to manage Moodle dependencies independently and deploy consistent configurations across multiple instances.

As a bonus point, it is shown how to include core patches (from the Moodle tracker) in a Moodle project with Composer.

Lastly, the presentation presents a wishlist for the Moodle community to enhance the experience of working with Composer. It suggests implementing semantic versioning in plugins to improve compatibility and stability, as well as encouraging the integration of Moodle with Packagist, a comprehensive package repository, to simplify dependency management.

By the end of the presentation, attendees will gain a deep understanding of the challenges of using Composer in Moodle development and learn effective workarounds using a Satis server. They will also be introduced to the concept of including core patches in deployment and may be inspired by the wishlist for future enhancements. This knowledge equips attendees with the tools and insights to navigate the complexities of Composer integration in Moodle, improving their development workflows and hopefully fostering collaboration within the Moodle community.