We should probably accept that TCP and UDP are the only "natural" L4 protocols we get, build all new protocols on top of UDP, and then just abstract the difference at the OS level, such that those tunneled-over-UDP protocols appear as native L4 transports. Then when you say "I'm using SCTP", you really mean "I'm using SCTP-over-UDP" -- but since that's the only possible meaning, it's just taken as a given.
Heck, maybe we should even reimplement TCP on top of UDP (stripping out the redundancies, so UDP carries the ports and checksum), and then just consider UDP an L3 protocol--a bit of extra stuff you get with every IP packet, whether you want it or not.
If we can figure out a way to do implicit protocol negotiation, such that we can build both clients and servers that "prefer" TCPv2-over-UDP but will drop back to plain-TCP, this could really happen, and we might get to start writing new transport protocols again. (Heck, for that matter, DTLS might finally get used.)
Heck, maybe we should even reimplement TCP on top of UDP (stripping out the redundancies, so UDP carries the ports and checksum), and then just consider UDP an L3 protocol--a bit of extra stuff you get with every IP packet, whether you want it or not.
If we can figure out a way to do implicit protocol negotiation, such that we can build both clients and servers that "prefer" TCPv2-over-UDP but will drop back to plain-TCP, this could really happen, and we might get to start writing new transport protocols again. (Heck, for that matter, DTLS might finally get used.)
See also: the comment by eternaleye on the above post http://250bpm.com/blog:22/comments/show#post-1759542