Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E3F97200AF7 for ; Tue, 14 Jun 2016 17:25:15 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E2B3C160A47; Tue, 14 Jun 2016 15:25:15 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 0E9DA160A06 for ; Tue, 14 Jun 2016 17:25:14 +0200 (CEST) Received: (qmail 95332 invoked by uid 500); 14 Jun 2016 15:25:14 -0000 Mailing-List: contact dev-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Commons Developers List" Delivered-To: mailing list dev@commons.apache.org Received: (qmail 95320 invoked by uid 99); 14 Jun 2016 15:25:13 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Jun 2016 15:25:13 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 5A1961A0C4A for ; Tue, 14 Jun 2016 15:25:13 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.28 X-Spam-Level: * X-Spam-Status: No, score=1.28 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=carmanconsulting-com.20150623.gappssmtp.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id nZ4XoAYv1W-j for ; Tue, 14 Jun 2016 15:25:09 +0000 (UTC) Received: from mail-vk0-f42.google.com (mail-vk0-f42.google.com [209.85.213.42]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 8A5565F39C for ; Tue, 14 Jun 2016 15:25:09 +0000 (UTC) Received: by mail-vk0-f42.google.com with SMTP id d185so101803715vkg.0 for ; Tue, 14 Jun 2016 08:25:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=carmanconsulting-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=MkWv4BVevBDcxng106OydVvRdkgO+VtSy6Nt1SRbuKc=; b=aqtzyugU8l7ILUofeT9on+j/gFebEGz8ez1g4jGjhP+CsInJfpjKkHwVcsKvqJ/oo4 lbMSFDVGUaFU7OScTworJU9ApvYAnHvhA4LVDyKtT3KMOmxk90+9KaOeHE4IM/OpBF6P DbGgKe/EsBEfsQpPa5630Svejpa7tqqHrA1ru6RLTCidADDPmfgWc5EUAE4sH9azXKh+ opu57I7hbeAnw9ATRdjj/K7BceM92I+sbMB5oGTrFzLqXrzVExsR/mqDOSbWI6iCLwBq +as3IEWA6kfuh0LHWtXAYRR70Fr5RUfVJud7QpqwDvdOTYrz6LqRPanZrSJ/+YLl8jw3 Dd0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=MkWv4BVevBDcxng106OydVvRdkgO+VtSy6Nt1SRbuKc=; b=XtAby071912RLfe6Fv6rLglaT/rU3IQC3mOEWtcjcP20kahJTXcLcqYvsdYg/rPwGu unaciwLZoekIKJzNSO519eIGMXlUl3+N29VvG99ppQ7QT9JulywRk/xVEOX1kcNZ5KFB 5gw0L2v1ms5q77Tq3txLejsg1jGUH2LkMnkcDAmQXXjccGhvf+ONT5bIhy5NVPtt7t6A 2a0P07C4EoRbDlmbNHc8jU+nKvB4hlF3ldl0+gYlO6+JsDIV0Rs3x4aMH5LS0L45QPRn 9gky2cLBFP8aliALf7ru/uXjKP3mziQP/b/UE7FGFKGOXZae8dM5uww+tqEZx770+V3N 5JCA== X-Gm-Message-State: ALyK8tL+1iG0U9LomDt8/Kdp1gWJ01+/YgjECPDSKrqiAedF+cA2eybVE4Ii3veyMx2ZuJ2jTuudsMHKZ9hOdg== X-Received: by 10.31.99.133 with SMTP id x127mr6893165vkb.146.1465917908604; Tue, 14 Jun 2016 08:25:08 -0700 (PDT) MIME-Version: 1.0 References: <5754668F.7080900@apache.org> <4cdd3f7c-b2fa-171c-02b0-68e1e510d7e1@apache.org> In-Reply-To: From: James Carman Date: Tue, 14 Jun 2016 15:24:58 +0000 Message-ID: Subject: Re: Re: [ALL] About binary compatibility To: Commons Developers List , gudnabrsam@gmail.com Content-Type: multipart/alternative; boundary=94eb2c07ccfc368af205353e9c01 archived-at: Tue, 14 Jun 2016 15:25:16 -0000 --94eb2c07ccfc368af205353e9c01 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Perhaps the new ASM-based replacement for CLIRR could have those as one of its "components" in its TLP? On Tue, Jun 14, 2016 at 11:00 AM Matt Benson wrote: > On Jun 14, 2016 9:55 AM, "Gary Gregory" wrote: > > > > > > On Jun 14, 2016 7:45 AM, "Matt Benson" wrote: > > > > > > On Tue, Jun 14, 2016 at 2:14 AM, Andrey Loskutov > wrote: > > > > > > > I like the way Eclipse it does for years: > > > > > > > > 1) Everything inside **/internal/ packages is non API by definition > > > > 2) MANIFEST.MF to use OSGI "Export-Package" attribute for "publishe= d" > > > > packages > > > > 3) Javadoc @noextend tag for classes not intended to be extended > > > > 4) Javadoc @noimplement tag for interfaces > > > > > > > > If "real" annotations were used for points 3 and 4, they could live > > > alongside a Java (6) Processor that, if the user had annotation > processing > > > enabled, could fail the build (pretty sure this is doable). > > > > But where do these annotations live? Does each Commons component > duplicate them? > > > > I thought about that, and would conclude that they should live in a thin > compile-time-only dependency library (it may be the case that usable > versions of these annotations already exist someplace, but the processor > would still have to be provided in this manner, so it doesn't really chan= ge > anything). No reason this couldn't be used outside Commons either, > actually. > > Matt > > > Gary > > > > > > > > Matt > > > > > > > > > > A bonus for libraries with correct MANIFEST.MF is that they can be > > > > directly used as bundles inside any OSGI container (also Eclipse). > > > > > > > > Example: > > > > /** > > > > * An observable value whose changes can be vetoed by listeners. > > > > * > > > > * @param > > > > * the type of value being observed > > > > * > > > > * @noextend This interface is not intended to be extended by > clients. > > > > * @noimplement This interface is not intended to be implemented by > > > > clients. > > > > * Clients should instead subclass one of the classes > that > > > > * implement this interface. Note that direct > implementers of > > > > this > > > > * interface outside of the framework will be broken i= n > future > > > > * releases when methods are added to this interface. > > > > * > > > > * @since 1.0 > > > > * > > > > */ > > > > public interface IVetoableValue extends IObservableValue { > > > > > > > > Kind regards, > > > > Andrey Loskutov > > > > > > > > http://google.com/+AndreyLoskutov > > > > > > > > > > > > > Gesendet: Dienstag, 14. Juni 2016 um 09:03 Uhr > > > > > Von: "J=C3=B6rg Schaible" > > > > > An: dev@commons.apache.org > > > > > Betreff: Re: [ALL] About binary compatibility > > > > > > > > > > Hi, > > > > > > > > > > James Carman wrote: > > > > > > > > > > > Agree we should have a "source of truth". Is there something > wrong with > > > > > > using an "internal" or "impl" package name? The bundle plugin f= or > OSGi > > > > > > doesn't export these by default, which would be a nice side > effect! :). > > > > > > > > > > While it is a step in the right direction, a package scoped > solution does > > > > > not solve the problem of a public interface that should not be > > > > implemented > > > > > directly (as we've seen with the BCEL visitor). Time for Java 8 a= nd > its > > > > > default implementations ... > > > > > > > > > > Cheers, > > > > > J=C3=B6rg > > > > > > > > -------------------------------------------------------------------= -- > > > > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org > > > > For additional commands, e-mail: dev-help@commons.apache.org > > > > > > > > > --94eb2c07ccfc368af205353e9c01--