Thursday, November 22, 2007

API Tooling is a work in progress

Lately I have had the chance to work on a new project a little outside the scope of debuggers: API tooling support for the platform. Ultimately the goal of this incubator project is to provide tools for 'working' with APIs. Working in this context is loosely defined as:

1. Manging API usage across builds/products
2. Creating API profiles to compare against
3. Tools to compare APIs
4. Tools to manage API breakage detection/repair
...

Alot more information can be found on the wiki for the project (here).

One of the features currently available in the project is the ability to manage API profiles. API profiles are considered to be a description of the API of a component (which can be a project, plugin, bundle, etc). These profiles can be used to compare current source to, or another component.

The following screenshot is the 'API Profiles' preference page used manage API profiles (hence its name :) )



Another feature is the ability to use Javadoc source tags to define API restrictions. The tags are provided as completion proposals for classes, interfaces, methods and fields. For example you could add a @noimplement tag to an API interface that clients are intended to use but not implement.

The following screen cap is a shot of a Java editor showing a variety of source tags.



These are of course previews of current ongoing work, so it could change at any time :)