Here's a short description of the UruDistro project. More details will follow shortly.
UruDistro is a set of scripts for the easy packaging and installation of changes to Uru files. This achieves fine granularity because changes are made at the object level inside Uru files. It is then possible to distribute changes to existing files, such as Cyan original Ages, without distributing whole files.
Hackers use tools such as PlasmaShop, PageEditor, UruExplorer for discovering the inner workings of the Uru files, testing and making changes to objects inside those files. Those changes often involve dozens of manual operations. It becomes difficult for hackers to distribute such changes to the user community, and it is difficult and risky for users to try and apply those changes manually. Take for example my own changes to the Relto, City and RestorationGuild Ages, as described here
. As you can see, instructions for even such simple changes can be quite convoluted.
When changes consist only of adding objects, such objects are grouped in prp files that can be distributed and added into Uru by Drizzle and the off-line KI. However it is not always possible to do so. Such is the case when changes are made to existing files. Distributing whole files as a replacement for existing files is not always an option, considering such issues as size of distribution, copyright infringement, or conflict with other changes.
Take for example the addition of a new feature that requires adding a variable to an existing SDL file. The traditional way of doing this is to distribute the whole SDL file. Installing this will wipe out any previous change the user had made to his existing SDL file. In contrast, UruDistro will simply add the required variable to the user's SDL file. Changes applied this way are reversible. Every change performed by the install script has a corresponding reverse change performed by an uninstall script.
For the user, installation of a distribution is simple. A complex distribution (for example, making the Gahreesen wall work again) can be applied by the most clueless user in a few clicks, and then can be uninstalled without affecting other changes. The install script reads changes described in an xml file and applies them using libPlasma command-line tools developped by Zrax. The user needs to have installed UruDistro and libPlasma, which is quite easy.
For the author, packaging a distribution is simple. It consists merely of putting together some object files (.prc files), any other needed files (prp, pak, ogg, etc.), editing an xml file describing the changes, and zipping all this together.
UruDistro is almost ready for release. It is working well already. What started as a few batch files has evolved into hundreds of lines of scripts, mainly because of the required ease of use and paranoid error checking. I am now looking for good real-life test cases, apart from my own referenced above.
More details later.