This was my feeling as well. PC BIOS and UEFI are far from ideal, but does it really make sense that, for every single ARM (or whatever) board, every single OS vendor has to write their own bringup code? Certainly some of it will be reusable across OSes, but it's still a huge amount of work. This would also disadvantage a hobbyist OS developer who wants to build a new OS, whether as a toy or for eventual educational or production use. Suddenly they have to read through pages and pages of low-level documentation for the board they have, and then once they get it working, it still won't work on any other board.
I just don't think it's realistic to expect every vendor to provide deep-enough documentation to make this work. Even the cooperative ones (of which I assume there are currently very few) would probably have trouble with it.
And even if you do have a bunch of cooperative vendors who are great at releasing hardware documentation, that still doesn't save every OS developer from the tedious, error-prone process of converting that documentation into low-level bringup code.
Isn't it so much better that a Linux developer, when confronted with a new board, need only craft a device tree description (or use one provided by the vendor), and then -- aside from any exotic peripherals that may not have drivers written yet -- the board will mostly work? It's at least likely to boot, even if it comes up in a not-fully-functional state.
I just don't think it's realistic to expect every vendor to provide deep-enough documentation to make this work. Even the cooperative ones (of which I assume there are currently very few) would probably have trouble with it.
And even if you do have a bunch of cooperative vendors who are great at releasing hardware documentation, that still doesn't save every OS developer from the tedious, error-prone process of converting that documentation into low-level bringup code.
Isn't it so much better that a Linux developer, when confronted with a new board, need only craft a device tree description (or use one provided by the vendor), and then -- aside from any exotic peripherals that may not have drivers written yet -- the board will mostly work? It's at least likely to boot, even if it comes up in a not-fully-functional state.