engineering blog at https://blog.tangled.sh

6 months post

Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.sh>

authored by anirudh.fi and committed by anirudh.fi e0ee0c19 54f33990

+90 -48
+90 -46
pages/blog/6-months.md
··· 2 atroot: true 3 template: 4 slug: 6-months 5 - title: 6 months of tangling 6 - subtitle: new domain, a quick recap, and notes on the future 7 - date: 2025-09-18 8 - image: /static/img/logo_with_text.jpeg 9 authors: 10 - name: Anirudh 11 - email: anirudh@tangled.sh 12 - handle: icyphox.sh 13 - name: Akshay 14 - email: akshay@tangled.sh 15 handle: oppi.li 16 - draft: true 17 --- 18 19 Hello Tanglers! It's been over 6 months since we first announced 20 - Tangled, so we figured we'd do a quick retrospective on what we built so 21 far and what's next. 22 23 - But before that, we've got a big announcement! 24 - 25 - ## tangled.sh is now tangled.org! 26 - 27 - [Chris Maytag](https://bsky.app/profile/cpm5280.bsky.social) very kindly 28 - let us have the tangled.org domain! 29 - 30 - We're still in the process of migrating and there may be stray 31 - references to the .sh domain in places so bear with us. Rest assured: 32 - your current links to tangled.sh will be redirected to tangled.org. 33 34 ## new logo and mascot: dolly! 35 36 Tangled finally has a logo! Designed by Akshay himself, Dolly is in 37 - reference to the first ever *cloned* mammal. 38 39 ![logo with text](/static/img/logo_with_text.jpeg) 40 41 With that, let's recap the major platform improvements so far! 42 43 - ### pull requests 44 45 - One of the first major features we built was our pull requests system, 46 - which follows a unique round-based submission & review approach. This 47 - was really fun to innovate on -- it remains one of Tangled's core 48 - differentiators, and one we plan to keep improving. 49 50 In the same vein, we're the first ever code forge to support [stacking 51 pull requests](/stacking) using Jujutsu! We're big fans of the tool and 52 we use it everyday as we hack on 53 - [core](https://tangled.sh/@tangled.sh/core). Ultimately, we think 54 - PR-based collaboration should evolve beyond the traditional model, and 55 - we're excited to keep experimenting with new ideas that make code review 56 - and contribution easier! 57 58 - ### spindle 59 60 CI was our most requested feature, and we spent a *lot* of time debating 61 how to approach it. We considered integrating with existing platforms, 62 but none were good fits. So we gave in to NIH and [built spindle 63 - ourselves](/ci)! This turned out great -- we could go all in on Nix and 64 - make it "atproto native". 65 66 - Spindle is still early but designed to be extensible. The current 67 - Docker-based engine is limiting -- we plan to switch to micro VMs 68 - eventually. Meanwhile, if you've got ideas for other spindle backends 69 - (Kubernetes?!), we'd love to [hear from you](https://chat.tangled.sh). 70 71 - ### XRPC APIs 72 73 We introduced a complete migration of the knotserver to an 74 [XRPC](https://atproto.com/specs/xrpc) API. Alongside this, we also ··· 80 81 [lexicons]: https://tangled.sh/@tangled.sh/core/tree/master/lexicons 82 83 - ### issues rework 84 85 Issues got a major rework (and facelift) too! They are now threaded: 86 top-level comments with replies. This makes Q/A style discussions much ··· 88 89 ![issue thread](/static/img/issue-threading.webp) 90 91 - ### hosted PDS 92 93 A complaint we often recieved was the need for a Bluesky account to use 94 Tangled; and besides, we realised that the overlap between Bluesky users 95 and possible Tangled users only goes so far -- we aim to be a generic 96 - code forge after all, atproto just happens to be an implementation 97 detail. 98 99 To address this, we spun up the tngl.sh PDS hosted right here in ··· 102 experience as a generic PDS host, but we're still working out details 103 around that. 104 105 ## the future 106 107 We're working on a *lot* of exciting new things and possibly some big 108 - announcements to come: 109 110 - * labels 111 - * notifications: both in-app and emails 112 * preliminary support for issue and PR search 113 - * total federation 114 - * network playback 115 116 - That's all for now; we'll see you in the atmosphere!
··· 2 atroot: true 3 template: 4 slug: 6-months 5 + title: 6 months of Tangled 6 + subtitle: a quick recap, and notes on the future 7 + date: 2025-10-21 8 + image: /static/img/6-months.png 9 authors: 10 - name: Anirudh 11 + email: anirudh@tangled.org 12 + handle: anirudh.fi 13 - name: Akshay 14 + email: akshay@tangled.org 15 handle: oppi.li 16 + draft: false 17 --- 18 19 Hello Tanglers! It's been over 6 months since we first announced 20 + Tangled, so we figured we'd do a quick retrospective of what we built so 21 far and what's next. 22 23 + If you're new here, here's a quick overview: Tangled is a git hosting 24 + and collaboration platform built on top of the [AT 25 + Protocol](https://atproto.com). You can read a bit more about our 26 + architecture [here](/intro). 27 28 ## new logo and mascot: dolly! 29 30 Tangled finally has a logo! Designed by Akshay himself, Dolly is in 31 + reference to the first ever *cloned* mammal. For a full set of brand assets and guidelines, see our new [branding page](https://tangled.org/brand). 32 33 ![logo with text](/static/img/logo_with_text.jpeg) 34 35 With that, let's recap the major platform improvements so far! 36 37 + ## pull requests: doubling down on jujutsu 38 39 + One of the first major features we built was our [pull requests 40 + system](/pulls), which follows a unique round-based submission & review 41 + approach. This was really fun to innovate on -- it remains one of 42 + Tangled's core differentiators, and one we plan to keep improving. 43 44 In the same vein, we're the first ever code forge to support [stacking 45 pull requests](/stacking) using Jujutsu! We're big fans of the tool and 46 we use it everyday as we hack on 47 + [tangled.org/core](https://tangled.org/@tangled.org/core). 48 49 + Ultimately, we think PR-based collaboration should evolve beyond the 50 + traditional model, and we're excited to keep experimenting with new 51 + ideas that make code review and contribution easier! 52 + 53 + ## spindle 54 55 CI was our most requested feature, and we spent a *lot* of time debating 56 how to approach it. We considered integrating with existing platforms, 57 but none were good fits. So we gave in to NIH and [built spindle 58 + ourselves](/ci)! This allowed us to go in on Nix using Nixery to build 59 + CI images on the fly and cache them. 60 61 + Spindle is still early but designed to be extensible and is AT-native. 62 + The current Docker/Nixery-based engine is limiting -- we plan to switch 63 + to micro VMs down the line to run full-fledged NixOS (and other base 64 + images). Meanwhile, if you've got ideas for other spindle backends 65 + (Kubernetes?!), we'd love to [hear from you](https://chat.tangled.org). 66 67 + ## XRPC APIs 68 69 We introduced a complete migration of the knotserver to an 70 [XRPC](https://atproto.com/specs/xrpc) API. Alongside this, we also ··· 76 77 [lexicons]: https://tangled.sh/@tangled.sh/core/tree/master/lexicons 78 79 + ## issues rework 80 81 Issues got a major rework (and facelift) too! They are now threaded: 82 top-level comments with replies. This makes Q/A style discussions much ··· 84 85 ![issue thread](/static/img/issue-threading.webp) 86 87 + ## hosted PDS 88 89 A complaint we often recieved was the need for a Bluesky account to use 90 Tangled; and besides, we realised that the overlap between Bluesky users 91 and possible Tangled users only goes so far -- we aim to be a generic 92 + code forge after all, AT just happens to be an implementation 93 detail. 94 95 To address this, we spun up the tngl.sh PDS hosted right here in ··· 98 experience as a generic PDS host, but we're still working out details 99 around that. 100 101 + ## labels 102 + 103 + You can easily categorize issues and pulls via labels! There is plenty 104 + of customization available: 105 + 106 + - labels can be basic, or they can have a key and value set, for example: 107 + `wontfix` or `priority/high` 108 + - labels can be constrained to a set of values: `priority: [high medium low]` 109 + - there can be multiple labels of a given type: `reviewed-by: @oppi.li`, 110 + `reviewed-by: @anirudh.fi` 111 + 112 + The options are endless! You can access them via your repo's settings page. 113 + 114 + <div class="flex justify-center items-center gap-2"> 115 + <figure class="w-full m-0 flex flex-col items-center"> 116 + <a href="static/img/labels_vignette.webp"> 117 + <img class="my-1 w-full h-auto cursor-pointer" src="static/img/labels_vignette.webp" alt="A set of labels applied to an issue."> 118 + </a> 119 + <figcaption class="text-center">A set of labels applied to an issue.</figcaption> 120 + </figure> 121 + 122 + <figure class="w-1/3 m-0 flex flex-col items-center"> 123 + <a href="static/img/new_label_modal.png"> 124 + <img class="my-1 w-full h-auto cursor-pointer" src="static/img/new_label_modal.png" alt="Create custom key-value type labels."> 125 + </a> 126 + <figcaption class="text-center">Create custom key-value type labels.</figcaption> 127 + </figure> 128 + </div> 129 + 130 + 131 + ## notifications 132 + 133 + In-app notifications now exist! You get notifications for a variety of events now: 134 + 135 + * new issues/pulls on your repos (also for collaborators) 136 + * comments on your issues/pulls (also for collaborators) 137 + * close/reopen (or merge) of issues/pulls 138 + * new stars 139 + * new follows 140 + 141 + All of this can be fine-tuned in [/settings/notifications](https://tangled.org/settings/notifications). 142 + 143 + ![notifications](static/img/notifications.png) 144 + 145 + 146 ## the future 147 148 We're working on a *lot* of exciting new things and possibly some big 149 + announcements to come. Be on the lookout for: 150 151 + * email notifications 152 * preliminary support for issue and PR search 153 + * total "atprotation" [^1] -- the last two holdouts here are repo and pull records 154 + * total federation -- i.e. supporting third-party appviews by making it 155 + reproducible 156 + * achieve complete independence from Bluesky PBC by hosting our own relay 157 158 + That's all for now; we'll see you in the atmosphere! Meanwhile, if you'd like to contribute to projects on Tangled, make sure to check out the [good first issues page](https://tangled.org/goodfirstissues) to get started! 159 + 160 + [^1]: atprotation implies a two-way sync between the PDS and appview. Currently, pull requests and repositories are not ingested -- so writing/updating either records on your PDS will not show up on the appview.
static/img/6-months.png

This is a binary file and will not be displayed.

static/img/labels_vignette.webp

This is a binary file and will not be displayed.

static/img/new_label_modal.png

This is a binary file and will not be displayed.

static/img/notifications.png

This is a binary file and will not be displayed.

-2
templates/index.html
··· 25 <ul class="px-0"> 26 {{ $posts := .Extra.blog }} 27 {{ range $posts }} 28 - {{ if .Allowed }} 29 <li class="mt-5 bg-white dark:bg-gray-800 py-4 px-6 rounded drop-shadow-sm list-none"> 30 {{ $dateStr := .Meta.date }} 31 {{ $date := parsedate $dateStr }} ··· 38 <p class="italic mt-1 mb-0">{{ .Meta.subtitle }}</p> 39 </div> 40 </li> 41 - {{ end }} 42 {{ end }} 43 </ul> 44 </section>
··· 25 <ul class="px-0"> 26 {{ $posts := .Extra.blog }} 27 {{ range $posts }} 28 <li class="mt-5 bg-white dark:bg-gray-800 py-4 px-6 rounded drop-shadow-sm list-none"> 29 {{ $dateStr := .Meta.date }} 30 {{ $date := parsedate $dateStr }} ··· 37 <p class="italic mt-1 mb-0">{{ .Meta.subtitle }}</p> 38 </div> 39 </li> 40 {{ end }} 41 </ul> 42 </section>