as I'm not so much into the current development of 3.1, I'll just barge in with my idea.
As a MOD author I often struggle with the features my MODs offer. One the hand, I would like to follow the kiss rule (keep it sweet and simple) and don't include too many options. On the other hand, I try to consider the user's feedback which results in more features almost inevitably and comes along with higher memory usage, additional database queries, more required space, etc.
This bloats the mod with a lot of features which might be useful for some people, but even more useless for others (how surprising, huh?) thus increasing the need for a more flexible mod integration in order to avoid the problems of having features you don't necessarily need. What I was thinking of at this point is to replace the current "sink or swim" mod system with feature packages. Especially with AutoMOD users could easily choose which features of a mod they like and which ones they don't want to have when installing the mod - just unselect these.
For instance, if you went to buy the ingredient in order to cook a tomato soup, you would have a basic idea in mind of what you will need (guess what?) - that's the slim core of our feature package defining what the mod is about in a really basic way. However, if you wanted to make your soup taste good, you would need some additional stuff like spice, an onion and cream (forecasting complains about the recipe here!).
If you hate onion/a feature, you can just leave it out as the core of our package will still work. However, while some features will work without any other code, others will refer to the core or another feature obviously leading to the need of dependencies, which tell you what is required to install a particular feature.
How would this idea look practically? Well, first of all there should be a built-in AutoMOD handling the features and providing a consistent intallation interface, which allows you to browse the feature package, install and uninstall single features even after the core has been installed - not a big deal as AutoMOD stores the mod anyway. As for MODX I thought of having a structure very similar to the current one with the difference that instead of having a lot of changes for the whole mod, the install.xml would consist of grouped changes referring to a particular feature.
Instead of looking like this
Code: Select all
<action-group>
<open>
<edit>
<find></find>
<action></action>
</edit>
</open>
<open>
<edit>
<find></find>
<action></action>
</edit>
</open>
</action-group>
Code: Select all
<core>
<open>
<edit>
<find></find>
<action></action>
</edit>
</open>
</core>
<feature-list>
<feature name="first_feature">
<open>
<edit>
<find></find>
<action></action>
</edit>
</open>
<open>
<edit>
<find></find>
<action></action>
</edit>
</open>
</feature>
<feature name="second_feature">
<dependency>core</dependency>
<open>
<edit>
<find></find>
<action></action>
</edit>
</open>
</feature>
</feature-list>