# Third-Party Software Notices

MFCommander is proprietary software. It links the following third-party libraries, each used under the **GNU Lesser General Public License, version 2.1** (LGPL-2.1). The full license text ships beside these notices in the application bundle and is published at [mfsoft.dev/licenses/LGPL-2.1.txt](https://mfsoft.dev/licenses/LGPL-2.1.txt).

These libraries are **dynamically linked** and shipped as separate `.dylib` files inside the application bundle (`MFCommander.app/Contents/Frameworks/`). As permitted and required by the LGPL, you may replace them with your own compatible builds — see [Replacing a bundled library](#replacing-a-bundled-library) below.

MFCommander's own source that calls these libraries only uses their public API and is not a derivative work of them; it remains proprietary.

## Components

### libsmb2 (SMB2/3 client) — via AMSMB2
- **Used for:** the in-app SMB connection (`SMBClientProvider`).
- **License:** LGPL-2.1 (the library and include directories; see [libsmb2-COPYING.txt](https://mfsoft.dev/licenses/libsmb2-COPYING.txt)).
- **Copyright:** © Ronnie Sahlberg and contributors.
- **Source:** https://github.com/sahlberg/libsmb2 (shipped unmodified, vendored by AMSMB2).
- **Swift wrapper:** AMSMB2 by Amir Abbas Mousavian, also under LGPL-2.1 — https://github.com/amosavian/AMSMB2.
- **Shipped as:** `Contents/Frameworks/libAMSMB2.dylib` (libsmb2 is statically compiled into this dynamic library together with the AMSMB2 wrapper).

### libnfs (NFS client)
- **Used for:** the in-app NFS connection (`NFSClientProvider`).
- **License:** LGPL-2.1 (the `lib` and `include` directories; the `.x` protocol definitions and generated files are simplified BSD — see [libnfs-COPYING.txt](https://mfsoft.dev/licenses/libnfs-COPYING.txt)).
- **Copyright:** © Ronnie Sahlberg and contributors.
- **Source:** https://github.com/sahlberg/libnfs (shipped unmodified).
- **Shipped as:** `Contents/Frameworks/libnfs.16.dylib`.

## Source availability

Both libraries are shipped **unmodified** from the upstream projects linked above; the upstream repositories are our source offer. If a future MFCommander build patches either library, the patched fork's source will be published under the LGPL and linked here.

## Replacing a bundled library

The application bundle is signed with the `com.apple.security.cs.disable-library-validation` entitlement, so a `.dylib` you build yourself will load even though it is not signed by our Developer ID. To substitute your own build of libsmb2/AMSMB2 or libnfs:

1. Build a replacement `.dylib` from the upstream source (keep the same install name / SONAME — `@rpath/libAMSMB2.dylib` or `@rpath/libnfs.16.dylib`).
2. Replace the file in `MFCommander.app/Contents/Frameworks/`.
3. Re-sign the bundle for local use if Gatekeeper requires it: `codesign --force --deep --sign - MFCommander.app`.

---

Source: https://mfsoft.dev/acknowledgements
