On Apr 2, 2015, at 11:36 AM, Mai Haohui <ricet...@gmail.com> wrote:

> Hi Allen,
> 
> Thanks for driving this. Just some quick questions:
> 
>>>       Removing changes.txt, relnotes.py, etc from branch-2 would be an 
>>> incompatible change.  Pushing aside the questions of that document’s 
>>> quality (hint: lots of outright lying and missing several hundred jiras), 
>>> it's effectively an interface in used by quite a few folks.
> 
> Why removing CHANGES.txt  is an incompatible change? Why CHANGES.txt
> is an interface? Can you give some examples?

        With my end user ops hat on, for years I'd often run scripts over 
CHANGES.TXT to pull key things in releases including to get extra metadata that 
wasn’t in that file and reformat for my users to digest.  (especially since the 
release notes weren’t published with the release tar and—let’s be honest--were 
mostly indecipherable heaps of crap to the point that even the RM’s never 
bothered to really look at them...) CHANGES.txt was useful to get the base 
dataset, esp in the days before JIRA’s REST interface.

        It is/was, in essence, an interface.

> It looks like that the meaning of incompatibility is overloaded -- at
> the very least, in
> http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Compatibility.html,
> compatibility means source and binary compatibility.

        FWIW, removing relnotes.py is definitely covered by that document.

> At least to me that CHANGES.txt is not part of the contract of
> compatibility. It would be great to see this patch to occur in
> branch-2.

        But yes, I mean beyond that.  It’s a ‘de facto’ standard given how many 
people use it for critical information about what we’ve released.  This is 
about managing user expectations and not just what’s convenient for us.  You 
know, that whole community that we always mention but seem to stomp all over.  
Just because we CAN do something doesn’t mean we SHOULD.

        An excellent example of this is the HADOOP_OPTS variable.  I’d LOVE 
LOVE LOVE to kick it to the curb.  It’s the source of a LOT of end user bugs 
and problematic areas in the shell code.  During the rewrite +  the above 
rules, I had the opportunity and bylaws standing to do so.  But I didn’t 
because it’d just flat out break too much stuff, known and unknown.

        It’s ok to be conservative when it comes to change.

Reply via email to