The problem | Our 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 calls in 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 computation can 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, or just 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 on new foundations to make the developer experience better. |