Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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??

share|improve this question
add comment

2 Answers 2

up vote 5 down vote accepted

ntfs-3g is the following of the first NTFS driver created back in 1995 by Martin von Löwis.
The driver has been mostly reverse engineered which mean by observing and analyzing the data structure and find a way to correctly handling it.
According to the original project site

The method was roughly:
1 Look at the volume with a hex editor
2 Perform some operation, e.g. create a file
3 Use the hex editor to look for changes
4 Classify and document the changes
5 Repeat steps 1-4 forever

After a long developement and a laborious work, a fork has been created from NTFS-Linux according to the first release note of ntfs-3g back in 2006:

Hello,
As part of the Linux-NTFS project, I'm happy to announce my contribution to ntfsmount and libntfs which resulted ntfs-3g, a read-write ntfs driver, capable for unlimited file creation and deletion.

I hope this partial answer help you see how this was born and how it continues to leave.
It's important to note that today this driver is maintained by Tuxera and is no longer an amateur product.

share|improve this answer
    
I'm glad this answer your question. –  Kiwy Feb 26 at 11:05
    
Thanks for the great answer... must have been really hard, having to reverse engineer an entire filesystem!! –  Nighpher Feb 27 at 5:19
    
@Nighpher I bet it was and still is because NTFS is still under developement by Microsoft and ntfs-3g doesz continue to work. –  Kiwy Feb 27 at 8:30
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.