Hi,

On 9/22/24 19:22, Chris Hofstaedtler wrote:

The "server" group supposedly wants (and I agree) networkd, but they also want 
the configuration interface of networkd.

I'm not sure about that -- I'd expect the "server" group to be split into

- "pets": their IP address doesn't change often anyway, anything beyond "set IP address during boot" is bloat. ifupdown is bloat because it requires a python interpreter to do what a one-line shell script can do, and networkd is bloat because it runs an entire service to do nothing.

Nobody cares about either kind of bloat, because resources are cheap -- what people do care about is interface stability, which is why switching the interface naming scheme was so controversial back then.

- "cattle": the IP configuration comes from a central place, and is integrated with asset management. If it's a small operation, they use DHCP, but anything more sophisticated brings their own management solution, and whatever system we provide needs to be able to go out of the way.

- "container": the IP address is managed from outside. The OS installation we generate should not interfere.

The "laptop" group supposedly wants (and I agree) NetworkManager,
but they also want the configuration interface of NetworkManager.

They specifically want the user interface. The configuration interface is less of a contract and more of a guideline, but that doesn't matter to the users, because they will only ever use the integrated solution where system and UI components are provided by the same package, and are kept consistent that way.

Providing a typesafe interface for passing the privilege-separation boundary is hard, but it is much more difficult if that interface also needs to be long-term stable. Anything that wants to replace N-M is either a rewrite with the same basic structure (tightly coupled interfaces on both sides of the privilege separation boundary, upgraded in lock step) or a massive sink of manpower that, frankly, no one has.

Who actually wants the configuration interface of netplan,
especially by default?

I can see it in the server space, because we need the integration with other tools that contribute fragments of network configuration without wanting to take over (libvirt and docker), and with tools that take over.

Integrating these tools into a consistent whole would be the core task of a distribution.

ifupdown defines a policy that works reasonably well on servers: "do not interfere." That is, if libvirt or docker change something because they need it (like moving the default route into a bridge), then ifupdown does not revert that change. It's shit, but it works.

systemd-networkd, for good reasons, deviates from this, but this means further integration work is required from the distribution because the end result needs to be consistent again. If netplan can provide the "consistent whole", then it makes sense not to reinvent the wheel.

My expectation as a user is that I should be able to install libvirt and docker on a server, and configure bridged networking in both without losing connectivity.

Right now, it works by accident, which is bad, but breaking it in the name of correctness will make a lot of people very angry, like renaming all the interfaces or requiring "nofail" in the fstab to continue booting did.

   Simon

Reply via email to