I built out a local prototype of a jj native knot (i.e. no git in the picture) hooked up to a modified appview.
At a high level this was, a jj cli backend, native protobuf sync protocol, a knot server, and a bunch of changes to the appview to hook the new knot type up and map various screens onto it.
Feels like this would possibly enable some interesting ideas above the store jj stuff in git approach. E.g. share evolog/op log info, have that be available to understand how code changed, even though it's not necessarily recorded in the end result.
I've intentionally not specced this issue out with details. I've slop prototyped this and got it actually running already - about 35kLoC (note this was pre- the rust based knot server landing, so I'd expect a bunch of this to be significantly smaller if done again). But a prototype locks in my preferences for this and I'm curious to hear other people's approaches that might work here.
Yes jj can work on top of git, I know. I'm curious though about dropping the backwards compatibility here and wondering if doing it with / adjacent to tangled might be a reasonable approach.
I'd also love to see a native jj implementation. Fundamentally jj on git is worse than raw jj and has fewer collaboration features.
Supporting jj natively could also be a fundamental differentiator for tangled between both GitHub and being the social jj platform fills a gap that ersc has been explicit they're not currently aiming for.