This is a detailed summary of the work I've performed over the course of Google Summer of Code 2017. This was a continuation of my GSoC project from last year.
How to Observe Work Performed
In order to see the results of my labor, you must first build my branch with the usual method and setup a virtual machine with the output. You can use a bootcd or a livecd. If you have any trouble building ReactOS, you can ask for help on IRC.
Before you build ReactOS, you must enable NTFS write-support if you want to test it. This is because write-support is still experimental; there's still a lot of things that could go wrong and using this driver could result in catostrophic data loss.
To enable write support, open the folder you checked out my branch to, and navigate to boot\bootdata\ and open the hivesys.inf file. Find the section that starts with
; NTFS filesystem driver
Underneath that, find the line that says:
Simply remove the semicolon at the start of that line and save the file and build ReactOS as usual. This will add the registry key needed to enable write support.
Next, in a virtual machine (strongly recommended) boot into Windows and format a second virtual drive as an NTFS volume. Then, use the volume you formatted as a second hard drive in a virtual machine running ReactOS.
What's Working & What Can Be Used Now
Creating a file or folder and overwriting a file have been debugged pretty thoroughly in my branch and should work as you'd expect in all but the rarest of cases.
Reboot into the Windows vm and you should notice that all the files you created in ReactOS are available to you. If you run "chdsk x: /f" from a command line, where x is the letter of the ntfs drive you wrote files to, chkdsk should not report that it found any errors.
There's also some features which I have implemented or fixed which are less-obvious to an end-user. These include:
During the course of this activity, I also expanded the stand-alone programs and scripts I wrote last year. Only the minimal amount of time was spent writing these programs, so I wasn't distracted from writing driver code. As such, this bonus code has numerous errors: memory is often leaked; file handles are leaked; comments are missing, deceptive, or just plain wrong; things are done in an inconsistent manner; etc. For the most part, these programs can't be interacted with except at the level of their source code.
What's left to be done
Thank you to my mentor Pierre, ReactOS, and Google for this wonderful opportunity!!
I definitely plan to keep contributing to ReactOS! I will make one more blog post after this one to summarize my experience from a personal standpoint.