HYDROGEN: Extensibility (by alaric)
Networking
On bare metal, the platform gives you things like Ethernet interfaces; on POSIX, you get the BSD sockets library.
When life gives you lemons, you make lemonade; so we provide both device:ethernet
(and device:wireless-ethernet
, etc) and device:ip-address
features. On a POSIX system, we just keep an eye on what IP addresses the system has, and expose them as device:ip-address
devices. On a bare-metal system, we can choose to directly expose the hardware network interfaces, or we can be generous and provide an IP stack, in which case we provide IP-level devices instead (along with a configuration wordset for managing the routing tables and the interfaces).
So it's up to the application, if it needs networking, to look at what network resources the platform gives it, and to build up from there!