This RFC was replaced by [RFC] Migrations
I already posted an RFC for some design aspects of an UMIL-like system
. I'm going to take this a step further and suggest including such a system in phpBB 3.1. This proposal topic is based on one I posted in January 2010 in one of the private forums. naderman and A_Jelly_Doughnut have stated their support.What is UMILUMIL
is a library/framework for MOD installation and updates. It wraps around phpBB's API to provide a unified interface for installation and update scripts. This includes db_tools, set_config, auth, modules and many other parts. It works a lot like phpBB 3.0's database updater. There is UMIL auto which takes a large array of version numbers and associated actions + arguments. Additionally it's possible to include the files and make the according calls manually.
One of the reasons why UMIL was created was to remove the need of SQL in MOD install files. And (as described later) to allow automation and different user interfaces for running the actions.
The abstraction provided by UMIL makes MOD installation and updates very easy. It makes it easier for the mod writer and (in theory) the person installing the MOD.Status Quo
Currently UMIL is maintained by the MOD team which allows them to release new versions any time. The problem however is distribution. Because they don't want end users to have to maintain their own UMIL installs the MOD authors must include the current UMIL with the MOD. This is bad because a) bugs aren't fixed, b) MOD sizes rise, c) overwriting existing UMIL when extracting new MODs.
The amount of MODs using UMIL is still relatively low. Many MODs still use custom install scripts.Proposal
The phpBB 3.x core should include UMIL or something comparable. This would resolve packaging issues and provide a standard API for installation scripts to all MOD authors. Ideally phpBB would re-use this system for it's own installation. It could be used to easily create in-memory sqlite databases for unit tests.
There would be some changes required to make this fully possible though. The user interface would need some better abstraction to allow automated calls of the install file. As a possible alternative to plain PHP install files, the instructions could be specified in alternative format, such as XML. Another potential addition would be the possibility to revert certain actions on uninstallation (eg using the Command pattern
The system should be pluggable, allowing MOD authors to create their own installation "actions". If certain custom actions are highly demanded and were implemented for a MOD, they be contributed back upstream and included in the core.
Some ideas for implementation details can be found in: [RFC] UMIL design proposal: Data providers