Because header files are common and used across multiple projects to create a common environment or API between those projects. The headers are a shared space, the code that calls the headers (e.g.: the platform-specific RISC V implementation) is a less shared space and may be outside of Linus’ domain, so to speak. Basically, it’s like if two cities shared a reservoir for drinking water. If one city decides to mix raw sewage in the water at their pump station, that’s a bad idea, but it’s a problem for that city to deal with. If, on the other hand, it dumps the raw sewage into the shared lake, it affects the other city as well
Because header files are common and used across multiple projects to create a common environment or API between those projects. The headers are a shared space, the code that calls the headers (e.g.: the platform-specific RISC V implementation) is a less shared space and may be outside of Linus’ domain, so to speak. Basically, it’s like if two cities shared a reservoir for drinking water. If one city decides to mix raw sewage in the water at their pump station, that’s a bad idea, but it’s a problem for that city to deal with. If, on the other hand, it dumps the raw sewage into the shared lake, it affects the other city as well