Importing FullFat (even if it requires changes, like converting to kmode) is still WAY faster than developing a new one, based on MS sample code. As we know, FullFat already works, so the testing procedure would be significantly shorter, compared with the one being written from scratch.
FullFAT has already been used by some major embedded projects, Renesas have included it with their own development environment for all their customers.
Similarly a major development framework for Analog Devices Blackfin processors have also adopted FullFAT as a standard part of their library.
FullFAT is well tested already, and I intend to write the driver in a way that fixes to problems can easily be synchronised between the Windows FullFAT driver and the standard general purpose driver.
Finally, FullFat author agreed on colaborating, effectively helping out with the adaptation process. For the new fat driver, we`d still require at least developer, either someone from ReactOS team or outsider. Again, i dont see developers hanging around, waiting to do anything for ReactOS.
In the last year I have gained a substantial interest for Windows internals, particularly kernel mode stuff, and see working with ReactOS as a great opportunity to work with some really smart people, and further my own knowledge and ideas.
So its a choice of ready, funcitoning code and tested, that needs to be adopted, as well as a new developer, eager to help us out. On the other side, there is only a reference MS code, that potentially (even if we`ll be able to actually write a new FAT driver and test it) someone could use as an excuse to question the new driver and spread FUD about its similarity to MS code.
FullFAT will also implement a build-option that removes the FAT patent issues. This is based on the linux patch, for details see:
http://lkml.org/lkml/2009/6/26/313
I think that FullFAT works quite well already, and is 100% my own code from scratch. When ReactOS use this code, then there can be no uncertainty about its legitimacy.
Also addressing the questions regarding a journaling system, we can simply have the driver create a ROS.journal file in the root dir. This file won't mean anything to other systems, and will simply be ignored. Causing no compatibility issues. If another system messes up the FAT table or directory structures thats not the fault of ReactOS, and would require a full chkdsk.
I think the journal stuff would be something we can add once I have FullFAT fully integrated and its working.
Thanks for the input,
James