I realize that for the Perl language, "there is always more than one way to do it". That was a design choice, and the results are now part of Perl's reputation as a "swiss-army chainsaw" perfectly suitable for the creation of unmaintainable programs.

Generally, we do not provide more than one way to accomplish something, because it imposes costs on operators and implementers and especially on QA/test teams, who must support all such methods, for competitive or coverage reasons. Distributed system complexity is a function of message types and their options and permutations and combinations, and state variables and their options and permutations and combinations. More complexity is almost always going to add more cost than benefit, and every argument about adding new states, variables, or messages has to begin with the engineering economics: what are the costs & benefits?

For example if it's possible to express the nonexistence of a wildcard in two ways, each publisher of DNS information will have to decide whether to support only one and if so which one, or both ways. Every implementer of a DNS client library or a DNS-aware application will also have to choose. If some choose method A and others choose method B than the functionality will not be effectively present. If everyone chooses to support both then there was no advantage to the second way.

In terms of cost/benefit, someone who wanted to provide a new way to support signalling of non-wildcard should be comparing the effort of standardizing, implementing and deploying a second way, vs. pushing for broader deployment of the existing way. One could either come to the IETF, and to the authors of PowerDNS, BIND, NSD, Unbound, and companies like Nominum, Microsoft, and so on, asking "could you please support this second way to do something your systems already know how to do?", or one could approach one's own I.T. department and the I.T. departments of our customers, suppliers, and partners, and say, "could you please support this existing standard by changing your operational practice to include DNSSEC signing and validation?"

In the first case, it's all new work, which adds complexity for all operators and all implementers, and may have the effect of reducing DNSSEC deployment if some number of operators cared only about this feature (which we'll call SWILD) and have no other reason to deploy DNSSEC. This concern is heightened because the DNSSEC specification is crap, and there's been unending concern as to whether its costs are greater than its benefits. DNSSEC rests on knife-edge, ready to fall.

In the second case, it's mostly just turning stuff on that's already defined, already implemented, and is an option in virtually all current generation DNS software. We would not be adding new test cases for QA/test teams. And importantly, we would be adding new effort to the task of causing DNSSEC to be more ubiquitous.

This kind of engineering economics tradeoff should be obvious. I apologize to anyone who is about to ask me why I appear to be trying to teach my grandmother how to chew cheese. Consider this a PSA for newcomers for whom shiny objects are an unalloyed good, and aren't seen in the context of costs and benefits and effects and side effects.

--
P Vixie

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to