can such drivers be moved out of kernel? what exactly stops that?
why do they even need to be in kernel repo and not brought at/after install time?
> why do they even need to be in kernel
People have been asking this question since Linux was first invented…
Linux is actively hostile to out-of-tree drivers. There is no stable driver API, and interfaces change at the drop of a hat. Maintaining an out of tree driver is a constant nightmare where you're always dealing with interfaces changing out from under you.
I wrote and maintained 10GbE drivers for a small company in the 2000s, and just the SHIM file for our driver on Linux to massage over API differences was well over 1000 lines. I think it was close to the same size as the entire driver for one of the BSDs.