Episode 2 will be quite different from Episode 1. After all, the idea behind this project is exploration, not repetition. So, for Episode 2 I decided to jump from app development to making changes inside the android core. I've got quite some experience in the past few years tweaking android for embedded systems, and I think it will be interesting to approach those challenges from the aspect-oriented perspective.
So far, these should be the major topics (not necessarily in this order)
- Cross cutting concerns in the android platform code.
I did an interesting investigation to find out cross-cutting concerns in a sort of low-tech, tool-assisted ways, as one can't really pour through million of lines.
- Why google should be using aspects in the android platform code
(short - subparagraph; also reference other works in BSD and an alternative approach from the XDA community)
- Why we should use aspects to customize the android platform
(short - subparagraph)
- AspectJ inside the platform: how
Integrating a new compiler within the android build system (+ the ability to recompile at module level using the new compiler) isn't really straightforward. After a few dead ends, I ended up creating a compiler wrapper for aspectj; this approach would probably work for other languages that compile to the JVM too.
- A manageable but non-trivial change
Unless I change my mind :-), I'd like to add a realistic (and useful) feature that requires coordinated changes to the USB service, the Power Manager service, the Settings service and (potentially - won't do that part) the WiFi service.
- As in episode 1, reflections / insights
we'll see what comes up here :-)
It's going to take a while to put all this together - I haven't finished the code yet. I may even decide to try publishing a portion of this material elsewhere first, or present some to a conference. I'll keep you guys posted.
Join the discussion group to talk about this stuff and more!
So far, these should be the major topics (not necessarily in this order)
- Cross cutting concerns in the android platform code.
I did an interesting investigation to find out cross-cutting concerns in a sort of low-tech, tool-assisted ways, as one can't really pour through million of lines.
- Why google should be using aspects in the android platform code
(short - subparagraph; also reference other works in BSD and an alternative approach from the XDA community)
- Why we should use aspects to customize the android platform
(short - subparagraph)
- AspectJ inside the platform: how
Integrating a new compiler within the android build system (+ the ability to recompile at module level using the new compiler) isn't really straightforward. After a few dead ends, I ended up creating a compiler wrapper for aspectj; this approach would probably work for other languages that compile to the JVM too.
- A manageable but non-trivial change
Unless I change my mind :-), I'd like to add a realistic (and useful) feature that requires coordinated changes to the USB service, the Power Manager service, the Settings service and (potentially - won't do that part) the WiFi service.
- As in episode 1, reflections / insights
we'll see what comes up here :-)
It's going to take a while to put all this together - I haven't finished the code yet. I may even decide to try publishing a portion of this material elsewhere first, or present some to a conference. I'll keep you guys posted.
Join the discussion group to talk about this stuff and more!