Re: IETF and APIs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



What we are really talking about here is

1) Defining the boundary between one layer and another
2) Specifying a means of reifying that boundary as something that is concrete of which the most familiar form is an API

We discuss APIs all the time in IETF. Some examples:

"We can't use X because _javascript_ does not expose that to the application"
"We can't do Y because CryptoLibs don't show that to applications"
"We can't move from IPv4 to IPv6 as applications use gethostbyname (x) to do everything"

The limitations of the BSD sockets library have affected (nay controlled!) application protocol design for decades. 

Having the API do too little can make things worse, not better. The current networking API for networks requires applications to be really very aware of whether their transport layer is 

* IPv4 or IPv6
* Layered over raw TCP, SSL or IPSEC
* Uses A record, SRV or URI discovery

All of which are things that in my view the application should not care about at all. A pipe is a pipe and the application should be able to abstract above the specific type of pipe.

The application MAY care about the trust properties of a pipe but should not be required to care about the precise details of how those trust properties are achieved. 


Web IDL might be a way to go here. It does at least permit the use of tools and it avoids the risk of a discussion of what the best language to use for specifying an API is.

The downside is that people would need the tools for their specific languages. But that is probably not very difficult to write. I have for years written that type of stuff for mapping abstract protocols to XML schema rather than have to re-write a spec every time people come up with a new way to use XML to address the problem.

Whatever we go with should be object oriented for specifying interfaces to the application layer and should not be object oriented for lower layers. Modern programming approaches are now object oriented, or at least use inheritance and encapsulation and a number of properties that we have agreed to call object oriented. Even scripting languages tend to have objectish features.

At the lower layers, objectish features are probably a bad idea, just like regular expressions and recursive structures and many other powerful tools that are a little too powerful.
_______________________________________________
Ietf mailing list
Ietf@xxxxxxxx
https://www.ietf.org/mailman/listinfo/ietf

[Index of Archives]     [IETF Annoucements]     [IETF]     [IP Storage]     [Yosemite News]     [Linux SCTP]     [Linux Newbies]     [Fedora Users]