Return-Path: X-Original-To: apmail-hadoop-general-archive@minotaur.apache.org Delivered-To: apmail-hadoop-general-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E58A3F6CE for ; Thu, 25 Apr 2013 03:18:12 +0000 (UTC) Received: (qmail 44484 invoked by uid 500); 25 Apr 2013 03:18:11 -0000 Delivered-To: apmail-hadoop-general-archive@hadoop.apache.org Received: (qmail 43780 invoked by uid 500); 25 Apr 2013 03:18:05 -0000 Mailing-List: contact general-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: general@hadoop.apache.org Delivered-To: mailing list general@hadoop.apache.org Received: (qmail 43749 invoked by uid 99); 25 Apr 2013 03:18:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Apr 2013 03:18:04 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of shv.hadoop@gmail.com designates 209.85.217.169 as permitted sender) Received: from [209.85.217.169] (HELO mail-lb0-f169.google.com) (209.85.217.169) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Apr 2013 03:17:57 +0000 Received: by mail-lb0-f169.google.com with SMTP id p11so2384566lbi.28 for ; Wed, 24 Apr 2013 20:17:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:date:message-id:subject:from:to :content-type; bh=zpgj33FBuT3OOqKwpgc54dFtLTAxLYCLAfNTie8l5fA=; b=NxWgxWNaCD/qEc4mZoC95vGUIvCemgyhk1uY/OG3zY2dRh43+zLr1i4hfueeeBtdg2 vEmokpepRYNnxd61QxR5BwpLfGBKqBJLTi/Wbb7aU9VESrPA0cTG7NiLg+UpOkkp9o6A jdTNOyxRGNUeNBXM0f1FDQr6sCkqhnVfuxspY8SY06FbUq06OaAWiRjXhMamjZtoWxlk eFM5Q8wGO+V4czqiPcXaFSkHiYJJyyijEMkOQ9XNTNjvVh/gFaSfiX87jA7yh1+//GhR RbZhUirQRjslbVZA3pu1j1mP7JacBaKNEnkilBm+6qwzmWybYyzQdtxYNtAfxXVYjy1v PVsw== MIME-Version: 1.0 X-Received: by 10.112.161.38 with SMTP id xp6mr18835419lbb.32.1366859856841; Wed, 24 Apr 2013 20:17:36 -0700 (PDT) Received: by 10.152.26.35 with HTTP; Wed, 24 Apr 2013 20:17:36 -0700 (PDT) Date: Wed, 24 Apr 2013 20:17:36 -0700 Message-ID: Subject: Streamlining the Hadoop release process From: Konstantin Shvachko To: "general@hadoop.apache.org" Content-Type: multipart/alternative; boundary=001a11c264fe3992c404db26dc08 X-Virus-Checked: Checked by ClamAV on apache.org --001a11c264fe3992c404db26dc08 Content-Type: text/plain; charset=ISO-8859-1 Hi everybody, There was and is a number of discussions about Hadoop version compatibility, feature porting, stability. I think that many problems of Hadoop are the result of our flawed release processes and can be solved by streamlining the releases. It is a fact that current trunk turned into a junk-yard of partly implemented ideas at different stages of the development. Saying this not because trunk should not evolve, but mostly because there are no any plans on the horizon to release anything from trunk and therefore nobody cares. Thus now in order for A feature to make into A release the former should be ported into an earlier branch. And that becomes a controversy because a) most major features contain incompatible changes, and b) they introduce massive changes, which break reliability This destabilizes the release canceling former efforts to fix bugs and provide working environment for the upstream projects. I mean stabilizing and adding features are mutually exclusive activities. This is in part why Hadoop 2 stabilization effort is perpetual. The solution imho is to release instead of backporting. That is, produce a new release for every or a few new major feature. Say, snapshots would be a new release, Windows support another, InodeIDs or local reads optimization would have been the next, etc. As the community we should release even if that particular release is not planned to be stable, which we do anyway. Stabilization requires meticulous work and rather stable code base. This was done for Hadoop 1 and Hadoop 0.23 as the most recent examples. In fact we cannot predict in advance which branch will become stable until it is somewhere in production, which is beyond the scope of control of this community. My practical suggestions are: 1. Produce a series of feature releases to catch up branch-2 with trunk. We can prioritize features in general or let the release manager to decide which feature to pick up from trunk. Version numbering is also up for discussion. I would call them 2.x and reserve the minor numbers for subsequent stabilization bug-fix-releases. 2. Build new features in dev-branches until they are done. We do it now, but should enforce more. 3. After branch-2 is caught up with trunk release from trunk by merging a few new dev-branches. Releasing with 2-3 new features should be the golden rule. I would call these releases 3.x 4. Disallow backporting features that have not been released from trunk. This is VERY important for forward going release process. 5. I'd like to propose to move the latest stable version from 1.0.X to 0.23.7. I think that running a release in production for 9 months on 40K nodes is consistent with the definition of stable. Some ideas for discussion. Thanks, --Konstantin P.S. This is not to preempt discussion on stabilizing 2.0.5 started by Roman. I am just not sure why we call it stabilization and 2.0.5 and betta, if incompatible and new features has already been committed to the branch. BTW as an illustration to my observations above. --001a11c264fe3992c404db26dc08--