How not to design a wire protocol

Hal Murray hmurray at megapathdsl.net
Thu Mar 7 04:10:50 UTC 2019


Interesting, but...

Why isn't refclock_gpsd a good example?

Is there a good package for working with JSON?

I'm not convinced that NTP is a good example.   Sure, in hindsight, we can see 
some problems, but it's not obvious to me that JSON is the answer.  Are there 
any interesting alternatives?

The Daytime protocol (RFC 867) used ASCII.  Nobody uses it any more.

---------

The complexities of changing NTP's packet format are partly due to it's 
success.  If it wasn't so widely deployed there would be less pressure for 
backward compatibility.

Being able to change the wire packet format doesn't solve the problem.  You 
still have to write the code to do the right thing with the new format.

One of the areas on my list of hard unsolved computer science problems is how 
to upgrade a popular protocol.  It's usually easy to add new features.  It's 
hard to get rid of the old clients.  There is a chicken/egg in there.  If it's 
hard to get rid of them, then support lingers on.  If enough support is 
available there is not enough incentive for people running old software to 
upgrade.

Consider SMTP.  No binary packing there, but plenty of complexity and quirks.

--------

How much of this problem is changing skill sets?

I learned programming a long time ago.  Threads and byte swapping are no big 
deal.  On the other hand, I'm useless if you want a fancy web page with a data 
base behind it.

In the hardware world, it's generally understood that if you can do it in 
software, that will be cheaper than doing it in hardware.  (for almost all 
values of "it")  The key idea is that it's much easier to hire software people 
than hardware people.


-- 
These are my opinions.  I hate spam.





More information about the devel mailing list