there are many factors at play, so I can't give you a truly exhaustive list but at a high level:
- SpiceDB has premiered most of the major new features that have been adopted by the others (caveats being a prime example)
- OpenFGA does not support distributed dispatching, nor consistency options, which makes its caching less efficient
- From various scale and performance tests, we know SpiceDB is generally the most scalable and performant solution
- OpenFGA and Permify support a concept of multi-tenancy at the API layer; SpiceDB has chosen to explicitly not do so, as we've determined that noisy neighbors make it a concern to have multi-tenancy in the same cluster