On Thu, Jul 10, 2014 at 10:37 PM, Glyph Lefkowitz firstname.lastname@example.org wrote:
While I currently believe that Tubes's API has firmed up and its current API is suitable for general purpose use, I have believed that at various points in the past as well when it was completely wrong. This sentiment is very much of the "this time for sure!" variety, and I will not have confidence that it's actually complete until we have made it all the way through the documentation, examples, and testing of a full proof of concept - at which point I believe it would be suitable to include in a Twisted release anyway.
I think this is a wrong approach. When people say "You never get it right the first time", I don't think they mean the first time they write it, but rather the first time somebody else uses it. You'll never be able to release something perfect.
So I am keenly interested in ways to address this problem rather than to work around it. If we are going to try to develop new big Twisted features outside of Twisted, maybe that's a good idea, but then we need a modified code-review policy for accepting those projects back in where they going to be subjected to code-review standards during development rather than in one giant burst at the end.
Now you're talking about the real issue. It's almost impossible to write anything non-trivial in Twisted nowadays. One part is the compatibility policy, with the whole "Who knows who may subclass that thing. Don't ever change an attribute!". Overall we have a development process averses to change. That's why tubes isn't released yet: you know that if we put it out there we won't be able to fix it. For the same reasons we haven't been able to fix Web or Conch.
If the answer is to put more stuff outside, I think it's rather sad. I'd hope it would be to make the development process more lightweight.