Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 477429

Summary: Add a build step to ensure API stability
Product: [RT] Jetty Reporter: Simone Bordet <simone.bordet>
Component: buildAssignee: Jan Bartel <janb>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: P3 CC: gunnar, jetty-inbox
Version: 9.3.3   
Target Milestone: 9.3.x   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Simone Bordet CLA 2015-09-15 04:18:55 EDT
See bug #477385.

We can use the Clirr Maven plugin for this check.
In fact, we already have it in the root pom.xml, but only in a profile. Perhaps we should enable it by default, or at least in CI.
Comment 1 Gunnar Wagenknecht CLA 2015-09-16 05:15:09 EDT
Simone, I wonder if it's also worth to be pretty strict when specifying the package imports in the Jetty manifests? Given that some classes aren't API but used between the Jetty bundles it might make sense to be very strict on the imports, eg. [9.3.0,9.3.1).
Comment 2 Simone Bordet CLA 2015-09-16 05:43:43 EDT
Gunnar, it's been done, see bug #477385.
Comment 3 Simone Bordet CLA 2015-09-16 05:44:57 EDT
Jan, can you please review if this build improvement is still needed now that you fixed bug #477385 ?
Comment 4 Jan Bartel CLA 2015-09-16 05:48:59 EDT
Hi Gunnar,

I've just checked in a change that does that very thing: all org.eclipse.jetty package imports are limited to [major.minor.micro,major.minor.micro+1)

cheers
Jan

(In reply to Gunnar Wagenknecht from comment #1)
> Simone, I wonder if it's also worth to be pretty strict when specifying the
> package imports in the Jetty manifests? Given that some classes aren't API
> but used between the Jetty bundles it might make sense to be very strict on
> the imports, eg. [9.3.0,9.3.1).
Comment 5 Jan Bartel CLA 2015-09-17 21:03:41 EDT
Simone,

Now that we've bolted down the osgi version range to a single, homogeneous major.minor.micro version I'm not sure what value Clirr would add?  We don't really publish apis and their implementations - pretty much all of our jars are impls and compatibility is assured at compile-time by the build. The distro environment is guaranteed to be compatible. The maven jetty plugin environment is also guaranteed to be compatible. And now the osgi environment is guaranteed to be compatible. The only other execution environment I can think of is embedded, and that has always been under the user's complete control.

I'll close this issue. If anyone has some strong argument in favour of including Clirr in the build, please bring it forth and reopen.

Jan