What is jj and why should I care?
Jujutsu (jj) emerges as a potential Git successor, promising a simpler yet more powerful distributed version control experience by blending the best of Git and Mercurial. Its key appeal on Hacker News lies in its claimed ability to simplify complex Git workflows and its Git-compatible backend, allowing individual developers to adopt it without requiring their entire team to switch. However, this bold claim sparks intense debate among developers, with many questioning the necessity of a new VCS and highlighting potential integration challenges.
The Lowdown
The article introduces jj, the command-line interface for Jujutsu, a new distributed version control system (DVCS) designed to improve upon existing systems like Git and Mercurial. It positions jj as a tool that is both simpler and easier to use than Git, while paradoxically offering more power and cleaner workflows.
jjaims to synthesize the most beneficial features of Git and Mercurial into a cohesive new system.- A central claim is that
jjprovides a smaller set of essential tools that are more powerful due to their integrated design. - Advanced
jjusage is presented as offering powerful version control capabilities that are challenging or impossible to achieve with standard Git. - A significant selling point is its
git-compatible backend, meaning users can adoptjjindividually without forcing their entire team to convert, thus minimizing risk and transition friction.
The author acknowledges the ambitious nature of these claims but invites readers to explore the tutorial to understand how jj delivers on its promise. The low-risk trial due to Git compatibility is emphasized as a compelling reason to investigate jj.
The Gossip
Git's Grievances and the Case for `jj`
Many commenters debate the perceived shortcomings of Git and whether `jj` genuinely offers a compelling alternative. While some acknowledge Git's complexity and
Workflow Wonders and Woes
A significant portion of the discussion revolves around `jj`'s unique workflow, particularly its handling of commits and the distinction between `jj new` and `jj edit`. Commenters express confusion and concern over `jj`'s seemingly 'automatic' commit behavior, contrasting it with Git's explicit staging area. Proponents clarify that `jj new` acts like creating an empty staging area, and advise against `jj edit` for most tasks, suggesting `jj new` followed by `jj squash` as a safer alternative. This highlights a learning curve and new idioms for Git veterans.
Compatibility Concerns and Review Roadblocks
Despite `jj`'s claim of Git compatibility, users raise practical integration challenges, especially concerning code review workflows on platforms like GitHub. The difficulty arises from `jj`'s frequent rebasing and rewriting of history, which can cause review platforms to 'lose' the delta between reviewed changes. Commenters seek solutions, including discussing GitHub's `gh-stack` feature, but ultimately highlight that seamless collaboration with Git-centric tools remains a hurdle. However, others attest to happily using `jj` on Git teams, suggesting it's manageable.
AI Adoption and VCS Evolution
A few commenters ponder `jj`'s potential role in the age of AI, questioning whether it is 'better for AIs.' While some note AI models struggle with `jj`'s evolving CLI due to outdated training data, others suggest `jj`'s robust `undo` capabilities and commit-as-snapshot model might make it more forgiving for AI agents. The discussion also broadens to the future of version control, with calls for a concerted industry effort to evolve beyond Git, possibly with a 'GitNext' system that maintains backend compatibility while improving the user experience.