[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-dev] Feature includes

Hi everybody,

The items under investigation for 3.1 on the Platform/Update website
included re-thinking feature includes. I wondered what the results of
the investigation have been.

The website says:

Improve the features story by simplifying feature relationships. For
example, investigate if feature include is really needed, and if
downloading, and configuration can be done based on just feature
<require>. It is easy to install all the required features if they are
not already installed, but present on the update site, but configuration
operation (enable/disable/uninstall) may need to be rethought.

In my view, there are some good reasons not to use feature includes, and
even to consider to leave them out entirely from future versions.

1) Feature includes make uninstalling counterintuitive for users. For
example, take webtools, where the JST (J2EE tools) feature includes the
WST (Web standard tools) feature. Suppose a user has installed WST,
perhaps because he wants an html editor, and then decides to try out
JST. He installes JST, then looks at it and finds he does not really
need it. So he uninstalls JST. But since JST includes WST, the latter is
gone too now. What he would have expected is the situation he started
from, i.e. WST installed and JST not. Put technically, the install and
uninstall operations are not symmetric, but I would them expect to be
so, if I was a user.

2) Also, the story behind feature includes contradicts the definition of
a feature: a separately deployable unit. Whether a feature A is
independently installable and uninstallable depends actually on whether
there happens to be another feature which claims to include A. This
means that it is precisely not an information about a feature whether it
can stand on its own, but it is a context-sensitive fact which may hold
or not in dependence of its surroundings.

For example, take WebTools again. WebTools has among its dependencies
the JEM feature, which is provided by the VE project. Suppose someone
has installed WebTools with all dependencies (which includes the
separately installable JEM feature) and it works. He now installs the VE
to evaluate it. Since the VE feature includes the JEM feature, from that
moment the installed JEM feature is no longer just an installed feature,
but an included feature. If the user changes his mind and doesn't want
to keep VE in the installation, he cannot uninstall it any more (the
Update Manager will deny it because it would spoil the configuration).
If he could, he would be in situation 1), because with VE he would
uninstall JEM, spoiling the WebTools installation.

It is no accident that WebTools provides some good examples, since that
project has such a long list of dependencies. With a growing web of
dependencies between the various frameworks, we will get a lot more of
these problems. Seeing that there is no real benefit from feature
includes (i.e. nothing can be done with them that could not be done with
simple dependencies), wouldn't it be better to go without them?

Thanks && ciao,