Here are the origins of libtso, as described by Cyrus Patel in a message to the dossock mailing list: "- 1986: Geof Cooper wrote TinyTCP for the Motorola 68k. - 1989: Rick Rodman adapted TinyTCP for the 808x. - 1990: Erick Engelke took TinyTCP, modified it for Packet Drivers, and released it under his own copyright (without so much as a bow to Geof) as WattTCP. - 1998 (or thereabouts): Gisle Vanem made significant changes to WattTCP, and released it as Watt-32. - 2002: Release of libtso which is a functional equivalent of all of the above to ... 1) Provide a sound foundation for a more univerally- accepted API, eg BSD or XOpen-XTI/TLI, than the rather peculiar one provided by TinyTCP/WattTCP. 2) Maintain backwards-compatibility with the API exposed by TinyTCP/WattTCP. 3) Support the additional functionality introduced by WattTCP/Watt-32 that was not originally in TinyTCP. 4) Have a free license (GPL, BSD whatever). [Geof and Gisle's work is GPL'd, Erick's is not]. 5) Be a library - in the true sense of the word. - The chattiness of the existing three libraries (TinyTCP, WattTCP and Watt-32) had no business being in a library. - Debug messages had to be a compile time (not a runtime) option. - Memory allocation had to be dynamic - big static structures (including "sockets" and defragmentation data), had to go. - It had to be 'auto-configuring', that is, it had to be able to work without any external dependancies. I added backwards-compatible support for a wattcp.cfg only at the end. - It had to be modular. Functionality that was not used should not be be linked, and modifications to use alternate sub-systems (eg WinPcap instead of packet drivers - see http://netgroup-serv.polito.it/winpcap/) should be easy. - The user should not _need_ to know anything about the internal functionality of the library, and a dependancy on the user's code to behave in a "correct" way had to be removed (dependancies such as the strategic placement of yield calls should not have to be needed). Similarly, the order of initialization/shutdown (and the need to do them) should not be something that the user need to worry about. - The library should never cause the application to end abnormally, ie all conditions had to be recoverable, no memory, no IP address, no network card, all had to be non-fatal conditions. In this light, libtso is then not so much as "a rewrite of TinyTCP" as a modular 16/32bit TCP/IP stack (for packet drivers or alternate BSD libpcap-style interface, eg winpcap) in the form of a true userland library, with TinyTCP/WattTCP functionality and API." Richard Dawe 2002-03-08