{"slug": "unison", "name": "Unison", "category": "git", "category_name": "Git and code hosting", "description": "", "recommenders": 4, "commenters": 9, "warners": 1, "score": 3.698, "rising": 0.02, "first": "2025-11-25", "latest": "2026-08-31", "why": "I like unison but it isn't super well suited to the 'background sync' workflow", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 3, "compare": 1, "warn": 1}, "spark": [1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "I like unison but it isn't super well suited to the 'background sync' workflow", "kind": "", "icon": true, "domain": "unison-lang.org", "github_repo": null, "official_url": "https://www.unison-lang.org/", "pricing": "", "aliases": ["Unison", "Unison Share", "unison"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 788029953, "item_id": 49251872, "url": "https://news.ycombinator.com/item?id=49251872", "by": "unignorant", "date": "2026-08-10", "stance": "recommend", "quote": "big fan of Unison", "excerpt": "Yes, big fan of Unison (the system I described above follows its model for code hash identity) and I use a NixOS machine for most of my software work!", "context": "", "use_case": "", "switched_from": "", "story": "Squeak/Smalltalk 6.1 Release Notes"}, {"id": 781537088, "item_id": 48846068, "url": "https://news.ycombinator.com/item?id=48846068", "by": "oftenwrong", "date": "2026-07-09", "stance": "recommend", "quote": "One possible shape is something like unison-lang's CAS AST model", "excerpt": "I am anticipating a move away from git-style version control entirely. One possible shape is something like unison-lang's CAS AST model: https://www.unison-lang.org/docs/the-big-idea/ This model has some significant downsides for humans, but less so for automatons. It eliminates some major problems of software development like merge conflicts, dependency hell, etc.", "context": "", "use_case": "", "switched_from": "", "story": "How Version Control Will Evolve for the Agent Boom"}, {"id": 747813008, "item_id": 46738313, "url": "https://news.ycombinator.com/item?id=46738313", "by": "aruggirello", "date": "2026-01-23", "stance": "recommend", "quote": "It's a great piece of software", "excerpt": "I'm replacing Dropbox with Unison [0] over ssh, BTW. It's a great piece of software (multiplatform, and it even has a GUI). [0] https://github.com/bcpierce00/unison", "context": "", "use_case": "file sync over SSH", "switched_from": "Dropbox", "story": "What Has Docker Become?"}, {"id": 736987360, "item_id": 46061710, "url": "https://news.ycombinator.com/item?id=46061710", "by": "pchiusano", "date": "2025-11-26", "stance": "recommend", "quote": "Use Unison Share, it's great for all that!", "excerpt": "Use Unison Share, it's great for all that! https://share.unison-lang.org/ It's open source, you can create a free account with GitHub OAuth, and you can push projects there and collaborate on them, open PRs, publish releases, etc. It's very quick to pick up if you're already familiar with GitHub.", "context": "", "use_case": "Hosting and sharing Unison code", "switched_from": "", "story": "Unison 1.0"}, {"id": 736871862, "item_id": 46054491, "url": "https://news.ycombinator.com/item?id=46054491", "by": "sroerick", "date": "2025-11-25", "stance": "recommend", "quote": "I like unison but it isn't super well suited to the 'background sync' workflow", "excerpt": "I just haven't found Emacs to be particularly productive over SSH. IMO it works best on a local machine, there's just too much in the GUI which isn't as workable over terminal. Font rendering, images, clickable text links all take a hit. None are really deal breakers, but Emacs TUI just kind of feels like an afterthought. X11 over SSH doesn't feel responsive to me. Its almost more of an aesthetic choice really, its j", "context": "", "use_case": "", "switched_from": "", "story": "Surprisingly, Emacs on Android is pretty good"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 736850608, "item_id": 46053163, "url": "https://news.ycombinator.com/item?id=46053163", "by": "Nathanba", "date": "2025-11-25", "stance": "warn", "quote": "I'm looking for a far more hands on", "excerpt": "Ok I tried it out. So I run ucm.cmd and it tells me: \"I created a new codebase for you at C:\\Users\\myuser\" but there is nothing there except a .unison folder. I didn't look too closely at first but maybe this all works by storing the code in the sqlite file inside that folder? Dot folders aren't usually relevant for project files. Because then even after the cli had me create a new project called happy-porcupine whic", "context": "", "use_case": "programming language/runtime", "switched_from": "", "story": "Unison 1.0"}]}], "who": [{"by": "Hackbraten", "context": "Librem 5 user in Germany", "url": "https://news.ycombinator.com/item?id=49200060", "date": "2026-08-06"}], "tags": [], "use_cases": ["local naming of content", "file sync", "file sync over ssh", "code hosting for semantic trees", "hosting and sharing unison code", "programming language"], "compared": [{"slug": "dropbox", "name": "Dropbox", "co": 1, "switched_from": 1, "switched_to": 0}, {"slug": "git", "name": "Git", "co": 3, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 783462752, "item_id": 48966422, "url": "https://news.ycombinator.com/item?id=48966422", "by": "lifthrasiir", "date": "2026-07-19", "stance": "recommend", "quote": "I used to make a hybrid bitmap-vector font called Unison [1] a decade ago", "excerpt": "I used to make a hybrid bitmap-vector font called Unison [1] a decade ago and I made it in that way so that I don't have to learn the fine art of (vector) typography. Or at least that I could skip most of it (for example, kerning is still required for proportional fonts, but that doesn't have to be very precise in bitmap fonts). I'm now working on Unison once again after 11 years of time, this time armed with a dedic", "context": "", "use_case": "bitmap-vector font", "switched_from": "", "story": "Making Software: How to make a font"}, {"id": 736857168, "item_id": 46053573, "url": "https://news.ycombinator.com/item?id=46053573", "by": "pchiusano", "date": "2025-11-25", "stance": "recommend", "quote": "The tooling takes a little getting used to but it\u2019s extremely powerful.", "excerpt": "Thanks for this report. The tooling takes a little getting used to but it\u2019s extremely powerful. Here are a few benefits you\u2019ll see - UCM keeps a perfect incremental compilation cache as part of its codebase format, so you\u2019re generally never waiting for code to build. When you pull from remote, there\u2019s nothing to build either. Pure tests are automatically cached rather than being run over and over. Switching branches ", "context": "", "use_case": "programming language tooling (UCM)", "switched_from": "", "story": "Unison 1.0"}, {"id": 736831024, "item_id": 46051939, "url": "https://news.ycombinator.com/item?id=46051939", "by": "pchiusano", "date": "2025-11-25", "stance": "recommend", "quote": "There's support for webhooks on Unison Share as well", "excerpt": "That depends. What are you wanting to accomplish more broadly with the integration? I'll mention a couple things that might be relevant - you could have the git repo reference a branch or an immutable namespace hash on Unison Share. And as part of your git repo's CI, pull the Unison code and compile and/or deploy it or whatever you need to do. There's support for webhooks on Unison Share as well, so you can do things", "context": "", "use_case": "Hosting Unison code", "switched_from": "", "story": "Unison 1.0"}, {"id": 736828000, "item_id": 46051750, "url": "https://news.ycombinator.com/item?id=46051750", "by": "pchiusano", "date": "2025-11-25", "stance": "neutral", "quote": "Unison code is published on https://share.unison-lang.org/ which is itself open source", "excerpt": "Unison code is published on https://share.unison-lang.org/ which is itself open source (it's a Haskell + postgres app), as is the language and its tooling. You can use Unison like any other open source general-purpose language, and many people do that. (We ourselves did this when building Unison Cloud - we wrote Unison code and deployed that within containers running in AWS.) The cloud product is totally separate and", "context": "", "use_case": "", "switched_from": "", "story": "Unison 1.0"}], "threads": [{"url": "https://news.ycombinator.com/item?id=46049722", "title": "Unison 1.0", "mentions": 7}, {"url": "https://news.ycombinator.com/item?id=49491791", "title": "Creepy Crawlies", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49242653", "title": "Squeak/Smalltalk 6.1 Release Notes", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49188022", "title": "I'm switching my phone from Android to Linux", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48904269", "title": "Making Software: How to make a font", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48844709", "title": "How Version Control Will Evolve for the Agent Boom", "mentions": 1}], "sentiment_by_month": {"2025-11": {"warn": 1, "neutral": 1, "recommend": 1}, "2025-12": {}, "2026-01": {"compare": 1, "recommend": 1}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 1}, "2026-08": {"neutral": 2, "recommend": 1}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 792132432, "item_id": 49508277, "url": "https://news.ycombinator.com/item?id=49508277", "by": "__MatrixMan__", "date": "2026-08-31", "stance": "neutral", "quote": "We can make do with local pet names, like how Unison works.", "excerpt": "Yes. I don't think human meaningful identifiers are important. We can make do with local pet names, like how Unison works. We hardly even use the globally consistent names we have. Between humans its always \"hey did you check out that website I sent you?\" And never \"hey did you check out https://foo.bar.biz\" Sharing and endorsement can just be part of the protocol. My reference to the site may as well be in terms of ", "context": "", "use_case": "local naming of content", "switched_from": "", "story": "Creepy Crawlies"}, {"id": 788029953, "item_id": 49251872, "url": "https://news.ycombinator.com/item?id=49251872", "by": "unignorant", "date": "2026-08-10", "stance": "recommend", "quote": "big fan of Unison", "excerpt": "Yes, big fan of Unison (the system I described above follows its model for code hash identity) and I use a NixOS machine for most of my software work!", "context": "", "use_case": "", "switched_from": "", "story": "Squeak/Smalltalk 6.1 Release Notes"}, {"id": 787200962, "item_id": 49200060, "url": "https://news.ycombinator.com/item?id=49200060", "by": "Hackbraten", "date": "2026-08-06", "stance": "neutral", "quote": "For file transfer, I mostly use rsync, Git, or Unison.", "excerpt": "Taking photos is one of the things I got accustomed to not having. The picture quality on my Librem 5 is just too disappointing [0]. In the past I used Bluetooth for keyboard and mouse when I connected the phone to a monitor. (I no longer do because the USB port on my L5 has broken down so badly that it can no longer maintain a DisplayPort Alt mode connection.) I\u2019ve never used Bluetooth for music or similar, it keeps", "context": "Librem 5 user in Germany", "use_case": "file sync", "switched_from": "", "story": "I'm switching my phone from Android to Linux"}, {"id": 781537088, "item_id": 48846068, "url": "https://news.ycombinator.com/item?id=48846068", "by": "oftenwrong", "date": "2026-07-09", "stance": "recommend", "quote": "One possible shape is something like unison-lang's CAS AST model", "excerpt": "I am anticipating a move away from git-style version control entirely. One possible shape is something like unison-lang's CAS AST model: https://www.unison-lang.org/docs/the-big-idea/ This model has some significant downsides for humans, but less so for automatons. It eliminates some major problems of software development like merge conflicts, dependency hell, etc.", "context": "", "use_case": "", "switched_from": "", "story": "How Version Control Will Evolve for the Agent Boom"}, {"id": 747813008, "item_id": 46738313, "url": "https://news.ycombinator.com/item?id=46738313", "by": "aruggirello", "date": "2026-01-23", "stance": "recommend", "quote": "It's a great piece of software", "excerpt": "I'm replacing Dropbox with Unison [0] over ssh, BTW. It's a great piece of software (multiplatform, and it even has a GUI). [0] https://github.com/bcpierce00/unison", "context": "", "use_case": "file sync over SSH", "switched_from": "Dropbox", "story": "What Has Docker Become?"}, {"id": 745061824, "item_id": 46566364, "url": "https://news.ycombinator.com/item?id=46566364", "by": "conartist6", "date": "2026-01-10", "stance": "compare", "quote": "The best current analog for the kind of code forge we'd build is Unison's forge", "excerpt": "By being nothing at all like them. The best current analog for the kind of code forge we'd build is Unison's forge, e.g. here's a library hosted on it: https://share.unison-lang.org/@ceedubs/folds Notice that lines and columns are completely absent in this UX! It's a forge for semantic trees of code rather than text files of code. I think they're only scratching the surface of what you can do when you shatter the lin", "context": "", "use_case": "Code hosting for semantic trees", "switched_from": "", "story": "All my new code will be closed-source from now on"}, {"id": 736987360, "item_id": 46061710, "url": "https://news.ycombinator.com/item?id=46061710", "by": "pchiusano", "date": "2025-11-26", "stance": "recommend", "quote": "Use Unison Share, it's great for all that!", "excerpt": "Use Unison Share, it's great for all that! https://share.unison-lang.org/ It's open source, you can create a free account with GitHub OAuth, and you can push projects there and collaborate on them, open PRs, publish releases, etc. It's very quick to pick up if you're already familiar with GitHub.", "context": "", "use_case": "Hosting and sharing Unison code", "switched_from": "", "story": "Unison 1.0"}, {"id": 736871862, "item_id": 46054491, "url": "https://news.ycombinator.com/item?id=46054491", "by": "sroerick", "date": "2025-11-25", "stance": "recommend", "quote": "I like unison but it isn't super well suited to the 'background sync' workflow", "excerpt": "I just haven't found Emacs to be particularly productive over SSH. IMO it works best on a local machine, there's just too much in the GUI which isn't as workable over terminal. Font rendering, images, clickable text links all take a hit. None are really deal breakers, but Emacs TUI just kind of feels like an afterthought. X11 over SSH doesn't feel responsive to me. Its almost more of an aesthetic choice really, its j", "context": "", "use_case": "", "switched_from": "", "story": "Surprisingly, Emacs on Android is pretty good"}, {"id": 736859840, "item_id": 46053740, "url": "https://news.ycombinator.com/item?id=46053740", "by": "rlmark", "date": "2025-11-25", "stance": "neutral", "quote": "here's a side-by-side comparison guide between Java and Unison", "excerpt": "If it helps, here's a side-by-side comparison guide between Java and Unison. It covers the syntax primarily: https://www.unison-lang.org/compare-lang/unison-for-java-devs/", "context": "", "use_case": "programming language", "switched_from": "", "story": "Unison 1.0"}, {"id": 736850608, "item_id": 46053163, "url": "https://news.ycombinator.com/item?id=46053163", "by": "Nathanba", "date": "2025-11-25", "stance": "warn", "quote": "I'm looking for a far more hands on", "excerpt": "Ok I tried it out. So I run ucm.cmd and it tells me: \"I created a new codebase for you at C:\\Users\\myuser\" but there is nothing there except a .unison folder. I didn't look too closely at first but maybe this all works by storing the code in the sqlite file inside that folder? Dot folders aren't usually relevant for project files. Because then even after the cli had me create a new project called happy-porcupine whic", "context": "", "use_case": "programming language/runtime", "switched_from": "", "story": "Unison 1.0"}, {"id": 736816720, "item_id": 46051045, "url": "https://news.ycombinator.com/item?id=46051045", "by": "pchiusano", "date": "2025-11-25", "stance": "recommend", "quote": "Overall I think Unison would be a nice implementation language for really anything that needs to make interesting use of hashing", "excerpt": "Yes, we have a way of hashing literally all values in the language, including arbitrary data types, functions, continuations, etc. For instance, here, I'm hashing a lambda function:[1] > crypto.hash Sha3_256 (x -> x + 1) \u29e9 0xs704e9cc41e9aa0beb70432cff0038753d07ebb7f5b4de236a7a0a53eec3fdbb5 The test result cache is basically keyed by the hash of the expression, and then the test result itself (passed or failed, with t", "context": "", "use_case": "Hashing and test caching", "switched_from": "", "story": "Unison 1.0"}]}