ReactOS has always taken a "we will rebuild anything from complete ignorance of the source" approach, precisely because of the legal liabilities. They are so good at it though, that people at Microsoft have actually claimed that the developers must have source code access.
You don't have to use a clean room methodology. Decompiling the code and reimplementing the functionality is a perfectly valid approach in any jurisdiction that permits reverse engineering.
Wait, pardon my ignorance, but isn't a decompiler required for the kind of work they do at react?
Person A's Job:
- Decompile shit.
- Then write down the names of the functions with (1) input, (2) output, (3) a description of what person a think the code is doing (4) any side effect / preconditions / post conditions they can deduce.
Person B's Job:
- Take the spec created by person A and write code.
while(missingFunctionality.hasNext): goto Person A's Job
It is and the split between person A doing the first part and person B doing the second part is important in a "clean room" reimplementation in the US.