On Mon, Sep 06, 2021 at 08:38:44AM +0200, Xavier Beaudouin via NANOG wrote:
Hello,
I absolutely HATE testing, developing and supporting IPv4+IPv6, more than doubling my time, adding 3rd stack would actually not increase cost that much, it's the 1=>2 which is fantastically expensive. And costs are transferred to customers.
Dual stack is doubling dev time ? Ok... this is quite strange...
Nope, entirely normal and expected. Coding for one case is very straightforward: Do thing Do other thing Do this as well Coding for two cases involves identifying each step which needs to be done differently for the two cases and coding up the things to be done differently: if case1: Do thing this way elif case2: Do same thing this other way Do other thing the same way regardless if case1: Do this as well elif case2: Don't do anything Adding a third case is *usually* not as hard, as you've identified at least most of the places that need to be done differently for different cases, and if you're lucky then some of the doings can be the same both ways: if case1: Do thing this way elif case2: Do same thing this other way elif case3: Do same thing in *yet another* way Do other thing the same way for everyone if case1 or case3: Do this as well elif case2: Don't do anything It's not just program control flow either; there's also data structures and data storage to think of. That can end up being even *more* complicated than the control flow, especially if you're interoperating with other systems that need to consume the same data. For example, in the IPAM software world, imagine you named a field "ip_address", that contains an IPv4 address, and now you want to add IPv6. But that database is also used by some other software (that you might not even control), so you can't just rename it to "ipv4_address" and change all the references in your code. Do you add "ipv6_address" and hope that everyone figures out that "ip_address" *means* "ipv4_address"? What about in the future, when you have the first device that is IPv6-only... what goes into that "ip_address" field? - Matt