<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 19, 2016 at 11:39 AM, Kaushal M <span dir="ltr">&lt;<a href="mailto:kshlmster@gmail.com" target="_blank">kshlmster@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Thu, May 19, 2016 at 11:35 AM, Kaushal M &lt;<a href="mailto:kshlmster@gmail.com">kshlmster@gmail.com</a>&gt; wrote:<br>
&gt; On Thu, May 19, 2016 at 11:29 AM, Raghavendra Talur &lt;<a href="mailto:rtalur@redhat.com">rtalur@redhat.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Thu, May 19, 2016 at 11:13 AM, Kaushal M &lt;<a href="mailto:kshlmster@gmail.com">kshlmster@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I&#39;m in favour of a stable release every 2 months and an LTS once a<br>
&gt;&gt;&gt; year (option 2).<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; +1<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; As Oleksander already suggested, I&#39;m in favour of having well defined<br>
&gt;&gt;&gt; merge windows, freeze dates and testing period.<br>
&gt;&gt;&gt; (A slightly modified timeline from Oleksander&#39;s proposal follows)<br>
&gt;&gt;&gt; For every 2 month window,<br>
&gt;&gt;&gt; - 1 month of development (merge window). New features will not be<br>
&gt;&gt;&gt; accepted post this period.<br>
&gt;&gt;&gt; - At the end of the development period a release-candidate 1 is tagged.<br>
&gt;&gt;&gt; - A 1 month testing/bug-fixing window follows. This time is for<br>
&gt;&gt;&gt; testing and fixing bugs found.<br>
&gt;&gt;&gt;  Feature development and reviews can happen during this period on<br>
&gt;&gt;&gt; gerrit, but nothing gets merged. Merges will be held till the next<br>
&gt;&gt;&gt; merge window.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; This means the branching is not done at the end of merge window and the<br>
&gt;&gt; patches will not be merged even on the master branch. Is that right?<br>
&gt;<br>
&gt; There will be no branching at all (except for the LTS release). We<br>
&gt; have just 2 branches,<br>
&gt; one LTS and one stable.<br>
&gt; All features (even those partially developed) can get merged in during<br>
&gt; the merge window.<br>
&gt; During the stability window, the partially developed and unstable<br>
&gt; features get disabled.<br>
&gt; This requires us to properly implement a feature flags framework,<br>
&gt; that allows features to be selectively compiled.<br>
<br>
</div></div>Just to be more complete, if any urgent fixes are required for any<br>
released version,<br>
an emergency branch will be created from the tag for the release,<br>
which will only<br>
contain the required fixes. These fixes will have to land on the<br>
stable branch before<br>
being backported to a emergency branch.<br></blockquote><div><br></div><div>I would prefer if this was relaxed a bit. Rather than placing a requirement of a bug fix in a released branch to be backported it to LTS, I would prefer having it in *next* release is ok(i.e merging in stable branch).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; - At least 2 more release-candidates will be release once every fortnight<br>
&gt;&gt;&gt; - The final release-candidate becomes the release if it passes all our<br>
&gt;&gt;&gt; tests.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; One of the 6 releases of the year will become a LTS release.<br>
&gt;&gt;&gt; The 2 month window for this release will mainly be targeted at making<br>
&gt;&gt;&gt; the release stable.<br>
&gt;&gt;&gt; New features should be minimal for this release.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I really like this point. Taking 3.8 as a LTS release this would mean new<br>
&gt;&gt; features for 3.14 release would not be encouraged.<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; During every 2 month window, the LTS release will get any required bug<br>
&gt;&gt;&gt; fixes and stability improvements backported.<br>
&gt;&gt;&gt; For fix to be backported it needs to be present in a stable release.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; +1<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ~kaushal<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Wed, May 18, 2016 at 11:46 PM, Atin Mukherjee &lt;<a href="mailto:amukherj@redhat.com">amukherj@redhat.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt; A bit late but better than never. My vote is for option 2.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; ~Atin<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; On 05/18/2016 07:19 PM, Vijay Bellur wrote:<br>
&gt;&gt;&gt; &gt;&gt; [Adding gluster-users]<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; I would like to wrap this poll by the next community meeting on 25th<br>
&gt;&gt;&gt; &gt;&gt; May. Can you please weigh in with your opinions on the options<br>
&gt;&gt;&gt; &gt;&gt; provided by Aravinda?<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Thanks!<br>
&gt;&gt;&gt; &gt;&gt; Vijay<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; On Fri, May 13, 2016 at 4:16 AM, Aravinda &lt;<a href="mailto:avishwan@redhat.com">avishwan@redhat.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Based on the discussion in last community meeting and previous<br>
&gt;&gt;&gt; &gt;&gt;&gt; discussions,<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; 1. Too frequent releases are difficult to manage.(without dedicated<br>
&gt;&gt;&gt; &gt;&gt;&gt; release<br>
&gt;&gt;&gt; &gt;&gt;&gt; manager)<br>
&gt;&gt;&gt; &gt;&gt;&gt; 2. Users wants to see features early for testing or POC.<br>
&gt;&gt;&gt; &gt;&gt;&gt; 3. Backporting patches to more than two release branches is pain<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Enclosed visualizations to understand existing release and support<br>
&gt;&gt;&gt; &gt;&gt;&gt; cycle and<br>
&gt;&gt;&gt; &gt;&gt;&gt; proposed alternatives.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Each grid interval is 6 months<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Green rectangle shows supported release or LTS<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Black dots are minor releases till it is supported(once a month)<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Orange rectangle is non LTS release with minor releases(Support ends<br>
&gt;&gt;&gt; &gt;&gt;&gt; when<br>
&gt;&gt;&gt; &gt;&gt;&gt; next version released)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Enclosed following images<br>
&gt;&gt;&gt; &gt;&gt;&gt; 1. Existing Release cycle and support plan(6 months release cycle, 3<br>
&gt;&gt;&gt; &gt;&gt;&gt; releases supported all the time)<br>
&gt;&gt;&gt; &gt;&gt;&gt; 2. Proposed alternative 1 - One LTS every year and non LTS stable<br>
&gt;&gt;&gt; &gt;&gt;&gt; release<br>
&gt;&gt;&gt; &gt;&gt;&gt; once in every 2 months<br>
&gt;&gt;&gt; &gt;&gt;&gt; 3. Proposed alternative 2 - One LTS every year and non LTS stable<br>
&gt;&gt;&gt; &gt;&gt;&gt; release<br>
&gt;&gt;&gt; &gt;&gt;&gt; once in every 3 months<br>
&gt;&gt;&gt; &gt;&gt;&gt; 4. Proposed alternative 3 - One LTS every year and non LTS stable<br>
&gt;&gt;&gt; &gt;&gt;&gt; release<br>
&gt;&gt;&gt; &gt;&gt;&gt; once in every 4 months<br>
&gt;&gt;&gt; &gt;&gt;&gt; 5. Proposed alternative 4 - One LTS every year and non LTS stable<br>
&gt;&gt;&gt; &gt;&gt;&gt; release<br>
&gt;&gt;&gt; &gt;&gt;&gt; once in every 6 months (Similar to existing but only alternate one<br>
&gt;&gt;&gt; &gt;&gt;&gt; will<br>
&gt;&gt;&gt; &gt;&gt;&gt; become LTS)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Please do vote for the proposed alternatives about release intervals<br>
&gt;&gt;&gt; &gt;&gt;&gt; and LTS<br>
&gt;&gt;&gt; &gt;&gt;&gt; releases. You can also vote for the existing plan.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Do let me know if I missed anything.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; regards<br>
&gt;&gt;&gt; &gt;&gt;&gt; Aravinda<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; On 05/11/2016 12:01 AM, Aravinda wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; I couldn&#39;t find any solution for the backward incompatible changes. As<br>
&gt;&gt;&gt; &gt;&gt;&gt; you<br>
&gt;&gt;&gt; &gt;&gt;&gt; mentioned this model will not work for LTS.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; How about adopting this only for non LTS releases? We will not have<br>
&gt;&gt;&gt; &gt;&gt;&gt; backward<br>
&gt;&gt;&gt; &gt;&gt;&gt; incompatibility problem since we need not release minor updates to non<br>
&gt;&gt;&gt; &gt;&gt;&gt; LTS<br>
&gt;&gt;&gt; &gt;&gt;&gt; releases.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; regards<br>
&gt;&gt;&gt; &gt;&gt;&gt; Aravinda<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; On 05/05/2016 04:46 PM, Aravinda wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; regards<br>
&gt;&gt;&gt; &gt;&gt;&gt; Aravinda<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; On 05/05/2016 03:54 PM, Kaushal M wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; On Thu, May 5, 2016 at 11:48 AM, Aravinda &lt;<a href="mailto:avishwan@redhat.com">avishwan@redhat.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Sharing an idea to manage multiple releases without maintaining<br>
&gt;&gt;&gt; &gt;&gt;&gt; multiple release branches and backports.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; This idea is heavily inspired by the Rust release model(you may feel<br>
&gt;&gt;&gt; &gt;&gt;&gt; exactly same except the LTS part). I think Chrome/Firefox also follows<br>
&gt;&gt;&gt; &gt;&gt;&gt; the same model.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; <a href="http://blog.rust-lang.org/2014/10/30/Stability.html" rel="noreferrer" target="_blank">http://blog.rust-lang.org/2014/10/30/Stability.html</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feature Flag:<br>
&gt;&gt;&gt; &gt;&gt;&gt; --------------<br>
&gt;&gt;&gt; &gt;&gt;&gt; Compile time variable to prevent compiling featurerelated code when<br>
&gt;&gt;&gt; &gt;&gt;&gt; disabled. (For example, ./configure--disable-geo-replication<br>
&gt;&gt;&gt; &gt;&gt;&gt; or ./configure --disable-xml etc)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Plan<br>
&gt;&gt;&gt; &gt;&gt;&gt; -----<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Nightly build with all the features enabled(./build --nightly)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; - All new patches will land in Master, if the patch belongs to a<br>
&gt;&gt;&gt; &gt;&gt;&gt;    existing feature then it should be written behind that feature<br>
&gt;&gt;&gt; &gt;&gt;&gt; flag.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; - If a feature is still work in progress then it will be only enabled<br>
&gt;&gt;&gt; &gt;&gt;&gt; in<br>
&gt;&gt;&gt; &gt;&gt;&gt;    nightly build and not enabled in beta or stable builds.<br>
&gt;&gt;&gt; &gt;&gt;&gt;    Once the maintainer thinks the feature is ready for testing then<br>
&gt;&gt;&gt; &gt;&gt;&gt; that<br>
&gt;&gt;&gt; &gt;&gt;&gt;    feature will be enabled in beta build.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Every 6 weeks, beta branch will be created by enabling all the<br>
&gt;&gt;&gt; &gt;&gt;&gt;    features which maintainers thinks it is stable and previous beta<br>
&gt;&gt;&gt; &gt;&gt;&gt;    branch will be promoted as stable.<br>
&gt;&gt;&gt; &gt;&gt;&gt;    All the previous beta features will be enabled in stable unless it<br>
&gt;&gt;&gt; &gt;&gt;&gt;    is marked as unstable during beta testing.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; - LTS builds are same as stable builds but without enabling all the<br>
&gt;&gt;&gt; &gt;&gt;&gt;    features. If we decide last stable build will become LTS release,<br>
&gt;&gt;&gt; &gt;&gt;&gt;    then the feature list from last stable build will be saved as<br>
&gt;&gt;&gt; &gt;&gt;&gt;    `features-release-&lt;NUM&gt;.yaml`, For example:<br>
&gt;&gt;&gt; &gt;&gt;&gt;    features-release-3.9.yaml`<br>
&gt;&gt;&gt; &gt;&gt;&gt;    Same feature list will be used while building minor releases for<br>
&gt;&gt;&gt; &gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt;&gt;    LTS. For example, `./build --stable --features<br>
&gt;&gt;&gt; &gt;&gt;&gt; features-release-3.8.yaml`<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Three branches, nightly/master, testing/beta, stable<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; To summarize,<br>
&gt;&gt;&gt; &gt;&gt;&gt; - One stable release once in 6 weeks<br>
&gt;&gt;&gt; &gt;&gt;&gt; - One Beta release once in 6 weeks<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Nightly builds every day<br>
&gt;&gt;&gt; &gt;&gt;&gt; - LTS release once in 6 months or 1 year, Minor releases once in 6<br>
&gt;&gt;&gt; &gt;&gt;&gt; weeks.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Advantageous:<br>
&gt;&gt;&gt; &gt;&gt;&gt; -------------<br>
&gt;&gt;&gt; &gt;&gt;&gt; 1. No more backports required to different release branches.(only<br>
&gt;&gt;&gt; &gt;&gt;&gt;     exceptional backports, discussed below)<br>
&gt;&gt;&gt; &gt;&gt;&gt; 2. Non feature Bugfix will never get missed in releases.<br>
&gt;&gt;&gt; &gt;&gt;&gt; 3. Release process can be automated.<br>
&gt;&gt;&gt; &gt;&gt;&gt; 4. Bugzilla process can be simplified.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Challenges:<br>
&gt;&gt;&gt; &gt;&gt;&gt; ------------<br>
&gt;&gt;&gt; &gt;&gt;&gt; 1. Enforcing Feature flag for every patch<br>
&gt;&gt;&gt; &gt;&gt;&gt; 2. Tests also should be behind feature flag<br>
&gt;&gt;&gt; &gt;&gt;&gt; 3. New release process<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Backports, Bug Fixes and Features:<br>
&gt;&gt;&gt; &gt;&gt;&gt; ----------------------------------<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Release bug fix - Patch only to Master, which will be available in<br>
&gt;&gt;&gt; &gt;&gt;&gt;    next beta/stable build.<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Urgent bug fix - Patch to Master and Backport to beta and stable<br>
&gt;&gt;&gt; &gt;&gt;&gt;    branch, and early release stable and beta build.<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Beta bug fix - Patch to Master and Backport to Beta branch if<br>
&gt;&gt;&gt; &gt;&gt;&gt; urgent.<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Security fix - Patch to Master, Beta and last stable branch and<br>
&gt;&gt;&gt; &gt;&gt;&gt; build<br>
&gt;&gt;&gt; &gt;&gt;&gt;    all LTS releases.<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Features - Patch only to Master, which will be available in<br>
&gt;&gt;&gt; &gt;&gt;&gt;    stable/beta builds once feature becomes stable.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; FAQs:<br>
&gt;&gt;&gt; &gt;&gt;&gt; -----<br>
&gt;&gt;&gt; &gt;&gt;&gt; - Can a feature development take more than one release cycle(6 weeks)?<br>
&gt;&gt;&gt; &gt;&gt;&gt; Yes, the feature will be enabled only in nightly build and not in<br>
&gt;&gt;&gt; &gt;&gt;&gt; beta/stable builds. Once the feature is complete mark it as<br>
&gt;&gt;&gt; &gt;&gt;&gt; stable so that it will be included in next beta build and stable<br>
&gt;&gt;&gt; &gt;&gt;&gt; build.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; ---<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Do you like the idea? Let me know what you guys think.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; This reduces the number of versions that we need to maintain, which I<br>
&gt;&gt;&gt; &gt;&gt;&gt; like.<br>
&gt;&gt;&gt; &gt;&gt;&gt; Having official test (beta) releases should help get features out to<br>
&gt;&gt;&gt; &gt;&gt;&gt; testers hand faster,<br>
&gt;&gt;&gt; &gt;&gt;&gt; and get quicker feedback.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; One thing that&#39;s still not quite clear to is the issue of backwards<br>
&gt;&gt;&gt; &gt;&gt;&gt; compatibility.<br>
&gt;&gt;&gt; &gt;&gt;&gt; I&#39;m still thinking it thorough and don&#39;t have a proper answer to this<br>
&gt;&gt;&gt; &gt;&gt;&gt; yet.<br>
&gt;&gt;&gt; &gt;&gt;&gt; Would a new release be backwards compatible with the previous release?<br>
&gt;&gt;&gt; &gt;&gt;&gt; Should we be maintaining compatibility with LTS releases with the<br>
&gt;&gt;&gt; &gt;&gt;&gt; latest release?<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Each LTS release will have seperate list of features to be enabled. If<br>
&gt;&gt;&gt; &gt;&gt;&gt; we<br>
&gt;&gt;&gt; &gt;&gt;&gt; make any breaking changes(which are not backward compatible) then it<br>
&gt;&gt;&gt; &gt;&gt;&gt; will<br>
&gt;&gt;&gt; &gt;&gt;&gt; affect LTS releases as you mentioned. But we should not break<br>
&gt;&gt;&gt; &gt;&gt;&gt; compatibility<br>
&gt;&gt;&gt; &gt;&gt;&gt; unless it is major version change like 4.0. I have to workout how we<br>
&gt;&gt;&gt; &gt;&gt;&gt; can<br>
&gt;&gt;&gt; &gt;&gt;&gt; handle backward incompatible changes.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; With our current strategy, we at least have a long term release<br>
&gt;&gt;&gt; &gt;&gt;&gt; branch,<br>
&gt;&gt;&gt; &gt;&gt;&gt; so we get some guarantees of compatibility with releases on the same<br>
&gt;&gt;&gt; &gt;&gt;&gt; branch.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; As I understand the proposed approach, we&#39;d be replacing a stable<br>
&gt;&gt;&gt; &gt;&gt;&gt; branch with the beta branch.<br>
&gt;&gt;&gt; &gt;&gt;&gt; So we don&#39;t have a long-term release branch (apart from LTS).<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Stable branch is common for LTS releases also. Builds will be<br>
&gt;&gt;&gt; &gt;&gt;&gt; different<br>
&gt;&gt;&gt; &gt;&gt;&gt; using different list of features.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Below example shows stable release once in 6 weeks, and two LTS<br>
&gt;&gt;&gt; &gt;&gt;&gt; releases in<br>
&gt;&gt;&gt; &gt;&gt;&gt; 6 months gap(3.8 and 3.12)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; LTS 1 : 3.8    3.8.1  3.8.2  3.8.3   3.8.4   3.8.5...<br>
&gt;&gt;&gt; &gt;&gt;&gt; LTS 2 :                              3.12    3.12.1...<br>
&gt;&gt;&gt; &gt;&gt;&gt; Stable: 3.8    3.9    3.10   3.11    3.12    3.13...<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; A user would be upgrading from one branch to another for every<br>
&gt;&gt;&gt; &gt;&gt;&gt; release.<br>
&gt;&gt;&gt; &gt;&gt;&gt; Can we sketch out how compatibility would work in this case?<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; User will not upgrade from one branch to other branch, If user<br>
&gt;&gt;&gt; &gt;&gt;&gt; interested in<br>
&gt;&gt;&gt; &gt;&gt;&gt; stable channel then upgrade once in 6 weeks. (Same as minor update in<br>
&gt;&gt;&gt; &gt;&gt;&gt; current release style)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; This approach work well for projects like Chromium and Firefox, single<br>
&gt;&gt;&gt; &gt;&gt;&gt; system apps<br>
&gt;&gt;&gt; &gt;&gt;&gt;   which generally don&#39;t need to be compatible with the previous<br>
&gt;&gt;&gt; &gt;&gt;&gt; release.<br>
&gt;&gt;&gt; &gt;&gt;&gt; I don&#39;t understand how the Rust  project uses this (I am yet to read<br>
&gt;&gt;&gt; &gt;&gt;&gt; the linked blog post),<br>
&gt;&gt;&gt; &gt;&gt;&gt; as it requires some sort of backwards compatibility. But it too is a<br>
&gt;&gt;&gt; &gt;&gt;&gt; single system app,<br>
&gt;&gt;&gt; &gt;&gt;&gt; and doesn&#39;t have the compatibility problems we face.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Gluster is a distributed system, that can involve multiple different<br>
&gt;&gt;&gt; &gt;&gt;&gt; versions interacting with each other.<br>
&gt;&gt;&gt; &gt;&gt;&gt; This is something we need to think about.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; I need to think about compatibility, What new problems about the<br>
&gt;&gt;&gt; &gt;&gt;&gt; compatibility with this approach compared to our existing release<br>
&gt;&gt;&gt; &gt;&gt;&gt; plan?<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; We could work out some sort of a solution for this though.<br>
&gt;&gt;&gt; &gt;&gt;&gt; It might be something very obvious I&#39;m missing right now.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; ~kaushal<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt;&gt; regards<br>
&gt;&gt;&gt; &gt;&gt;&gt; Aravinda<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt;&gt; Gluster-devel mailing list<br>
&gt;&gt;&gt; &gt;&gt;&gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt;&gt;&gt; &gt;&gt;&gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt;&gt; Gluster-devel mailing list<br>
&gt;&gt;&gt; &gt;&gt;&gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt;&gt;&gt; &gt;&gt;&gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt;&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; Gluster-users mailing list<br>
&gt;&gt;&gt; &gt;&gt; <a href="mailto:Gluster-users@gluster.org">Gluster-users@gluster.org</a><br>
&gt;&gt;&gt; &gt;&gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-users" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-users</a><br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt; &gt; Gluster-devel mailing list<br>
&gt;&gt;&gt; &gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt;&gt;&gt; &gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Gluster-devel mailing list<br>
&gt;&gt;&gt; <a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
&gt;&gt;&gt; <a href="http://www.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://www.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
</div></div></blockquote></div><br></div></div>