On Oct 19, 2011, at 4:28 PM, Itamar Turner-Trauring wrote:
>> To me, 3.x support in trunk is not really workable unless you drop
>> pre-2.6 compatibility. Bytes literals are pretty much required.
>> A possible workaround is to call a factory function that makes
>> an str into a bytes in 3.x (e.g. write B("xyz") everywhere instead of
>> b"xyz"), but that's quite ugly IMO, not to mention suboptimal.
>
> We're getting closer; we're going to drop Python 2.4 as soon as the next
> release is out. Still not up to 2.6, though.
For one thing:
What's the big problem with B("")? It does not strike me as particularly
problematic. We call plenty of functions at import time, I'm sure that it's
not going to impact performance much. Plus, it's very easy to fix with a
trivial regex when we do drop 2.5 support eventually: the expression evaluates
to the same thing. If anything, concern about the function call overhead will
simply encourage us to make more constant bytestrings module-level constants
instead of inline expressions, which is a plus if you ask me :).
>> Incompatibilities are a given when you switch between two different
>> data models. The incompatibilities don't have to be wire-level, but
>> they *will* occur at the higher level anyway.
>
> The thing that worries is me is unnecessary or harmful incompatibilities
> that are a result of misunderstanding (e.g. the banana thing, which was an
> unnecessary wire protocol change). Submitting patches would have the
> benefit of letting someone else help you make these decisions; it's
> unreasonable to expect you to become an expert on every single API in
> Twisted.
Nothing to say to this besides a big "+1". This is the whole point of the
review process: to make sure that appropriate knowledge is shared before
committing to a change.
>> Without wanting to sound unconstructive, the "right way" (the
>> "byte-sized" approach) does not sound workable. Some 3.x-related patches
>> (not mine) have been lingering for years, although they are trivial. And
>> these patches (mine and the others) are really the tip of iceberg.
>
> There aren't any python 3 patches in the review queue at the moment; do
> you have any specific tickets in mind? If they're ready to go they should
> have the "review" keyword set (if they haven't addressed review comments
> then that is why they aren't merged).
I should note also that our review queue has gotten to 0 tickets several times
since those tickets have last been in review, so things are getting through.
The problem here is that nobody is putting in the consistent work necessary to
get these patches through review and merged to trunk. Almost all the py3k
patches have been dropped off and then abandoned. The solution is not to give
up and abandon all the patches together, but rather to find some people to get
involved and continue participating in that work.
(That's not to say that I don't appreciate the effort involved in dropping
those patches off in the first place. I do. It also doesn't mean that people
shouldn't drop off patches if they're not going to finish them; they definitely
should. The original author doesn't necessarily have to be the one to do the
responding to feedback.)
It may seem easier right now to put them into a big pile and forget about that
process, but what happens once trunk has moved on? We don't make a lot of
incompatible changes, but that doesn't mean we don't change the implementation
of things quite a bit. Lots of work has gone on in core areas of Twisted
recently - including a near-total rewrite of TLS support - and many more such
changes are coming. The relative stability of Twisted as an API to depend on
says nothing about the stability of the code in terms of diffs continuing to
apply; and the larger the diff, the more likely it's going to run into
conflicts.
It's worth the extra effort to get the code into the mainline because when the
work is done, it's actually done: we continue to maintain that code moving
forward, and assuming that there is an appropriate buildslave (possibly one
with the 'rachet'-style reporting that exarkun just set up for pydoctor?), we
make sure that future changes won't undo the progress that has been made and
introduce more py3k warnings or test failures.
If the code isn't in the mainline, then instead of supporting your efforts, all
future maintenance undermines them. You'll have to put in lots of extra work
to keep your fork applying, and you'll have to do a bunch of work because any
changes will not take the py3 compatibility tests into account, so every new
module will be a new thing you have to clean up. Plus you don't get the
benefit of having each change tested extensively to make sure it doesn't break
anything unexpected, on some weird platform or configuration.
This work on the build infrastructure and release management and QA appears to
be invisible from the perspective of an individual change, but in reality it's
the plurality, if not the majority, of the work that goes into the project.
>> *Assuming* we find a clean solution to the bytes literal problem,
We've already got one, except perhaps for an unreasonably strict definition of
"clean" :-).
>> I could try to slice all of that into "byte-sized" patches into which I
>> inject version-checking boilerplate, but that would mean a large waste
>> of time and energy:
>> - for me, as I post dozens of small patches and have to follow up on
>> them, and wait for them to be checked in
You can choose the appropriate size of patches; you don't have to work on a
per-file basis; it would make more sense to choose a topic area than to just
submit individual one-liners as patches because that's what happens to be in a
single file.
>> - for you, as you have to review these patches without perhaps even
>> being Python 3 users yourselves, and without Python 3 compatibility
>> being on your priority list
>
> Most of us aren't Windows users either, but we still try to support
> Windows :)
Also, the issue is not the priority of python 3 support, but the priority of
reviewing incoming patches, which is always at the absolute top of our priority
list. As you can see from the scoring system on
<http://twistedmatrix.com/highscores/>, we value it more highly than anything
else.
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python