After far too long, I have finally received an answer from my employer about releasing my packages for NTFS-3G under Mac OS X. Unfortunately, it is not the answer I nor Mac users at large wanted to hear.
My version of NTFS-3G for Mac OS X is dead.
Upper management (i.e. the top) would “rather not” have me working on this and releasing it on my own. The reasons have not been disclosed to me, all I know is that it’s probably in my best interest not to directly voilate this creed.
Since I pulled the package, I’ve received countless emails and messages voicing support, asking for help, looking for packages, and more. So, despite my silence until now, I’m not going to abandon this idea and everyone that liked it. I’m acutely aware of the fact that people used this package heavily, and would really like to have it available.
I will do everything I can to help similar projects succeed.
And before I continue, I owe a huge thanks to the NTFS-3G project and Google’s MacFUSE for making this possible in the first place. If you used and enjoyed my package, maybe you should drop by one of those places and let them know their work is appreciated. Just as a nice gesture, nothing more.
In general, this will be my response to inquiries related to my NTFS-3G package. So please don’t get your hopes up.
This much needs to be crystal clear: I cannot release source or binary packages beyond what circulated the Internet in the first half of 2007. I have been in contact with the NTFS-3G maintainers to return my one-line compilation fixes as required by the GPL.
Yes, I was working on a new set of binaries that would integrate better with Mac OS X. No, I cannot release them. Don’t ask me to send either set of packages to you “under the table,” because I won’t do it. I’m just not interested in making any legal missteps.
As stated above, I cannot release software or source code.
I can publish all of the information I gathered and documented while I was working on NTFS-3G integration for Mac OS X. Apple provides literally no documentation on how to do this, so I will do my best to make this information easily accessible.
There are some important tools I forged while working on my package. Most of these were only for my convenience, and I think other people will find them useful. They are briefly described as follows:
- Xcode scripts
- Build Universal binaries for autoconf-based sources
- Automatically generate installer packages and disk images
- MacFUSE Tools
- Simplify integration of MacFUSE and Mac OS X
I’m sure the scripts are fine; they just make it possible to use Xcode as your one-stop-shop for everything from development to distribution. As for the MacFUSE Tools… I’m still undecided. They’re useful and fairly trivial, so I may still go for the “clean room” approach, and just document what they did so others can easily recreate them.
The “clean room” strategy
So, truth be told, I really want NTFS (via NTFS-3G) to become a first-class citizen on Mac OS X. So I’m going to document as much of my amassed knowledge as possible.
For those of you unfimiliar with the term “clean room” in this context, I’m referring to clean room design. The idea is that one person or team creates a specification, and another recreates an implementation, so no “infringing” knowledge of previous implementations is transfered to the new code.
This is particularly important when creating open-source implementations based on reverse engineering. Since my predicament is sufficiently akin, I’m choosing to adopt the “clean room” model. Given my experience, I will provide as much information and informal specifications as possible.
That said, these are the topics I wish to discuss:
- Anatomy of a filesystem bundle in
- Working with
- Working with
- Useful tricks for FUSE filesystems under Mac OS X
- Making use of status information provided by MacFUSE
- A few “gotchas” specific to NTFS
There is a wealth of information to cover. Not everything will be available from day one, so be patient—I have real-life responsibilities just like the rest of us. Rest assured, though, that I will do my absolute best to provide the information and tools necessary for someone else to recreate my work. Most importantly, without providing any source code or releasing any binaries.
Everyone wins. Except the users caught in the gap while the wheel is reinvented.
The reason I stopped releasing this package was at the request of my employer. I was still employed part-time during the spring when I released the packages, and didn’t realize my error. Before I continued development on this when I became a full-time intern for the summer, I asked for permission to avoid any problems later. They said “no,” so I’ve stopped.
I’ve heard that some people are incorrectly blaming the fine folks working on the NTFS-3G project, and they had nothing to do with my packages being discontinued. I returned my work to them, because that’s just how open-source works. They very much wanted me to continue, but I can’t. They were great to work with while I was developing my package.
I hope that clarifies everything. Cheers!