Rasmus Olsson

Fluent Assertions License Change

Tags: dotnet,
January 22, 2025

I’ve relied on Fluent Assertions for years under its Apache-2.0 license, so when v8.0 switched to a commercial license, I had to rethink what free alternatives are available.

Why Fluent Assertions Changed Licenses

I don't exactly what the maintainers had in mind, but it feels like Fluent Assertions got big enough that doing bug fixes, feature requests, and support in evenings and weekends just wasn’t cutting it. Adding a paid tier buys them real development time so the lib can stay healthy and they don’t burn out.

Some Alternatives

Look for official fork

Its not uncommon that the community creates a fork out of the last commit of Apache 2.0 version

Stay on 7.x Stay on v7.x (Apache 2.0)

  • Pros: no cost and free critical updates for now.
  • Cons: No new features, manual upkeep for bug-fixes.

Migrate to an Alternative
Swap in another OSS assertion library

  • Pros: Free, continuous updates
  • Cons: Migration effort, subtle behavior differences. Picking a alternative is sometimes not so straightforward but doing a assessment like looking at github stars, contributors, downloads and other companies might give a good enough assessment.
  • Alternatives: Shouldly, NExpect, Snapshooter, or built-in xUnit/NUnit asserts

Fork Internally

Fork v7.x into my org’s repo and treat it like an internal package.

  • Pros: Full control over patches and security updates.
  • Cons: Maintenance burden

Purchase a License
Buy the new Fluent Assertions commercial tier.

  • Pros: No migration needed. Access to latest features, official support etc.
  • Cons: Recurring cost per developer

Negotiate or Contribute
Reach out to the maintainers for a “community” exception or offer contributions in exchange for more lenient terms.

  • Pros: Potential zero-cost path, helps shape project direction.
  • Cons: Custom agreements and time investments.

What I Chose

For now I decided to perform Stay on 7.x and I'm leaning on adopting a "official fork" maybe https://github.com/AwesomeAssertions/AwesomeAssertions.

To make sure I do not update the fluent assertions package by mistake we can pin the version, and applying license scanning check in CI.

I wrote a post about a custom free solution for keeping track of nuget license here: https://www.rasmusolsson.dev/posts/tracking-nuget-licenses-with-dotnet-project-licenses

Happy coding!

please share