From patchwork Thu Dec 3 23:23:03 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Holmes X-Patchwork-Id: 57698 Delivered-To: patch@linaro.org Received: by 10.112.155.196 with SMTP id vy4csp225272lbb; Thu, 3 Dec 2015 15:33:10 -0800 (PST) X-Received: by 10.140.222.79 with SMTP id s76mr15178388qhb.21.1449185123946; Thu, 03 Dec 2015 15:25:23 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id u144si11098641qka.104.2015.12.03.15.25.23; Thu, 03 Dec 2015 15:25:23 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dkim=neutral (body hash did not verify) header.i=@linaro-org.20150623.gappssmtp.com Received: by lists.linaro.org (Postfix, from userid 109) id 2F73762D21; Thu, 3 Dec 2015 23:25:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,T_DKIM_INVALID,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 2258F62CD4; Thu, 3 Dec 2015 23:23:39 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 3938162D08; Thu, 3 Dec 2015 23:23:23 +0000 (UTC) Received: from mail-qg0-f51.google.com (mail-qg0-f51.google.com [209.85.192.51]) by lists.linaro.org (Postfix) with ESMTPS id 6477B62CB2 for ; Thu, 3 Dec 2015 23:23:09 +0000 (UTC) Received: by qgeb1 with SMTP id b1so75454879qge.1 for ; Thu, 03 Dec 2015 15:23:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=eowpXPGjzJX0L5eSpyIHWm7sLKDuWae8QnYUO1ldRck=; b=z47x2yBOIEmBanAdZo588bWYlsEWy8p/kUdJkFILqZc96X4ACNUeFLKT0qEtFU9Izz MfrQL9KND7d0VL+oUXDLmFwpRrsi1k+jolY0lhVBvcMvZtTfeBroE/zbsyioYGFQc+4+ nOARWFSbkIiQPcwhsQVS7Xol7d6OiyiF2C97uwAjKIWGvUvO+5tohJs3NazGPtYAmnRn MS0HC2BECEW2BhKUPQeFIvpA/E+jXarNnhEFSYArcZSAxqE1+KB8cVMq+9ZnnP8zyeck DxLJheppp2oUpR0n3NMLAm0AqL/qW49OPf28T6By2w4wNrcmcBMPihjJ9acbnNL4ViQB LGNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=eowpXPGjzJX0L5eSpyIHWm7sLKDuWae8QnYUO1ldRck=; b=BfcGRshJ1FelXLu+IUgLGT5xZZ0tzzFRXwRX70SW4gPIT7cOeDQZf3tS1FgcsWOBg1 KmDS8sOzWc5tbrBxUYC1bc6KSjeGJ36JQg8+3z6Apj4q37fwziWss0EfzD7BDWqNukHj A8WuW+rj3JVADJ8NMPqVw9aGma304Cs5A6XOUot1eoEW5CITLSPIq+bB+5W8KX0FllLH DlJ1csTcxuPyjgDvok0+Zyk14R+qjJCVtD0v84RAwEQ7C/XwwarcRRCgoMcGAfI6qYUS nx/UnUuSpfhtsF39+vRYe+TP0V0JznR8FgEdhnBFJHaWhK97GOl7r+nr57M+wriKVzY+ GLtA== X-Gm-Message-State: ALoCoQlYvQnz8XDj7hD1nTFV7VmAkIDmLhym/XldydbVJwG2ZxHAjW710+QpZZDwQsxh3d0qoscd X-Received: by 10.140.105.182 with SMTP id c51mr14635235qgf.15.1449184989122; Thu, 03 Dec 2015 15:23:09 -0800 (PST) Received: from localhost.localdomain (c-98-221-136-245.hsd1.nj.comcast.net. [98.221.136.245]) by smtp.gmail.com with ESMTPSA id d14sm4306842qkb.49.2015.12.03.15.23.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 03 Dec 2015 15:23:08 -0800 (PST) From: Mike Holmes To: lng-odp@lists.linaro.org Date: Thu, 3 Dec 2015 18:23:03 -0500 Message-Id: <1449184983-18005-1-git-send-email-mike.holmes@linaro.org> X-Mailer: git-send-email 2.5.0 X-Topics: patch Subject: [lng-odp] [PATCH] doc: process-guide: add release process X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" The release process was recored in the ODP webpage and not tracked in git. This meant that changes to the release process could not be tracked. Convert to ascii doc src in git and generate it Signed-off-by: Mike Holmes --- configure.ac | 1 + doc/Makefile.am | 2 +- doc/images/Makefile.am | 15 ++- doc/images/release_git.svg | 250 +++++++++++++++++++++++++++++++++++ doc/images/simple_release_git.svg | 60 +++++++++ doc/process-guide/Makefile.am | 12 ++ doc/process-guide/release-guide.adoc | 136 +++++++++++++++++++ 7 files changed, 474 insertions(+), 2 deletions(-) create mode 100644 doc/images/release_git.svg create mode 100644 doc/images/simple_release_git.svg create mode 100644 doc/process-guide/Makefile.am create mode 100644 doc/process-guide/release-guide.adoc diff --git a/configure.ac b/configure.ac index bcddacb..00a1415 100644 --- a/configure.ac +++ b/configure.ac @@ -331,6 +331,7 @@ AC_CONFIG_FILES([Makefile doc/Makefile doc/implementers-guide/Makefile doc/users-guide/Makefile + doc/process-guide/Makefile doc/images/Makefile example/Makefile example/classifier/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index fd1c30e..a1e9903 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -6,7 +6,7 @@ clean-local: endif if user_guide -SUBDIRS += implementers-guide users-guide +SUBDIRS += implementers-guide users-guide process-guide endif EXTRA_DIST = \ diff --git a/doc/images/Makefile.am b/doc/images/Makefile.am index cf8faf7..df5b6b1 100644 --- a/doc/images/Makefile.am +++ b/doc/images/Makefile.am @@ -4,7 +4,10 @@ SVG_SRCS = atomic_queue.svg \ odp_components.svg \ odp_rx_processing.svg \ odp_scheduling.svg \ - odp_traffic_manager.svg + odp_traffic_manager.svg \ + release_git.svg \ + simple_release_git.svg + SVG_TARGETS = $(SVG_SRCS:svg=png) SVG_TARGETS += $(SVG_SRCS:svg=eps) MSG_SRCS = resource_management.msc @@ -62,5 +65,15 @@ odp_traffic_manager.png: odp_traffic_manager.svg odp_traffic_manager.eps: odp_traffic_manager.svg convert $< $@ +release_git.png: release_git.svg + convert $< $@ +release_git.eps: release_git.svg + convert $< $@ + +simple_release_git.png: simple_release_git.svg + convert $< $@ +simple_release_git.eps: simple_release_git.svg + convert $< $@ + resource_management.png: resource_management.msc mscgen -T png -i $< -o $@ diff --git a/doc/images/release_git.svg b/doc/images/release_git.svg new file mode 100644 index 0000000..20b793d --- /dev/null +++ b/doc/images/release_git.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/images/simple_release_git.svg b/doc/images/simple_release_git.svg new file mode 100644 index 0000000..4b57c65 --- /dev/null +++ b/doc/images/simple_release_git.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/process-guide/Makefile.am b/doc/process-guide/Makefile.am new file mode 100644 index 0000000..54e2c1d --- /dev/null +++ b/doc/process-guide/Makefile.am @@ -0,0 +1,12 @@ +TARGET = $(top_srcdir)/doc/output/release-guide.html + +EXTRA_DIST = release-guide.adoc + +all-local: $(TARGET) + +$(TARGET): release-guide.adoc + @mkdir -p $(top_srcdir)/doc/output + asciidoc -b html5 -a icons -a toc2 -a max-width=55em --out-file=$@ $< + +clean-local: + rm -f $(TARGET) diff --git a/doc/process-guide/release-guide.adoc b/doc/process-guide/release-guide.adoc new file mode 100644 index 0000000..f5d29d2 --- /dev/null +++ b/doc/process-guide/release-guide.adoc @@ -0,0 +1,136 @@ +OpenDataPlane (ODP) Release-Guide +================================= +:toc: + +:numbered!: +[abstract] +Abstract +-------- +This document is intended to guide a new application developer in understanding +the git work flow of the project, it relates only to the ODP API work and its +supporting software reference implementation. + +Further details about ODP may be found at the http://opendataplane.org[ODP] +home page. + +:numbered: + +== Release Plan == +The point and Major (API) releases are on separate cycles with changes that are +potentially backwards incompatible happening at lower frequency. Generation +releases are significantly less frequent. The specific digits used for the +generation and version numbering are described in the ODP API Documentation. +The roles referenced in this document are defined in the +http://www.opendataplane.org/api-documentation/by-laws/[By-laws]. + +=== Patch to release flow === +Changes to the API are staged in api-next until they have been sufficiently +reviewed and have met the criteria for inclusion into master for the ODP API. +These new API changes are then staged in next until a release point in master +where a major release is to be made and applied atomically, this flow can be +seen in Figure 1. + +.Overview of the ODP git process +image::../images/simple_release_git.png[align="center"] + +Regular bug fixes, and implementation changes occur directly to master. + +== Branch acceptance criteria == +ODP has three branches one for general bug fixes and improvements on +linux-generic, testing and examples (master). The second branch is for API +development, it contains proposed API changes (api-next) before they are +committed to master. The third is a staging area (next) to gather api-next +cherry picked work so that it may be applied to master on release day, this can +be seen in detail in Figure 2. + +.Overview of the ODP git process +image::../images/release_git.png[align="center"] + +=== api-next === +acceptance criteria for patches to api-next (path 1): + +* code compiles +* no regressions introduced +* a new API definition in odp/include may be accepted without an implementation +or tests +* any change to the documentation in odp/include should by default be applied to +api-next but exceptions for simple fixes are allowed + +=== next === +acceptance criteria for patches from api-next to next (path 2): + +* code compiles +* no regressions introduced +* the new API has relevant validation tests and tests must pass in the CI loop +* all new APIs have to be approved by the Release Manager to be cherry picked +to next branch +* patches cannot be accepted directly into next + +=== master === +acceptance criteria for patches to master (path 4): + +* all changes that do not affect odp/include may be directly applied to master +** bug fixes +** improvements + +== Repository management == +The following describes the behavior to be expected in the branches of the +repository. + +All patches are acknowledged on the list as soon as they have been applied to +the repository. + +=== api-next === +* api-next is always rebased on top of master when there is a release point in +master +* an API change being accepted into api-next is not a guarantee that it will +one day make it into the released API. This is a staging branch and changes may +be reverted without ever being merged +* changes that introduce a regression in compilation or execution need to be +justified +* api-next is = latest master + these proposed API changes +* all patches that apply to the code in odp/include must be applied to api-next +first +* an applied patch that is later justified can be cherry picked to master +without waiting for a Major or Generation release if it is shown to not be a +backwards compatibility issue + +=== next === +* next is always rebased on top of master at each release point in master +* new APIs are cherry picked into next from api-next when approved by the +Release Manager and Maintainer + +=== master === +* tagging is only done when the Release Manager and Maintainers agree +* this branch is released at a period approximately once a month +* this branch will never have its history rewritten +* code is merged on release day from next to master, tagged and released as +atomically as possible +* the maintainer assures that there are not obvious regressions +* the maintainer generates the API change log +* the maintainer updates the version number +* the maintainer tags the master branch + +== Releases == +All releases are from master. + +They are tagged in the repository using the format +v... +There are three release types with differing frequencies and impact to the +applications. + +=== Generation releases === +A generation release indicates a major completion of work, and a possible +change in direction for the API. Same as for Major release plus they are +defined by the Steering committee. + +=== Major releases === +Major (API) releases are scheduled to be about once a +quarter, but when there is significant progress made they may be more frequent. + +=== Point releases === +General bug fixes and other non API altering changes are gathered and a release +made every month if sufficient change has accumulated. + +=== Implementation (Impl) === +Platform specific free form text relating to the version.