by Eric Bodden and Éric Tanter
Table of contents |
Current state of the art
The AspectJ programming language has evolved a lot in the past few years, and tool support has improved dramatically, thanks to the generous effort of a team of mostly industrial stakeholders. These contributions have lead to a wide-spread industry adoption of the AspectJ language and to the feeling that AspectJ is now the de-facto standard for aspect-oriented programming.
AspectJ could benefit from research results
Despite the maturity of the language and tool support, AspectJ's syntax and semantics still leave room for improvements. At several conferences and workshops on Aspect-oriented Software Development, researchers have proposed useful enhancements to the syntax and/or semantics of AspectJ, many of which could be easily integrated into the official AspectJ compiler ajc. These enhancements range from simple semantic "fixes" that require no or little syntactic changes, e.g. more sensible typing rules for around advice, to larger extensions like history-based pointcuts. We believe that many of these enhancements would benefit developers at large. Yet, until now there exists no structured process for discussing, developing and eventually contributing such enhancements.
AJCP: a JCP for AspectJ
A similar process exists today for Java: for many years now, various people from industry and research have contributed to the Java programming language using the Java Community Process (JCP), in the form of Java Specification Requests (JSRs). We believe it to be useful to establish a similar process for AspectJ. We therefore propose to establish an AspectJ Community Process (AJCP), similar to the JCP, in which AspectJ users and researchers can discuss and contribute these enhancements, with the goal of an eventual integration into ajc.
Goals of the AJCP
In our eyes, the process should fulfill the following goals:
- Allow people to propose enhancements and new features for the AspectJ language, in the form of AspectJ Specification Requests (AJSRs).
- Provide a platform for discussing AJSRs and providing reference implementations for them. We believe that discussion is particularly important because it can help to prevent features from being integrated into the language that try to address problems for which a better solution would have existed. (As an example, AspectJ currently supports per-clauses such as perthis, pertarget, percflow, etc. but researchers have proposed a more general "per-anything" instantiation model, which probably should have been integrated into the language instead.) Discussion of an AJSR may lead to:
- maturing the AJSR so that it can become "production ready", or
- rejecting an AJSR because, for example, it would break backwards compatibility, interact with other existing features in undesirable ways, etc.
- Provide a policy and a technical solution for voting on AJSRs. Voting can decide on an AJSRs eventual integration or rejection.
Support for the idea of establishing an AJCP
At AOSD 2010, we collected signatures from renowned researchers from around the world who support the idea of establishing such a structured process for contributing to the AspectJ language. The original wording of this "motion" was:
For many years now, various people from industry and research have contributed to the Java programming language using the Java Community Process (JCP), in the form of Java Specification Requests (JSRs). Several conferences and workshops on Aspect-oriented Software Development have proposed useful enhancements to the syntax and/or semantics of AspectJ, many of which could be easily integrated into the official AspectJ compiler ajc. We believe that many of these enhancements would benefit developers at large. Yet, until now there exists no structured process for contributing such enhancements. We therefore propose to establish an AspectJ Community Process (AJCP), similar to the JCP, in which AspectJ users and researchers can discuss and contribute these enhancements, with the goal of an eventual integration into ajc.
We have scanned in these signatures (54 in total). They are available here: page 1, page 2 and page 3
Plan for Action
At this point we would like to ask the main contributors to and stakeholders of AspectJ (SpringSource, UBC, BEA, IBM UK and others) to seriously consider establishing such a process. We propose to use the mailing list aosd-discuss and/or this Wiki page to further discuss the details of this process.
![[Main Page]](/wiki/skins/common/images/AOSDWikiLogo.gif)