torstai 15. maaliskuuta 2012

Keep Your ABNF Clean

For the last six years, I've been a part of the IESG, the IETF's steering group. I've loved every day in this job, particularly because it gives you such a grand tour of the different changes and challenges the Internet is going through. And it has been a wonderful opportunity to work with many very smart people around the world.

But new challenges are good for anyone now and then, and last year I decided that I would step down from this role and do something else instead. You will still see me around in the IETF, among other things I'll be working on many technical things as well as joining in the Internet Architecture Board (IAB). You've probably seen me work on various gadgets and the Internet of Things technology. I will also continue that. The next thing that we'll be organizing on that is a workshop on Smart Object Security, to be held in Paris on March 24th.

Today is my last IESG telechat. A telechat is a conference call -- or occasionally a Second Life meeting -- where we go through the specifications coming out of the IETF and try to ensure that they are correct. We have a telechat every two weeks, and there are usually from ten to twenty documents to read. The fifteen steering group members try to check everything from ensuring that the right process was followed to small technical details. Most comments that we make are that -- just comments. Occasionally if we detect a problem that would prevent correct implementation or interoperability we will file what is called a "Discuss". This is a blocking comment that needs to be resolved somehow before the document can become an RFC.

By the way, while these end-of-the-RFC-process reviews are quite visible in the IETF, it is still a small part of our job. I takes roughly a day or at most two for me on a two-week cycle. And in many ways, the issues that we discover are details. Some of the other things that we do are potentially more significant, like starting up new working groups to address a problem in the Internet.

In any case, I wanted to put some extra effort to how I formulate my comments and Discusses in my last telechat. One of the things that I always want to be careful about is that if there is any formal language (ASN.1, XML, BNF) that it is correctly formulated and unambiguous. This ensures that people can build implementations by feeding the language to a compiler and get correct output. One of the formats IETF documents often use is called ABNF, or Augmented Backus-Naur Form, specified in RFC 5234. Unfortunately, not all specifications we receive use the formal language correctly. It may have been carefully checked at some point, but sometimes a late change causes an error to creep in.

Normally, comments and Disusses are just e-mails, but today I chose to use video format to complain about ABNF problems. In fact, I've had to use this Discuss already three times for today's telechat:



Some of our documents had ABNF syntax errors, failed to tell the reader which other RFCs contained the rest of the productions, mixed RFC 2616 and RFC 5324 ABNF syntax, etc. The errors were in all cases minor, as the IETF document authors are usually established experts in their field, and careful. However, even a small error can be annoying, particularly with a formal definition of syntax because due to an error you can not be certain what the actual intent was.

Please check your ABNF, XML, and ASN.1 carefully before you submit a document for publication!

Ei kommentteja:

Lähetä kommentti