Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 64F6D10E69 for ; Sun, 27 Oct 2013 18:37:01 +0000 (UTC) Received: (qmail 74019 invoked by uid 500); 27 Oct 2013 18:36:57 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 73977 invoked by uid 500); 27 Oct 2013 18:36:48 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 73952 invoked by uid 99); 27 Oct 2013 18:36:45 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 27 Oct 2013 18:36:45 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of kxepal@gmail.com designates 209.85.212.170 as permitted sender) Received: from [209.85.212.170] (HELO mail-wi0-f170.google.com) (209.85.212.170) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 27 Oct 2013 18:36:39 +0000 Received: by mail-wi0-f170.google.com with SMTP id ex4so572897wid.5 for ; Sun, 27 Oct 2013 11:36:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=/zSFxlkZaUHpTCKjt5wdbMN1zFJQF7rRq2V7Exp5U4w=; b=bSc28GmKyKwQqFcMM1w5SvCtHUbpj/3W9dR3vpvVpSO/moYE5bv9KsvVT9NI4pbw0I ZQeYLETysVUR6Pz0IiJh46My1eIAiezdHKcJGL2xsUqxousLshCUNeE2MLaX25ZqgBtz P523iPGqKTcUsVHq85lX4E7UQ52kutzn8VpS3lkL/WOcuu7lB4whl0dNdQ+KvImuP9WE WUgEQNW9bY6IYGmgfs/di1i4ZFL49brNl/831eqSJWmXgqm6xlU47G3TDCnEWiOJ3MUi Yay2z+qwEDy6N9V933C01HqtolMfaGRDguv0vZspgFXi+PbZBt0P4deU2mwewI9wybVJ FYWg== MIME-Version: 1.0 X-Received: by 10.180.105.194 with SMTP id go2mr6045659wib.39.1382898979493; Sun, 27 Oct 2013 11:36:19 -0700 (PDT) Received: by 10.180.74.208 with HTTP; Sun, 27 Oct 2013 11:36:19 -0700 (PDT) In-Reply-To: References: <7147589D-AB40-4217-AB3B-EF687879D8E7@apache.org> Date: Sun, 27 Oct 2013 22:36:19 +0400 Message-ID: Subject: Re: [PROPOSAL] tag our commits From: Alexander Shorin To: "dev@couchdb.apache.org" Content-Type: text/plain; charset=UTF-8 X-Virus-Checked: Checked by ClamAV on apache.org On Sun, Oct 27, 2013 at 9:05 PM, Benoit Chesneau wrote: > On Sun, Oct 27, 2013 at 3:19 PM, Andy Wenk wrote: > >> +1 for Benoits proposal. >> >> Regarding "best practices" or "subprojects" mentioned, I would like to >> share what we do at work. We have destroyed the master branch from our main >> applications. Our customer has around 5 bigger releases each year. So we >> started to create the branches, 2013_april, 2013_july, 2013_september and >> so on. These are our "main" branches we create feature branches from. >> Merging is always possible from lower to higher month. >> >> So deriving from this scenario (what is surely different from CouchDB's >> requirements) it "could" be an idea to create three main branches like >> doc_master, ui_master and core_master in the same repository. On the other >> hand, I guess most of the contributors to a git based project expect to >> have a master branch. >> > > mmm would work if we make different release for each components imo (which > isn't bad idea - having a version for the doc and the ui - ). If we go for > this path I would go for a different repo though. no need for submodules > imo, a script that collect the result of each repo during a formal couchdb > release would be enough. This approach looks fine until these components number is small and you keeps their backward-compatibility well. Otherwise this will create versions hell and makes users support very hard. A bit experience from another open source project: Miranda IM/NG. This is highly configurable multiprotocol IM with rich plugins system, but Windows-only. In Miranda IM there was used same version both for core and main plugins. That was fine for a first sight, but since each module had his own development history, that created versions mess: some modules received massive version bump for several minor versions, some were downgraded (as by version number). Also, this version now was used not to track modules development history, but to bind them for specific project release. In other words, plugin may receive minor version bump while nothing had changed for him. Fake upgrades sometimes makes users cry. In Miranda NG project (new fork that keeps alive and rocks) we solved this problem very nice: all plugins are stored within same repository as main project itself and while plugins uses their own version history, main project uses X.Y.Z.revision (it's svn thing) version to easily figure for what repository state (aka commit) you have issues. Also, we strongly do recommend to update plugins with core modules to negotiate any possible problems. This really solves a lot problems with compatibility and not only. TL;DR to go on this path there is need to think twice for all possible problems and how they could be solved with easy (e.g. plugins updater helps much!). P.S. s/plugins/submodules/ is you'd like to. I feel that after Rcouch merge this question will be raised again. -- ,,,^..^,,,