Return-Path: X-Original-To: apmail-apex-dev-archive@minotaur.apache.org Delivered-To: apmail-apex-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 33495189E1 for ; Fri, 18 Mar 2016 15:46:39 +0000 (UTC) Received: (qmail 41291 invoked by uid 500); 18 Mar 2016 15:46:39 -0000 Delivered-To: apmail-apex-dev-archive@apex.apache.org Received: (qmail 41221 invoked by uid 500); 18 Mar 2016 15:46:39 -0000 Mailing-List: contact dev-help@apex.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@apex.incubator.apache.org Delivered-To: mailing list dev@apex.incubator.apache.org Received: (qmail 41210 invoked by uid 99); 18 Mar 2016 15:46:38 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Mar 2016 15:46:38 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 6FFBA18055A for ; Fri, 18 Mar 2016 15:46:38 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.021 X-Spam-Level: X-Spam-Status: No, score=-4.021 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx2-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id Yvs55Vln5m4e for ; Fri, 18 Mar 2016 15:46:36 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx2-lw-eu.apache.org (ASF Mail Server at mx2-lw-eu.apache.org) with SMTP id C5EB25F257 for ; Fri, 18 Mar 2016 15:46:35 +0000 (UTC) Received: (qmail 41206 invoked by uid 99); 18 Mar 2016 15:46:34 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Mar 2016 15:46:34 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id AB65EDFA6C; Fri, 18 Mar 2016 15:46:34 +0000 (UTC) From: tweise To: dev@apex.incubator.apache.org Reply-To: dev@apex.incubator.apache.org References: In-Reply-To: Subject: [GitHub] incubator-apex-site pull request: APEXCORE-319 Document compatibil... Content-Type: text/plain Message-Id: <20160318154634.AB65EDFA6C@git1-us-west.apache.org> Date: Fri, 18 Mar 2016 15:46:34 +0000 (UTC) Github user tweise commented on a diff in the pull request: https://github.com/apache/incubator-apex-site/pull/19#discussion_r56676627 --- Diff: src/md/compatibility.md --- @@ -0,0 +1,112 @@ +#Apache Apex Compatibility + +##Purpose + +This document captures the compatibility goals of the Apache Apex project. The different types of compatibility between Apex releases that affect contributors, downstream projects, and end-users are enumerated. For each type of compatibility we: + +* describe the impact on downstream projects or end-users +* where applicable, call out the policy adopted when incompatible changes are permitted. + +Apache Apex follows [semantic versioning](http://semver.org/). Depending in the compatibility type, there may be different tools or mechanisms to ensure compatibility, for example by comparing artifacts during the build process. + +The type of change will inform the required target version number. Given a version number MAJOR.MINOR.PATCH, increment the: + +* MAJOR version when you make incompatible API changes, +* MINOR version when you add functionality in a backwards-compatible manner, and +* PATCH version when you make backwards-compatible bug fixes. + +Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. + +The overall goal is to avoid backward incompatible changes and major release upgrades. Accordingly we attempt to release new features with minor versions that are incremental to the prior release and offer our users a frictionless upgrade path. When planning contributions, please consider compatibility and release road map upfront. Specifically, certain changes that conflict with the versioning may need to be documented in JIRA and deferred until a future major release. + +##Compatibility types + +###Java API + +Public API compatibility is required to ensure end-user programs and downstream projects continue to work without modification. +The public API consists of: + +* apex-core: all interfaces and classes in `api` and `common` modules +* apex-malhar: all interfaces and classes in all modules except `demos`, `samples`, `benchmark` + +Interfaces and classes that are part of the public API and are annotated with [interface stability](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/InterfaceClassification.html) are treated according to the rules defined by the annotation. + +Policy + +Changes to the public API must follow semantic versioning. +Public APIs must be deprecated for at least one major release prior to their removal in a major release. +The japicmp plugin is used to enforce compatibility as part of the Travis pre-commit builds. + +###Semantic compatibility + +The behavior of APIs needs to remain consistent over versions, though changes for correctness may result in changes in behavior. Tests and javadocs specify the behavior. Over time, test suites should be expanded to verify compliance with the specification, effectively creating a formal specification for the subset of behaviors that can be easily tested. + +Policy + +The behavior of API may be changed to fix incorrect behavior, changes to be accompanied by tests coverage for the exact behavior. + +###REST API + +REST API compatibility corresponds to both the URLs and request/response content over the wire. REST APIs are specifically meant for stable use by clients across releases, even major releases. + +Policy + +The REST API is separately versioned. This is to allow for co-existence of old and new API should there be a need for backward incompatible changes in the future. + +###Command Line Interface (CLI) + +The CLI may be used either directly via the system shell or via shell scripts. Changing the path, removing or renaming command line options, the order of arguments, or the command return code and output break compatibility and may adversely affect users. + +Policy + +CLI commands are to be deprecated (warning when used) in a prior minor release before they are removed or incompatibly modified in a subsequent major release. --- End diff -- Thanks for catching this, deprecation can be in prior minor release. --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---