On 2008-05-28 19:08, Bill Janssen wrote:
I'm beginning to wonder whether I'm the only one who cares about the Python 2.x branch not getting cluttered up with artifacts caused by a broken forward merge strategy.
I share your concern. Seems to me that perhaps (not sure, but perhaps) the rush to back-port from 3.x, and the concern about minimizing pain of moving from 2.x to 3.x, has become the tail wagging the dog.
If the need to be able to forward merge changes from the 2.x trunk to the 3.x branch is the only reason for the current approach, then we need to find a better procedure for getting patches to 2.x forwarded to 3.x.
I believe that everyone is aware that 3.x breaks things and that's fine.
However, the reason for introducing such breakage in 3.x is that users have the option to decide whether and when to switch to the new major version.
Being able to play with 3.x features in 2.x is nice, but I wouldn't really consider those essential for 2.x. It certainly doesn't warrant causing major problems in the 2.x releases.
The module renaming backport was one example (which was undone again), the C API renaming is another. I expect more such features to be backported from 3.x to 2.x (even though I don't really think it's worth the trouble) and since this always means that changes have to applied in two worlds, we'll need a better process for getting changes in one major release ported to the other.
Simply tweaking 2.x into shape so that the rather simple minded SVN merge command works, isn't a good enough procedure for this.
That's why I suggested to use an intermediate form or branch for the merging - one that implements the 2.x with all renaming and syntax fixing applied.
* reduce the number of merge conflicts since the renaming would already have happened
* reduce the patch sizes that have to be applied to 3.x in order to stay in sync with 2.x
* result in a tool chain that makes it easier for all Python users to port their code to 3.x
* simplify renaming or reorg of modules, functions, methods and C APIs without requiring major changes on either side