Dokan vs. WinFsp: Comparing Windows User-Mode Filesystem Frameworks
Introduction
Dokan and WinFsp address the same broad use case: building a custom Windows filesystem without writing and signing your own kernel-mode driver. Both install a generic, pre-signed driver that your application talks to from user mode, and both offer a FUSE-compatible API so libfuse-based code can be ported with limited changes.
They are not interchangeable, but this article doesn't compare their architecture or performance. Test those against your own workload. It covers one practical difference that commercial developers need to understand before they ship: licensing. It also covers the API options each project offers, and where a commercial SDK like CBFS Connect fits.
What They Have in Common
Each project ships a kernel-mode driver that is installed on the machine and used by applications through a user-mode library. Neither requires you to write, sign, or maintain driver code of your own. Both provide a FUSE-compatible layer alongside their native API. Both are established open-source projects with ongoing development. See the Dokan repository and the WinFsp repository for current releases.
Licensing and Commercial Use
| Feature | Dokan | WinFsp |
|---|---|---|
| License | LGPL for the driver and libraries, MIT for the control program and samples1 | GPLv3 with a special exception for free and open-source software2 |
| Commercial license | Not applicable | Available for use without the GPLv3 restrictions2 |
| Commercial license fee | Not applicable | 6,000 USD per 3 years (organization, one named team of up to 10 developers) or 2,400 USD per 3 years (individual), with no additional royalties2 |
1. Per the Dokan README, the user-mode library, driver, network library, FUSE library, and installer are licensed under the LGPL. The control program and samples are licensed under the MIT license. The LGPL has its own conditions for distribution, so read it before shipping Dokan with a closed-source product.
2. Per the WinFsp commercial license page, WinFsp is available under the GPLv3 with a special exception for Free/Libre and Open Source Software. Entities that want to use WinFsp without the GPLv3 restrictions can buy a commercial license, which permits unlimited linking and distribution in closed-source products. Prices are as listed on that page at the time of writing. The commercial license does not include support. Priority support is offered under a separate annual contract.
For a closed-source product, this is the clearest practical difference between the two. Dokan has no license fee. WinFsp offers commercial licensing for proprietary applications that don't fit its GPLv3 terms and exception. Check each project's current terms against your distribution model before you commit to either one.
API Model
Dokan's native API is a C/C++ API, with a FUSE wrapper for porting existing FUSE filesystems. The dokan-dev project maintains wrappers for .NET, Java, Delphi, Ruby, and Rust, and third-party wrappers exist for Go, Python, and Ada. See the Dokan wrappers list for details.
WinFsp provides native, FUSE2, FUSE3, and .NET APIs.
For most teams, the API choice comes down to two things: the language the filesystem will be written in, and whether an existing FUSE codebase is being ported.
Where CBFS Connect Fits
CBFS Connect is a commercial SDK for exposing any data source as a filesystem. It covers more than one platform and more than one filesystem model:
- The CBFS component creates a virtual filesystem on Windows, visible to all processes or only selected ones.
- The FUSE component provides a FUSE-like API on Windows, Linux, macOS, iOS, and Android.
- The NFS component creates an NFS 4.0 server and mounts it to a directory on Linux and macOS.
- The CBCache component caches remote file data locally.
All of these ship with the same licensing, commercial support, and release cycle from one vendor. That makes it a fit for organizations that need a direct vendor relationship, or one API family across Windows and other platforms.
For a feature-level comparison between CBFS Connect and Dokan, see Why Choose CBFS Connect over Dokan?.
We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at support@callback.com.