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 E8CD7200D21 for ; Mon, 16 Oct 2017 13:21:04 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E79621609EF; Mon, 16 Oct 2017 11:21:04 +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 1707A1609EC for ; Mon, 16 Oct 2017 13:21:03 +0200 (CEST) Received: (qmail 215 invoked by uid 500); 16 Oct 2017 11:21:03 -0000 Mailing-List: contact common-issues-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-issues@hadoop.apache.org Received: (qmail 203 invoked by uid 99); 16 Oct 2017 11:21:03 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 Oct 2017 11:21:03 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 5D101C85C2 for ; Mon, 16 Oct 2017 11:21:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.202 X-Spam-Level: X-Spam-Status: No, score=-99.202 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 6pQjB8BHD58A for ; Mon, 16 Oct 2017 11:21:01 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 3513F5F6CD for ; Mon, 16 Oct 2017 11:21:01 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id B693DE0E4F for ; Mon, 16 Oct 2017 11:21:00 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 51EDB24360 for ; Mon, 16 Oct 2017 11:21:00 +0000 (UTC) Date: Mon, 16 Oct 2017 11:21:00 +0000 (UTC) From: "Steve Loughran (JIRA)" To: common-issues@hadoop.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HADOOP-14876) Create downstream developer docs from the compatibility guidelines MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Mon, 16 Oct 2017 11:21:05 -0000 [ https://issues.apache.org/jira/browse/HADOOP-14876?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16205748#comment-16205748 ] Steve Loughran commented on HADOOP-14876: ----------------------------------------- h4. Privacy scope * add: sometimes things are marked as private when they end up being essential (example: UserGroupInformation). In situations, raise issues with the team to see if we can't add some form of @public tag \cite{HADOOP-10776}. Now, what about the fact that distributed shell example has (or at least did when I last looked) use of private code? e.g org.apache.hadoop.io.DataOutputBuffer, the timeline plugin, NMClientAsyncImpl, ... You can look at the imports and probably 20% of the class imports (not interfaces, yarn records) are tagged as private/limited private. We are not in a position to tell people not to use @Private, not given we consider doing so essential even for basic example yarn apps. * What does it mean if something is tagged as LimitedPrivate for one app (esp HBase & Hive, which aren't within our own codebase)? to me, that says "we know these things get used downstream, or we've added them as a special secret back-door". But who gets to choose which apps can actually use it? Limited private+outside our codebase == public, which is something we should acknowledge when scoping things. And LimitedPrivate(Mapreduce) often means "every YARN app needs these". * What does it mean if a release removes/changes something you depended on which was tagged private/limited private. Complain. It may get ignored, but it may have been done without awareness of wide use. h4. Semantics I take this bit very seriously, having been deeply involved in the original paragraphs, and an aficionado of all D.L. Parnas's writings on the notion of "interface". As far as I'm concerned, the defacto definitions of semantics are defined in our unit tests "what we expect" and in those of widely used applications "what HBase and Hive expect". We know if we break the latter then people complain, and, while we may do so, its not something want to. B L113. yeah right. It's usually the first port of call, & if you think otherwise, you're not writing enough downstream code. the original Compatibility.md calls out that some bits of the system have non-normative specifications; eg fileystem. I would consider that significantly more normative than the javadocs, most of which are vague aspirations of functionality. Usually the javadocs don't have any mention of concurrency, which matters a lot; for that you do end up delving into the source and/or using it in a way which appears to work (HDFS's use of input streams), when in fact they'r just using accidental bits of the semantics which we are now expected to maintain. +maybe mention StreamCapabilities.hasCapability as a way of determining if FS streams offer a feature, say it's more to support variants in back ends rather than a way for us to remove things. But do mention: good practice to check for new things rather than assume that if HDFS implements it, it works everywhere. L160" The audit log format may not change incompatibly between major releases." ?? "may change?" or "must not" L189. Need to explain how to differentiate log chaff from "real" output. Indeed, I'm curious myself. L208. We don't require log4j though; other back ends may be supportable. L229. Nothing called "s3.*: no more L298 "No new (exposed) dependency will be added to Hadoop between major releases." Can't make that guarantee. Qualify "via the shaded clients" Things that we've glossed over * No statement on supported operating systems, filesystems, x86 parts IPv4 vs v6, If I code for Windows, how long will hadoop-client work there? What if I target SPARC? * Concurrency: say "we try not to make things worse"?; degradations are considered defects except when its just some accidental side effect of excessive logging? > Create downstream developer docs from the compatibility guidelines > ------------------------------------------------------------------ > > Key: HADOOP-14876 > URL: https://issues.apache.org/jira/browse/HADOOP-14876 > Project: Hadoop Common > Issue Type: Improvement > Components: documentation > Affects Versions: 3.0.0-beta1 > Reporter: Daniel Templeton > Assignee: Daniel Templeton > Priority: Critical > Attachments: HADOOP-14876.001.patch > > -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-issues-help@hadoop.apache.org