🧰 What problems does Unison solve?

The problemOur remedy
Cloud infrastructure management overhead:Managing cloud infrastructure is complicated and not all teams have the expertise or desire to do it themselves. Furthermore, managing cloud infrastructure isn't done with a nicely typed program; instead, it's lots of ad hoc tooling, shell scripts and YAML files.Unison code deploys itself.Our cloud computing platform, Unison Cloud,makes deploying long-running services, serverless functions, and batch jobs to the cloud as easy as calling a regular function. Infrastructure management is written as a typed Unison program.
Inter-service communication boilerplate:Writing encoders and decoders at service boundaries is part of the tedious overhead we've accepted for microservice architectures.Native service callsin Unison eliminate the need for intermediaries.Service calls are typechecked function calls.
Database communication boilerplate:Translating your typed domain models to something the database understands is tedious and loses type information.Unison supports native, typed, transactional storage in the Cloud.That means no writing sql adapters, no special query languages, just store and access Unison data.
Testing and profiling distributed systems:Testing the integration of an entire distributed system often involves setup and teardown of resources or copious data mocking.Unison's effect system separates your business logic from its implementation.Our model for distributed computationcan run against test backends that focus on observability, tracing or performance.
Unnecessary merge conflicts:Dealing with semantically unimportant merge conflicts is at best a papercut and at worst a big waste of development time.Semantic version control.Unison's version control is language-aware. There are no conflicts due to code formatting or whitespace, order of imports, order of definitions in a file, or any other differences that aren't semantically meaningful.
Dependency management nightmares:Finding compatible sets of library versions can be difficult or impossible due to dependency conflicts. Dependency upgrade tasks often snowball in scope to include far more work than originally intended.Unison eliminates name conflicts.Many dependency conflicts are caused by different versions of a library "competing" for the same names. Unison references defintions by hash, not by name, and multiple versions of the same library can be used within a project.
Look, programming's no fun sometimes:When programming tasks are needlessly complicated, tedious, orjust plain weird,it can be demoralizing. Can't things be better?Redesign what's needed to make things awesome.We've built Unison with love and care onnew foundationsto make the developer experience better.