Description
One of the great strengths of Python is the incredible richness of its libraries. The standard library is already fairly good, and when you take into account the third-party ecosystem, Python’s is up there with the best in the world. Despite that, however, a great deal of effort has been wasted to get to this place. Consider Python’s HTTP ecosystem, which has many fantastic libraries. Unfortunately, there’s a stunning lack of code re-use across them: different HTTP libraries often have essentially no common code at all, despite doing extremely similar jobs. Sometimes this occurs in projects that are intended to be almost identical, such as requests and treq.
This talk proposes that the primary reason this occurs is because each library contains its own I/O layer. It explores exactly how this problem comes about, and discusses an alternative approach to library design that vastly has many benefits over the standard approach. It uses as its core examples many projects the author has worked on, including the only library he has written that he believes gets this right. It also talks about where this approach is used outside of Python to great effect to provide extra weight for the example.