[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[platform-update-dev] Looking for Recommendations
|
Hi Everyone,
I have mailed this list before with
my convoluted feature structuring issues in the past, but we have come
to a crossroads with our product where we can make a breaking change and
I would like to choose the best solution moving forward and implement it,
cleaning things up once and for all. I was hoping with the huge amount
of update effort that went into Callisto I could get some feedback as to
the best way to approach my particular situation.
Here's the scenario. We have quite
a few "products" that share between them a significant number
of common functionality plugins. A customer could have one or many
of these products installed at once. I originally grouped all of
the common stuff into "core" features and then had all of the
individual product features depend on this core functionality. This
worked out well and avoided duplication. However, it quickly spiralled
out of control on the update site as more stuff was generalized into yet
more "core" features, and more products sharing those features
were created. Currently, when the user hits an update site we have
something like the following:
My Update Site
|
+--Core Platform Features (required
by ALL products)
| |
| +--Platform
Core Feature (branding)
| +--Install
Feature (custom install handlers)
|
+--Core Development Features
| |
| +--Core
Development Feature (required by ALL products)
|
+--Product 'X' Features
| |
| +--Product
'X' Core Feature (required by all Product 'X's)
| +--Product
'X1' Feature (a product based on 'X')
| +--Product
'X2' Feature (another product based on 'X')
|
+--Product 'Y' Features
|
+--Product
'Y' Core Feature (required by all Product 'Y's)
+--Product
'Y1' Feature (a product based on 'Y')
+--Product
'Y2' Feature (another product based on 'Y')
So, if a user simply wants to install
support for "Product X1" for instance, they have to install:
- Platform Core Feature
- Install Feature
- Core Development Feature
- Product X Core Feature
- Product X1 Feature
This is similar to the whackload of
dependencies you run into if you want to install and use a product that
depends on GEF, EMF, JDT, etc. This is quite common (TPTP, WTP) and
in my opinion is fine for separate, interdependent projects like
this, but it doesn't fit my idea of a simple-to-obtain-and-use commercial
product. Ideally, what I want to have is something like the following:
My Update Site
|
+--My Platform Core Feature (invisibly
nesting the install handlers and branding required by all)
|
+--Product 'X' Feature (for developing
apps for Product 'X')
|
+--Product 'Y' Feature (for developing
apps for Product 'Y')
I only break out the core platform stuff
because our install handler features require an exclusive installation,
so it seems logical to group it with the branding of the platform as well.
Then, all the user has to do is install one "leaf" feature
which provides support for the product they want to develop for. What
confuses me is what exactly is the best way to deploy this?? As I
see it I have two options:
- Keep the features and feature
dependencies I have, but take all of the common stuff needed by all "leaf"
features and deploy them as nested features. Essentially invert the
tree of features I have now.
- Get rid of all of the common
core features I currently have, and re-include all of their constituent
plugins in each leaf feature
I don't think #1 will work because then
uninstalling Product 'X', would not be allowed because it would want to
uninstall its nested features - which Product 'Y' also requires (and nests).
In fact, I'm not even sure if two installed features can nest the
same dependent feature??
#2 seems to me like the way to go but
just seems like an awful waste of space and duplication in terms of "deployment".
Especially given the number of common plugins we have. I assume
in this case, if I uninstall Product 'X' the platform would figure out
in this case that Product 'Y' is still using Common Plugin 'Z' and not
remove it, so the dependencies should all work.
Anyway, I am just trying to make this
simple for my users. Can anyone give me any pointers based on:
- What issues you faced and conquered
with Callisto
- What you know may be coming in the future
based on outstanding update issues found with Callisto
Any feedback or recommendations
would be very much appreciated.
Thanks,
Mark.
----------------------------------------------------------
Mark Melvin, P. Eng
Member of Technical Staff, Software Tools
AMI Semiconductor Canada Company
611 Kumpf Dr., Unit 200
Waterloo, Ontario, Canada N2V 1K8
Tel: +1.519.884.9696 ext 2245
Fax: +1.519.884.0228
Email address: mark_melvin@xxxxxxxx
Internet: http://www.amis.com
"Silicon Solutions for the Real World"
----------------------------------------------------------
AMI Semiconductor - "Silicon Solutions for the Real World"
NOTICE:
This electronic message contains information that may be confidential or privileged. The information is intended for the use of the individual or entity named above. If you are not the intended recipient, please be aware that any disclosure, copying, distribution or use of the contents of this information is prohibited. If you received this electronic message in error, please notify the sender and delete the copy you received.