A group of people were talking at No Fluff Just Stuff, and Richard Monson-Haefel brought up using AOP to manage multiple products from one code base.
It can actually make a lot of sense. Imagine having a software product that has:
- Express: A bunch of enterprise features are disabled
- Standard: fully featured, but none of the hard core enterprise features
- Enterprise: Enhanced enterprise features
Then there could be trail editions of the various products.
30 day aspect
To handle a trial period, an aspect could be woven into the code to handle all of the crippling.
For example, WebLogic used to let a few IP addresses to hit the server only. An aspect could track the incoming IPs and block after the allowed number come in (of course, some people just put WLS behind a proxy to trick it! Lots of 127.0.0.1 comes in ;).
This could be reused among all editions of the product.
Throttling aspect
Let’s say the Express edition only allows X concurrent uses of feature Y. A simple set of aspects could throttle the features.
Additional behaviour
Additional enhanced behaviour could get weaved into the core.
IBM Cloudscape vs. Apache Derby
There are rumours that IBM uses this technique already. With this, they can add in the enhanced transaction support and other features that make Cloudscape from Derby.
May 2nd, 2005 at 12:01 pm
The idea is ok but has drawbacks… If you centralize, in aspetcs, your “crippling” features, they are a lot easier to disable. Unless you use co?pile ti?e weaving, but then you cannot easily uncripple the product with an activation key.
I also think that a plugin architecture is a lot better way to create a product that can packaged in several editions… Because a plugin architecture uses extention points, it is a lot cleaner (for the product developper) to work with than with aspects that can do whatever they want wherever they want.
AOP can be use to ?ake an existing product available (by weaving in extension points) in ?any editions a bit easier.
We ?ust not forget that AOP has been invented to address cross-cuttong concerns. I don’t think bundling a product with features X and Y re?oved is a cross-cutting concern.
(note: replace ? with the letter after ‘l’ – the content filter don’t like that letter)
May 2nd, 2005 at 12:21 pm
Emmanuel:
There are definitely issues with cracking, and plugins make total sense. AOP can give you the power in the few cases where plugins are not enough, as it gives you infinite extension points.
I think the ‘m’ bug is fixed now. MT-Blacklist added ‘m…’ which meant m followed by 3 characters!
Cheers,
Dion