The biggest issue in trying to have a long running constantly updating OS on a Android phone is the device drivers.
Instead of trying to reverse engineer and make open source drivers, I think you should try a more generic approach something like a rump kernel or some other generic layer for each Linux kernel version which can simulate the interface needed for the particular kernel driver. That way you don't have to keep porting or reverse engineering device drivers.
Your approach of trying to make an open source driver is a losing one, it requires a lot of work and you can't reasonably keep up with it.
> Of course, the big if there is: Can you reach the critical mass of drivers without the project exhausting itself.
If that were the case, we wouldn't find ourselves in the current quagmire that we're in. Linux kernel already had a huge number of devices supporting it.
The truth is, there is nothing stopping device vendors from releasing a device driver for a specific version, maintaining it for an year or two and then abandoning it. The better approach would be to figure out a stable interface layer for kernel drivers so that you can simply plug and play the vendor supplied device driver.
Instead of trying to reverse engineer and make open source drivers, I think you should try a more generic approach something like a rump kernel or some other generic layer for each Linux kernel version which can simulate the interface needed for the particular kernel driver. That way you don't have to keep porting or reverse engineering device drivers.
Your approach of trying to make an open source driver is a losing one, it requires a lot of work and you can't reasonably keep up with it.