[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-dev] Themes for AspectJ 1.2

Other possible themes, some with new features, others
adopting known feature requests...

* Usability
  - speed/performance here
  - better error messages
  - docs/samples here
  - simplified language: enforce subset of most-used,
    most-understood features - training wheels?

* Reusability
  - fix limitations and holes in developing
    and maintaining reusable aspects

* Technology toolkit

- for static analysis
  - permit developers to plug in components or define
    staticly-executable advice to better integrate
    static and dynamic verification.  See related AOSD 2003:
    "A case for staticly-executable advice: checking the
     law of Demeter with AspectJ"

- for VAR's
  - many tools could be implemented using an embedded
    weaver, some AspectJ code, and perhaps some
    - the JBoss framework
    - architectural constraint checking
    - automated test tools
    We could make this easier through another component
    like AJDE for such integrations.

- integration with other AOP tools and toolkits
  - running JBoss interceptors
  - the concern manipulation framework

- more modular design
  - is it possible to move towards something like JMangler's
    approach, to make it easier to experiment with new
    language features?

* Increasing capacity
  (more about management, but, hey, it involves 1.2)

  - Right now (IDE, compiler, weaver) resolves mainly to
    (Mik, Jim, Erik).  It would be nice to free them
    entirely from primary bug-fixing duties.  We could
    enlist a team for the 1.1.X branch and divide the work
    accordingly.  The 1.1.X team would work with the 1.2
    team to integrate 1.1.X fixes into 1.2, and would thus
    train up for maintaining 1.2.  This avoids the 1.2
    team being pulled back to fix pressing 1.1.X bugs
    and important bugs going unfixed for months.
    (However, the set of bugs that can be fixed without major
    changes might be small.)

These raise the question of what we want most from 1.2:

- to meet the current needs of current users

- to increase the number and skill of AspectJ users

- to answer challenges from alternatives

- standardization, de facto or de jure

- to reach the enterprise market

- to reach more researchers

- to advance the art in AOP

Depending on our focus, we attract different kinds of
interest and contributors.  Some features, e.g.,
distributed aspects and enhanced IDE support,
nicely serve many goals.


Adrian Colyer wrote:

Now that AspectJ 1.1.1 is out, it's time to turn our attention to 1.2. This post is to start a discussion about possible themes and priorities for the 1.2 release. The eventual plan will be influenced by AspectJ's users, it's developers, and of course which items contributors will sign up to implement - so anything we discuss here should not be treated as a plan commitment at this stage. I'm including all project tasks, not just those that might involve writing code.

With that said, here are some candidate themes to start the discussion (not an ordered list):

* AspectJ for the Enterprise

This theme could include adding (and developing) material for the website / docs / ... explaining how to use AspectJ with various app servers and J2EE technologies. A classloader would come under this category too, and perhaps even a set of samples or an aspect library for working with AspectJ in J2EE.

* Preparation for Java 1.5

Including consideration of the impact of generics and metadata on the language.

* Performance and scalability

Memory usage (across AspectJ and AJDT), compile time, weave time, runtime performance. This theme might for example build a benchmark suite and then use it to optimise the compiler and its output. Supporting pertype could fall into this category - as it's needed for some common logging idioms, as could looking into the possibility of creating thisJoinPoint objects lazily.

* Enhanced IDE support

Work in the ajde components (and possibly below) to allow deeper IDE integration (e.g. to support eager outline views, code formatting, structure model operations etc.). JSR 45 support. AJDT needs this...

* Clean-up : working through P3's etc. that have built up during release cycle

We have a reasonable list now that we're going to have to work through. This task will also include things like fixing up the failing BCWeaver tests

* Miscellaneous (these things don't fit neatly in any of the above yet)

There are many items carried over from 1.1 planning for example, that we should consider (some may fit into the above themes). I'll dig these out and post separately. One item I would like to consider is getting context information into declare warning / error messages (we had a prototype implementation here in Hursley a while back but never got to discussing the rights and wrongs on the list as there were other priorities at the time). Wes has begun work on some general purpose samples and we should continue that.... there's the possibility of a general purpose aspect library in time.

I'd like to begin our planning by focusing on what the right themes are to go after (please cast your votes, and add your own suggestions too) on the dev list, then we can go to the users list once we have a first pass in place. Then we have to start fleshing out what the individual items we want to attack in each category are, and figuring out who wants to work on what.

-- Adrian