On Aug 12, 2013, at 1:32 PM, James Peach <jpe...@apache.org> wrote:

> On Aug 12, 2013, at 12:22 PM, Leif Hedstrom <zw...@apache.org> wrote:
> 
> Yes. The goal here is to make the release reliable and predictable so that 
> upgrading is not a scary experience or a lot of work.
> 
>> 
>> Also,  how do we deal with incompatibility changes?
> 
> Configurations and data formats should be automatically upgraded. Everything 
> would need to be release noted thoroughly.

Wow, that's a humongous pain in the ass to deal with. I've done this before 
(Mozilla) and it truly sucks big time to have to deal with this :-/.

Particularly dealing with live upgrading of the cache would be a monumental 
task, and *incredibly* risky.

I can right now say I'm hugely -1 on this idea. To put it bluntly, I think we'd 
kill ourselves and the project if we tried. ;)


> 
>> Or are you proposing that we from now on, never make anything incompatible? 
>> Incompatible he
>>      * An API needs to be deprecated (and removed) in order to fix / change 
>> something significant. For example, the new cache key proposal comes to mind.
> 
> Mark as deprecated, then remove once the support window has passed.

But I'm missing something then. If there's a support window, you are allowing 
incompatible changes?  What does the support window define? "If you are running 
a version older then <n> months, we'll not support you upgrading to this 
version" ?

> 
>>      * New configuration file format(s). [This might be possible to make 
>> compatible, by preserving all old config formats as well as the new ones].
> 
> Automatic upgrade tools.

These upgrade tools runs as part of starting traffic_server every time you 
start it ? Meaning, I deploy my old configs, and a new binary, and suddenly the 
configs in the /etc/  directory are modified for me? That seems like a 
non-starter already, considering that deployment state is not the same as 
runtime state.

If you mean providing tools that upgrades my configs, I make new config 
packages, and push that in conjunction with a binary update, then that's not 
compatible, right ? Compatible here would imply I can replace the binaries 
only, and things will just magically work.


> 
>>      * Remove the incompatibility branch and release cycle. There's only 
>> master and the release branch.
>>      * Define hard release dates (say, 9/1/2013, 12/1/2013, 3/1/2013 etc.)
>> 
>> Does that sum it up ?
> 
> Pretty much. I think the only way a rapid release cycle can work is if there 
> is confidence that upgrading never breaks. IMHO, this is a good thing to have 
> independent of the release process, but it's not necessarily easy to achieve. 
> I think that fixed release dates focus the mind and make the process more 
> predictable.

I agree 100% that having backward compatibility can be nice. I think it opens 
up an enormous can of worm, that will make our project impossible to work with 
(but, that's just my biased, unscientific opinion, please prove me wrong). This 
is why the proposal had the additional release cycle for incompatible changes, 
with a longer release train (say, 1 / year).

I think the fixed dates is a very minor issue in comparison to the 
compatibility ideas. I personally think it's a step in the wrong direction (the 
rest of the OpenSource world is moving towards agile methodologies), but I 
would not oppose fixed release dates if that's the consensus of the community. 
It certainly does make the release process predictable.

Cheers,

-- leif

Reply via email to