Perhaps we should just complete the things we have done. By way of example...
- There are 3 HttpClient implementations, which is fully HTPP1.1
compliant. 2. Comanche is not HTTP1.1 compliant. 3. There are multiple Socket implementation in various states of completion.
Oh, I once tried to get rid of OldSocket and adapt the rest to work with Socket. I went to some point where it was done but after all that I was pretty frustrated as I started to recognize all the mess. One example for all. If you look into Network-Protocols category you will find quite nice hierarchy such as
ProtocolClient -> TelnetProtocolClient -> SMTPClient
Even though TelnetProtocolClient stands for something rather telnet-like (it's not implementing RFC854), I was very happy with that. So leading conclusion was to have HTTPClient subclassed from TelnetProtocolClient (which can be renamed without harmful consequences). But suddenly, you will find that some $&*(#@*($^ introduced HTTPClient totally out of this concept. Now solve the dilema:
- rename HTTPClient to HTTPHelper or whatever and write nice HTTPClient. Not hard to imagine that even if you adapt the rest of image, all packages' maintainers relying on HTTPClient would like to kick your ass.
- leave it as it is and just keep that mess arround. Of course, pray someone won't write IMAPClient or XYZClient derived from Object and pissing all this concept.
Luckily helper HTTPClient has no instance methods so it can me merged with ProtocolClient concept though it brings such a beast into the image. Maybe best compromise.
Pretty important for a community which, in this thread at least, has emphasised, the importance of networking.
Yes, and I see there are unresolved problems with handling errors in socket communication but I feel it's maybe something simply unsolvable within current design. Any other development environment is better in this and other issues. No wonder, that even though I can amaze people with rotating windows, I simply can't rely on it as development platform. It is really a shame.