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.
Let’s say the Express edition only allows X concurrent uses of feature Y. A simple set of aspects could throttle the features.
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.