
Iain Hanson wrote:
[...] Not having done much work on iostreams for sockets I thought it would be a little of both but I was not sure. I saw it as a higher layer abstraction that had greater easy of use but probably less flexibility/control.
Whereas Layer 2 has much greater flexibility and control but a greater learning curve if you want/need the more advanced features.
In my opinion this distinction is unclear and subjective. As I wrote in http://article.gmane.org/gmane.comp.lib.boost.devel/122421 I agree with Don that there is no need for more than 2 levels right now. Every level and package should be well justified as anything else is confusing. If we can't find good reasons to justify a design we will make it unnecessarily more difficult for library users to understand the whole structure.
[...] There has always been a need for standard applications protocols such as FTP, Telnet, SMTP, HTTP, etc. But Beman Dawes wrote a set of requirements for a socket library that said something like sockets are a chapter in the book no the whole book. He meant to limit the scope of a socket library so that it might actual get finished. I refined that idea by comming up with my layers which we've been using for the last 3 or 4 years.
I agree that it is sad that a network library has been discussed for several years without any practical result. But this is an organizational problem. We shouldn't make it even worse and let the design of the network library be influenced by that. In the requirement list Beman Dawes wrote I can see three layers (see http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket/S...). I don't know where he wrote we need an extra layer for standard application protocols. Furthermore these layers are just an example. There is no explanation why a network library should look like this. In my opinion this is exactly one of the organizational problems we have: There is a lot of talk but decisions are not written down. They do not need only to be written down but must be explained. If it had been done before we wouldn't need to start over and wouldn't need to question everything what was written down once without any explanations in the Wiki. That's why I put up http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostNet. This is not "yet another network library" but a list of problems and requirements which will hopefully lead us to a design of the network library. The package diagram at http://www.highscore.de/boost/net/packages.png is my continuous attempt to put everything together.
Thats why I'm objecting to you subtracting 1 from the layer numbers.
I don't remember who participated in the discussions several years ago. Since the discussions were revived on 3 March we (not only me) have been talking about level 0 and level 1 and everyone seems to have understood. I don't mind to change the name but then everyone has to do of course. But do we really have to change names which are used now for 2 months? And do we really have to discuss if we should rename level 0 to layer 1 because some people called it layer 1 several years ago? Let's concentrate on more important things please. Boris