Since NTFS is a proprietary file system created by Microsoft, how did the ntfs-3g developers manage to create an open source version of the NTFS drivers without referring to the NTFS source code? Or is there some kind of agreement with Microsoft regarding this??
After a long developement and a laborious work, a fork has been created from NTFS-Linux according to the first release note of
I hope this partial answer help you see how this was born and how it continues to leave.
That's right. Reverse engineering.
Reverse engineering is basically looking at patterns for a certain behaviour and expected results and document them in a way that you can reproduce it without even looking at the code.
For example, for windows compatibility network layer for CIFS/SMB (NetBIOS for early versions, AKA as window shares) the Samba project developers used a network sniffer and a packet analyzer in such a way that they documented what those network packages contained for certain operations (like sending a request to the port to list shares) and then simulate the same operation but with their own code implementation, as long as the network packet data send was compatible with what the windows server was expecting.
So NTFS-3g was the same thing, but looking at hard disk behaviour and results, instead of network.