AFAICT, Unix software that you compile with Cygwin&#x27;s tools understands both Unix paths and Windows style paths. [0]<p>It also understands Windows environment variables. [1]<p>Cygwin is aware of Windows processes. [2]<p>Cygwin is aware of the Windows registry. [3]<p>The executables that are created by the default Cygwin build process are PE executables that have a dependency on the Cygwin DLLs and run on any Windows system. They <i>are</i> native Windows software, with a dependency on a third-party DLL.<p>If you build open-source software against the Cygwin libraries, that software can be distributed under its <i>original</i> license. If you modify the Cygwin build process to produce executables that do <i>not</i> depend on the Cygwin libraries, then you can distribute that software under any licence you like. Regardless, if you have cash you can <i>always</i> reach alternative licensing terms if you reach out to Red Hat. [4]<p>Cygwin symlinks don&#x27;t make use of NTFS junction points, but I imagine that that is for two reasons:<p>1) Cygwin <i>might</i> be run on a FAT32 system.<p>2) There are many, many, many pieces of Windows software (some of it is big name software!) out there that blow up <i>spectacularly</i> when they encounter a Junction Point. (Indeed, it was my direct experience that Windows Explorer behaved very poorly when asked to recursively delete a folder containing a couple of Junction Points in -I think- pre-SP1 Windows 7. I haven&#x27;t tried JPs in <i>AGES</i>, so I can&#x27;t speak to whether or not MSFTs own tooling has gotten better.)<p>At a <i>minimum</i>, software compiled against Cygwin meets the most basic definition of Windows software (A PE executable that runs on Windows systems). I hope that I have made it clear that the Cygwin libraries <i>also</i> provide a <i>large</i> amount of interoperability between Unix software and software originally written for Windows.<p>[0] Try it out. Fire up a Cygwin Bash shell and do the following (assuming that you&#x27;re running on an English-language Windows):<p>echo &quot;hello there&quot; &gt; &quot;$USERPROFILE\Desktop\helloThere.txt&quot;<p>then check the new file on your desktop. rm works just fine, too. Forward slashes work in paths, also!<p>[1] Try this out in a Cygwin bash shell:<p>echo $APPDATA ; echo $LOCALAPPDATA ; echo $SYSTEMROOT<p>[2] Again, in a cygwin bash shell do:<p>ps -W<p>[3] Do (in a Cygwin bash shell):<p>ls &#x2F;proc&#x2F;registry&#x2F;<p>[4] <a href="https:&#x2F;&#x2F;cygwin.com&#x2F;licensing.html" rel="nofollow">https:&#x2F;&#x2F;cygwin.com&#x2F;licensing.html</a>