juneau-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Gregory (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JUNEAU-85) Don't break compatibility with 7.1.0
Date Thu, 11 Oct 2018 16:13:00 GMT

    [ https://issues.apache.org/jira/browse/JUNEAU-85?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16646700#comment-16646700
] 

Gary Gregory commented on JUNEAU-85:
------------------------------------

This is what we have done in other Apache projects, in Apache Commons especially, Apache HttpComponents, and
also planned for Apache Log4j 3.0; I am on the PMC for all of these, so I speak from experience
;)
 * Say you have version 2.0
 * 2.1-SNAPSHOT: Deprecate code with @Deprecate and @deprecate that point to the new code,
which is key to make your customer's life a non-nightmare.
 * Release 2.1: This allows users to update their code based on the @deprecate comments,
at their own pace (this is key.)
 * 2.2-SNAPSHOT and 2.2: The deprecated code STAYS PUT. 
 * 3.0-SNAPSHOT and 3.0: Remove deprecated code with a recommended package name change com.foo.name
to com.foo.name3 for example. Apache Commons and HttpComponents have done this to avoid jar
hell very successfully which allowing APIs to evolved in an orderly manner.

In this case, I _really_ _really_ think the Juneau project must:
 * 7.2.1-SNAPSHOT: Add back all effectively removed code with @Deprecate and @deprecate that
point to the new code. Note that moved code counts are removed since it break binary compatibility.
 * Release 7.2.1: the goal is for 7.2.1 to be a drop in replacement for 7.1.0.
 * Release 7.2.2, 7.3.0, and so on: The deprecated code STAYS PUT.
 * It is up to your community to decide if 8.0 removes the code and performs a package name
change. In Juneau's case, jar hell is possible since Juneau can be embedded, it is NOT always
the top-level component in the stack. I embed Juneau in our app.

Binary compatibility within minor versions is the ultimate goal, source compatibility is nice
to have.

Please fix for 7.2.1. Pretty please? :)

Gary

> Don't break compatibility with 7.1.0
> ------------------------------------
>
>                 Key: JUNEAU-85
>                 URL: https://issues.apache.org/jira/browse/JUNEAU-85
>             Project: Juneau
>          Issue Type: Bug
>          Components: Code
>    Affects Versions: 7.2.0
>            Reporter: Gary Gregory
>            Priority: Blocker
>
> PLEASE do not break compatibility with 7.1.0.
> Updating from 7.1.0 to 7.2.0 causes the following compiler errors in my app:
> {noformat}
> Description	Resource	Path	Location	Type
> Body cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 515	Java Problem
> Body cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 555	Java Problem
> Body cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 563	Java Problem
> Body cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 657	Java Problem
> Class<StyleMenuItem> cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 158	Java Problem
> JsonSerializer.Simple cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 119	Java Problem
> Path cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 366	Java Problem
> Path cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 627	Java Problem
> Path cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 657	Java Problem
> Query cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 403	Java Problem
> Query cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 404	Java Problem
> Query cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 515	Java Problem
> Query cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 555	Java Problem
> Query cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 563	Java Problem
> StyleMenuItem cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 158	Java Problem
> The import org.apache.juneau.rest.annotation.Body cannot be resolved	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 63	Java Problem
> The import org.apache.juneau.rest.annotation.Path cannot be resolved	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 65	Java Problem
> The import org.apache.juneau.rest.annotation.Query cannot be resolved	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 66	Java Problem
> The import org.apache.juneau.rest.widget.StyleMenuItem cannot be resolved	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 70	Java Problem
> The import org.apache.juneau.xml.XmlSchemaDocSerializer cannot be resolved	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 75	Java Problem
> XmlSchemaDocSerializer cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 122	Java Problem
> {noformat}
> Please never break binary compatibility in a minor release. Use @Deprecated in signatures
and @deprecated in Javadoc.
> When I change the imports to {{org.apache.juneau.http.annotation...}} that fixes some
compiler errors and leaved me with:
> {noformat}
> Description	Resource	Path	Location	Type
> Class<StyleMenuItem> cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 158	Java Problem
> JsonSerializer.Simple cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 119	Java Problem
> StyleMenuItem cannot be resolved to a type	AdminRootResources.java	/redacted-names/src/main/java/com/.../
line 158	Java Problem
> The attribute def is undefined for the annotation type Query	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 403	Java Problem
> The attribute def is undefined for the annotation type Query	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 404	Java Problem
> The import org.apache.juneau.rest.widget.StyleMenuItem cannot be resolved	AdminRootResources.java
/redacted-names/src/main/java/com/.../	line 70	Java Problem
> {noformat}
> At which point I quit, write this ticket, and go back to 7.1.0.
> You should probably use 'mvn clirr:check' or [https://github.com/siom79/japicmp] as part
of your release process.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message