George Kadianakis:
b) You can write your own Python code and selectively steal code from obfsproxy. You will have to steal the code that does networking, Extended ORPort, environment variable parsing (pyptlib), SOCKS, etc. This might not be too hard.
Could the shared code be used to augment pyptlib? I guess Extended ORPort is probably something that all Python pluggable transport implementations might want.
The issue is that by adding an Extended ORPort implementation in pyptlib we would have to select a specific networking library (socket, Twisted, etc.) and the transport author would be forced to use the same networking library.
Of course, we could bypass this by coding Extended ORPort clients in multiple languages, or by just coding it in Twisted and letting the transport author simply not use if she doesn't want to. For example, goptlib has an Extended ORPort implementation using the default Go net lib.