From f5a82e8d2184efb0e5fa02878bfe868717ae8ede Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Tue, 26 Nov 2024 14:38:41 +0100 Subject: [PATCH] add jujutsu article --- Tuprules.tup | 8 +++++ articles/jujutsu/Tupfile | 6 ++++ articles/jujutsu/index.md | 40 ++++++++++++++++++++++++ articles/jujutsu/jj_revision.drawio.png | Bin 0 -> 7202 bytes articles/jujutsu/slides.md | 23 ++++++++++++++ articles/web_stack.md | 1 + flake.nix | 2 ++ 7 files changed, 80 insertions(+) create mode 100644 articles/jujutsu/Tupfile create mode 100644 articles/jujutsu/index.md create mode 100644 articles/jujutsu/jj_revision.drawio.png create mode 100644 articles/jujutsu/slides.md diff --git a/Tuprules.tup b/Tuprules.tup index 3712e6e..a1c3ed5 100644 --- a/Tuprules.tup +++ b/Tuprules.tup @@ -24,3 +24,11 @@ HTML_TEMPLATE = main.html JPG_OPT = -quality 80 -strip -interlace Plane !blur_mini = |> ^ %f -> blur mini^ convert %f -resize 400x400 -blur 0x8 $(JPG_OPT) %o |> blur_mini.jpg !thumbnail = |> ^ %f -> thumbnail^ convert %f -resize 200x200 $(JPG_OPT) %o |> + +# +# Slides +# +MARP = npx @marp-team/marp-cli@latest +MARP_OPTS = --allow-local-files --bespoke.progress +!marp_pdf = |> $(MARP) $(MARP_OPTS) %f --pdf --output %o |> %B.pdf +!marp_html = |> $(MARP) $(MARP_OPTS) %f --html --output %o |> %B.html diff --git a/articles/jujutsu/Tupfile b/articles/jujutsu/Tupfile new file mode 100644 index 0000000..df556c8 --- /dev/null +++ b/articles/jujutsu/Tupfile @@ -0,0 +1,6 @@ +include_rules +HTML_TEMPLATE = article.html + +: slides.md |> !marp_pdf |> jujutsu_slides.pdf ./ +: index.md | ./ |> !html |> + diff --git a/articles/jujutsu/index.md b/articles/jujutsu/index.md new file mode 100644 index 0000000..1059614 --- /dev/null +++ b/articles/jujutsu/index.md @@ -0,0 +1,40 @@ +--- +title: "Lightning talk: Jujutsu" +date: 2024-11-26 +--- + +_This article is also available as a lightning talk: [pdf](./jujutsu_slides.pdf)_ + +## What is it? + +[Jujutsu](https://github.com/martinvonz/jj) is a new version control software +(VCS), like git, mercurial, etc. Git is the actual gold standard for VCS, even if its +UX could be better. There is a whole ecosystem around git that makes switching +to similar projects (eg. mercurial) a daunting task. How does jujutsu plans on +making us switch? + +Jujutsu separates the frontend (what the user interacts with) and the +backend (how the information is stored). And the main backend is actually git +repositories. There is a native backend being developed but it's not ready for +prime time. Sharing the same backend as the most popular VCS, Jujutsu aims to +improve on the frontend. + +## How does it compare? + +### No branch, only revisions + +Jujutsu understand git commits, but operates at a higher level with revisions. +Revisions wrap commits, however as you move revisions around (edit with changes, +or rebase), they keep their id. Only their underlying commit id changes. + +With revision ids being stable, you don't need branches to start working: create +a new revision, and start working. You will need to create a branch (or bookmark +in jujutsu world) to push your changes, but it can be done at the end. + +There is no special mode like git's "Detached HEAD", you are always on a revision. You can jump around + +## VCS landscape +> I was part of the team at Meta that built Sapling for many years. I’m no +> longer at Meta and I use jj full time. +> +> _[Discussion on Lobste.rs](https://lobste.rs/s/rojoz1/jujutsu_jj_git_compatible_vcs#c_foqya4)_ diff --git a/articles/jujutsu/jj_revision.drawio.png b/articles/jujutsu/jj_revision.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..66d715137332447f6bcf43b415ae00ad04427499 GIT binary patch literal 7202 zcmdT}c|6qry0;_}N)ZYzqR2kh5wcU3tdrd^V+>{nGZ;+vH6kP-G0KviY)x58l1Nkb zEn8`jC4ROj_bcQ4`rUKxdENUu_m6X4ui3uO=h@%S^L!pJF;@+BSecJA)6mec>gj5l z0N*3Po5-{u_|!N{%BGFy2{l-8CNmjsT^Uz3s&1gQhR^pR+9Jn)TIkh7PQ z*`;~;2!hn4K+@up!oZ0R+{q0CNJ>jeNdhk^fTWG|f;(dXG3{SmyXJi0URWdsz3Y** zjJTpWX!ii?1a*h+k^$iz&m1vcFu2z)32;YR5Tqq2sRkVEyg(Y%P=E(C6h)Q13PdAD z6-UCTVf(pSX<^;qMqd6hMq-LML$o3g(qFah=|tgmyr3Q~1{fIJ9Z(FzQyr24$?Wgh8X>PES%Y{}pw<*R*}`-Y^|aeUOrHFZ)(a-;6BJ-Mg6O6u{giILdNbRZ{ChzE4CPmJ|2&_6 zW>p7{LBVleet_CNjSAFUP-_@y)Lk3Ce^!L_j)EOmTz;qX z_V0iTNCTK}|HEzf>+COk#qSgF*XiCSvwJ`l*jeOuFTg%Cq#X^-5hguNH8Z^3T&885 zxz^EEHzqZ$?!)Y<+`J4nIr{~owO^(g@zN%ap>twR-#8L?B&X~c|@z1i#7HQq1Im^RjIu`f2~v{zw>AZ4g%RO3bY-$j_5S& z>F$>4>+Pl6$bT{h<@A#nP@7=p6<_abdzA3`=t{DY3N5UpkVqu@eg9+HaOAvf=U04k zI^&tVOE1!VDRH>h$`$i{NSc#Q+;Fw3%*k+Zt0x1V7Bs=cNzwCVm*#yr&`AQxX3&Cq{#|Sw~3TZk#2Cnc(LP zTsAai&z6{NdA}NTFD~MV;6s}Pr^~rKJ?6U&gSU+3C&NZjnfJr*HjU^ z(&UK6y4gjgrIGI+=xAWEAormfR=a>XS#AZ7Q-qDrsbEmJ>d$q0JO63Hy4689C^=gV zj(T0wl7ct19FZo z0?Z4?j#klL6s}Up;7{5@z zmR(U{Oat;;g3*pWey4H}JJk`QG+(DdgWLYG)|{gitGU$I*VkM-8h8*O*t3&7Cts<( zyRSU{;-JL7EqSzcMd;6^b_u!}SilD5LBfq7%wUz?rGf75eOFS&BlMDmo_C~yV#%4< zPDPI)RPFQGvPL#0;TqM2XUkQxWASsG4isKzEgb}ycYYZAF5;caCX1o+ikZUp)-r?p zdeCs-gii&asoZbbxo&Hz9okoFOLyzEMr8Em$ZhcwhqYnsp?f}qNb*x(%w0)nsKPmZ z1&>RY`m5jv|4{YHdpb{=9s6)aA|ha+9?}$PRAyJN*)me$q{B`E0O2Za{OOOMN<+N# zW9Nz-Z;nzj6AsGb0Y^z;0`imy>ym`6Z>^3+3PC>!_^}YiY`4DB@}TXX7IwJ#Vas5U z@4QXoI#3@E6zClVo6D+4hquRr4ci#V!YweUYC3I5zuA=opu)>r5xpsf}#;@wONhZKb7wJO{Fc4 z_>RUrJ{1~H{$sYUjEN78*j!tXxby;aLZ$Ay)|fBge=&|FvpHPBF`bAl@YEsCjXdQt zRM~)W%eiwu+y1#3j3@yr)6Oj2DM9&|kl{Th0iAe`TjSU^!PKThs#~W{Y1SEE0>=66+rE?SI3^1Ag-!Ix78$MneZ&OfdOy=+KDOeM<`Ea%q=?;CJRf!}1j5eMY+5wguqCV>g`sb*<@lB?!C=#LTY{knF~khsQo9y-mZJ$m<5;tl zoI`Wa+%Q``ae13rr4y3Me7MA3bHpS*d|c)BJKUQaSVjahw;ED6^s!#Gy!!#LK=nn# zzWJ*g_o{7KK~MuJc2PAhT@wCS?IpTzHHMh1-6Zow}{JS zio0ZWy2S~%u+V<9D!)r+k2yKOgorhW{dKs&gnL*4-FmujpayPstS-!uE|8Zu$eM4v zkX3cS^i&Kg2{w>H{1`W^c5d8AT7gkZT{K3hTMo}V8XxwGtalb9|K2p1=tQZKj#vhe9qjx*bta|Rs~yNX^ckLPfp=&H-x;yG9KTdO@z4ro$QP4@h zMpyuNBv<={h9yZ+2K8GZ1P%8}gEL${0Rva-bcLV!4XtORa)Q4!aCCAsnX*K0tGMddz7JUd_inhUq&?@R~YnD)Ao#SCKuZ#Y^QJ4bdRj!n52*JUr) z+B;Ib_J_WkP73Qh39*?b2pv!GHVg3~TMpiDDV2hd`UQ0RgHEQ1Ysd3|U+A59>ZXzn z>N&r!iX{`-eP(t6)aDp0uDPBQZa6g}qS@JT+VQfpKEak=1za{6y)hz!e8MG&qg2g2 zH7ArV!YWnD1%_%+NBPYlkPCiEE51dV2l=$$|8dUpwsgpe0Mk>mLne`()*|07RWjqF z#8Il}XX{`}k%lJc(NjhtH^}g@drjnx_FVV4Pp7BrA>en3#*v-Qg1wxO+AM1nN@TLP z3pWe>l5~8ud_K25^@BPOc#{1J%flPi&XOa6a@T8J+cj2hEv4#8Bg7j}FAt1xI-C610bG3yrFNsef{z+W9ox0<~ik!YpB1D35HtgYdJWYp+?;Vf@drg$7V zEuX{}`kQuax0sl{Dyc!~ z2zNaf|4`A?*kBV9ANA68QZjp0|H}U6kHNj7Pi~ey$(SKqb_m;g;x+}n(pJkv1D>_H z-ZzvHEokk-baWFR7Zi~c#KLA*m+3RLLe3gk+As?0JRIqeQMGv&PsEl;`fUzq+#wd- z!jUE@tL?720`IEh!}cqwbZwD6A-M_8xsM-%XKp+gN+6o*-NX;2Pesk9xv3*s#db_e z;d~~vM{Xbk>+YY__+kaES+J#zjDLswm@K|PFO6fd{lvnn*f^y4D&T!6u`9gv!{?Mo z1$jT}VQhzTN@!NrkAS<{By#g|(pURB_xHpvB^6k8;sR#AiP2|fxyouHAOMq8jU3FkqS>p}{2r!rLH#nU~HboN~rdq!1Z|7*Ovl*VMZ0 zG7(_aJ=vbp>8rhn?*w)V6A{~`q7{+ECY7F^p2eA>vO-+!RCbB9aA<^f%k^_89ujlq zOv9;YA~vZgP3jFSZ^Jt46JH(%biN&6R{F^C_H&F04S@2*&iaT#|^Y(=N7={ zUABQGD-zlq`5ai^9M%`d%ia3Kf#rw}SX+23N^OLvLo>O5e4j1zppZ{fhMr1vvzCON zyN{=Hb#*;^y@1>iA27EcaG9RcAuEA6Ep}`N3Sar<2Y1RyGa}r|{xWeqpuF`K<$%>D zU=?#{j%4+Cao}8&HKv}yG~Y0yK49%d55%4|mP;a%U)jHDYh#&KwSBnGQ($Z3OO~W- z_xZZ1bhm6zX91a$=*TD7FE66m1>V%UiB`F(46+R^^jFXuUi_xnRM__zVRWs=ormSP z%aWej9Z%kO|n&!=m{8nSOqsmAKYGcoK~K@KA5D%SbimO@F@8N!rAmPY>65-3Kt}|RXI_Z&ya@gtg7Zj-IjmCSufIm9QkzGR9Dq%6}DuD}epw7c7Y|!M80~a#&pX#gSr;ioR z2_}VI$PCv#oj%seu(R}~3gD+hxOgUC-3$}AB{dCJyV2HWLu@=5imhwe#7UGh+^T`k zXcpeek8%uY^W23ERY#yFUdBk`DCEPHx;OQ%8>fVK($1SKc@Muf>+b$(n4jVJ?9uh+@v!e!lDb6iN2;EqELJUOj&qodTQBD+^%a zli_cyq{}56+gy1NZn!og!eXo9@%gfjWG82sx+n5%0nt9SJ9L5#td#%!{Dn+p(+ERL zH)tNCK|A}++)2fonZ>qHbNG}TL$LfYZ@J>$(f1ij$44Vy*c85g z8+8`<*(|AOX}W} zd}%B?t3~?&iKY^Sqt*O!dPJm&{G*d%qR*KCrok&APG5TSt3!8Tr*yOUYj~qNG z>JKGXvg=sz{O+a+7~t_N?Mn99^zdu9)L+tXTV%f-1;)zgusUKXK1DL7?ZF$7TQBAG z&;x-DgP(yL!ne4JHGaf<(1h|xF+%?6dJ*b=U_I-09CrhI#zgWJiVH*NalWc<;?&KX z)&`OBR%Qo(_P-+6D2FC7_&gGbXrF8&Gq6F1n}@EgO z_l1j(D5i_yz4Ljvuw?|TJ48?dr?msaZD8HJ{i(9Af3VQ??XCJJ6}fMKJ4Tyl;`}6E znrymjQ>SI}18H2tyijGHYtz2Z#OVu%8$N8%Wdw@$H{Uydn4ffyNlezDblpU{4R6FJ?@&COE6BAC;o_|g(vYGGvL{^792WDo;> il1FH4oh@~n9`9dsrkWHR4*c(rMo-I7vsB$7^uGX#HK*4A literal 0 HcmV?d00001 diff --git a/articles/jujutsu/slides.md b/articles/jujutsu/slides.md new file mode 100644 index 0000000..b3ab148 --- /dev/null +++ b/articles/jujutsu/slides.md @@ -0,0 +1,23 @@ +--- +marp: true +theme: gaia +footer: '**Fabien Freling** - 2024-11-26' +paginate: true +--- + + + + + + +# Jujutsu + +Life after Git + +--- diff --git a/articles/web_stack.md b/articles/web_stack.md index 1ffc6d8..bface29 100644 --- a/articles/web_stack.md +++ b/articles/web_stack.md @@ -1,6 +1,7 @@ --- title: Web stack date: 2019-06-26 +update: 2024-11-26 --- Previous stacks diff --git a/flake.nix b/flake.nix index e0c7923..df507e3 100644 --- a/flake.nix +++ b/flake.nix @@ -7,10 +7,12 @@ devShell.x86_64-linux = with pkgs; mkShell { nativeBuildInputs = [ + graphviz-nox imagemagick just libavif libjxl + nodejs nushell pandoc tup