- Target specific patches for Linux should be about backporting DTs and defconfigs.
- Don't backport defconfigs but use the one that's already on the kernel version being used. There's a possibility that the defconfig from a newer kernel may have changed symbols which may cause some drivers to be missed when using it for older kernel versions. This means it will take at least a year to start using the defconfigs.
- A defconfig for every device instead of a config for every (sub)target.
- The most basic options like SoC support, and network drivers should be built into the kernel. The rest should be selected as kernel modules.
- Should lower kernel size greatly.
- defconfig for each (sub)target is much easier to maintain.
- On Linux source code, do
make target_defconfig && make mod2noconfig
, then compile normally with kernel module packages. This way, OpenWrt compiles a kernel with the least amount of kernel modules (or rather, it compiles the kernel like it always did), and people compiling the kernel outside of OpenWrt can choose to remove the kernel modules they don't need.
- Maintaining the kernel modules on the defconfig is too much work. Let's say a new device that uses a kernel module that was never-seen-before on the makefile for that (sub)target. Is the person adding support for this device expected to enable this on the defconfig too? That's never going to happen. What if the kernel module doesn't even exist as a driver on mainline Linux. This is not maintainable for these reasons.