PDE/API Tools 3.5 Plan

PDE API Tools 3.5 Plan

Last revised: 2008/08/27

This plan is under continuous refinement. Please send comments about this plan to the pde-ui-dev@eclipse.org developer mailing list.

Overall Goals

This section lists the goals for Eclipse 3.5 for the PDE/API Tools component as listed on the Eclipse Project 3.5 Draft Plan.

[1] Performance. Monitor overall performance and memory consumption. Build a new performance test suite.

[2] Reliability. Build a comprehensive regression test suite for the API Tools builder. Fix critical bugs, provide APIs as required.

[3] Keep Eclipse vibrant and attractive. Investigate and implement enhancements such validating system library access based on a project's associated execution environment.

Milestone M1 (2008-08-08)

General Items [2]

  • 3.4.1 maintenance work
  • Bug fixing

Milestone M2 (2008-09-19)

General Items [2]

  • 3.4.1 maintenance work
  • Bug fixing

Reliability [2]

  • Build a comprehensive regression test suite for the API analysis builder (Michael Rennie, Darin Wright, IBM) [bug 218571]
  • >[M3] Build a performance test suite (Michael Rennie, Darin Wright, IBM) [bug 245434]
  • Publish a Smoke Test plan on the web (Michael Rennie, IBM) [bug 245415]

Usability/Workflow [3]

  • Polish API Errors/Warnings preference page (Olivier Thomann, IBM)
    • Reduce the number of settings by combining errors related to type variables/bounds into one section and combining type conversions into one error [bug 242618 and bug 242610]
    • Simplify settings for Annotations [bug 242609]

Testing

Milestone M3 (2008-10-31)

Architecture/Infrastructure [3, 1]

  • Migrate architecture to support binary or source analysis
  • Consolidate data structures used for delta creation and API use/leak analysis
  • Make search criteria implementation more flexible by allowing specializations rather than having one search criteria that can do everything
  • Investigate integration as Java compilaion participant
    • > decided not to follow this path in 3.5 - compilation participants are intended for lightweight function

API Analysis Enhancements [3]

  • For non-API super-type leaks, analyze if anything internal is actually exposed
  • Allow "friends" to have special privileges - like implement, reference etc.
    • > decided not to implement this feature (not that widely used - indicates implementation is split across several bundles)
  • >[deferred to M4] Flag when new API is used in a required bundle that requires the version range to be incremented/updated (i.e. using a new API, so lower bound needs updating)

Testing [2, 1]

  • Build a performance test suite (Michael Rennie, Darin Wright, IBM) [bug 245434]

Milestone M4 (2008-12-12)

System Library access validation [3]

  • Validate references to system library based on EE (J2SE-1.4, etc). A 1.4 project should not reference 1.5/1.6 methods/classes
  • Investigate methods to ship required metadata for access validation

RelEng Ant Task API [2]

  • Support API ant tasks for general consumption and integration into RelEng build process
    • Separate data collection and report generation such that report generation can be pluggable
  • Document use of the Ant tasks in ISV guide

API Analysis Enhancements [3]

  • >[from M3] Flag when new API is used in a required bundle that requires the version range to be incremented/updated (i.e. using a new API, so lower bound needs updating
  • Enhance API use analysis to process anonymous/local types [bug 246672]
  • Support @noextend tag on interfaces, in addition to @noimplement [bug 230189]
  • Tooling to clean up stale API problem filters [bug 244676]

Baseline Definition [2]

  • Follow PDE's use of p2 to discover/analyze what bundles are present in an installation
    • API Baseline definition is similar to target platform definition, and we should use a similar approach

Testing

  • Create incremental build performance tests [bug 251617]

Milestone M5 (2009-01-30)

Major/Big Features Done

Extension point compatibility analysis [3]

  • Analyze extension points for compatibility errors (addition of non-optional attributes)
  • Update bundle version numbers based on breaking/compatible changes in extension points

API Analysis Enhancements [3]

  • [>from M4] Flag when new API is used in a required bundle that requires the version range to be incremented/updated (i.e. using a new API, so lower bound needs updating)
  • Support to handle plug-in split/re-organization properly during compatibility analysis [bug 240914]
  • Support to handle fragments properly during compatibility analysis [bug 255720]
  • [> M6] Improve presentation of API tooling reports in the releng build
  • [> M6] Code assist should filter system library completions [bug 256287]

API comparison reporting [3]

  • [> M6] Tooling to compare APIs - highlights what APIs have changed in a release, relative to a baseline
  • Could be presented in the IDE (structural compare)

API use reporting [3]

  • [> M6] Tooling to identify what clients (plug-ins/bundles) are illegally using non-API code
    • Note that this is different from current discouraged access reporting, since it allows the producer to see who is accessing their code, rather than flagging the consumer with a problem
  • Could be presented in the IDE (search) and as an Ant task/report for RelEng build

Baseline Definition [2]

  • [> M6] Follow PDE's use of p2 to discover/analyze what bundles are present in an installation
    • API Baseline definition is similar to target platform definition, and we should use a similar approach

Testing

  • >[from M4] Create incremental build performance tests [bug 251617]

Milestone M6 (2009-03-13)

API Freeze

API Use Reports [3]

  • [> from M5] Generate producer centric report of what API/non-API is being consumed by other bundles [bug 259403]

Baseline Definition [2]

  • [> from M4] Follow PDE's use of p2 to discover/analyze what bundles are present in an installation [bug 239493]
    • API Baseline definition is similar to target platform definition, and we should use a similar approach

API Comparison Reporting [3]

  • [> from M5] Generate API comparison report - highlights what APIs have changed in a release, relative to a baseline [bug 258853]
  • [>from M4] Detect when new API is used in a required bundle that requires the version range to be incremented/updated [bug 255771]

Performance

  • Tune incremental build performance tests [bug 260732]

Polish

  • [> from M5] Support to handle plug-in split/re-organization properly during compatibility analysis [bug 259997]
  • Include API descriptions when exporting plug-ins from the workspace [bug 227202]
  • [> from M5] Improve presentation of API tooling reports in the releng build [bug 257724]
  • [> from M5] Code assist should filter system library completions [bug 256287]

Testing

Milestone M7 (2009-05-01)

Feature Freeze, Focus on Performance and Polish

Performance

  • Improve incremental build performance and footprint [bug 233643]

Polish

Testing

Legend

item is under development. item is under investigation.
item is finished. ( ) item is time permitted.
[xyz] item is deferred (>) from xyz or continues in xyz. new
item is no longer in plan