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 -46
pages/blog/6-months.md
··· 2 2 atroot: true 3 3 template: 4 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 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 9 authors: 10 10 - name: Anirudh 11 - email: anirudh@tangled.sh 12 - handle: icyphox.sh 11 + email: anirudh@tangled.org 12 + handle: anirudh.fi 13 13 - name: Akshay 14 - email: akshay@tangled.sh 14 + email: akshay@tangled.org 15 15 handle: oppi.li 16 - draft: true 16 + draft: false 17 17 --- 18 18 19 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 20 + Tangled, so we figured we'd do a quick retrospective of what we built so 21 21 far and what's next. 22 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. 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). 33 27 34 28 ## new logo and mascot: dolly! 35 29 36 30 Tangled finally has a logo! Designed by Akshay himself, Dolly is in 37 - reference to the first ever *cloned* mammal. 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). 38 32 39 33 ![logo with text](/static/img/logo_with_text.jpeg) 40 34 41 35 With that, let's recap the major platform improvements so far! 42 36 43 - ### pull requests 37 + ## pull requests: doubling down on jujutsu 44 38 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. 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. 49 43 50 44 In the same vein, we're the first ever code forge to support [stacking 51 45 pull requests](/stacking) using Jujutsu! We're big fans of the tool and 52 46 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! 47 + [tangled.org/core](https://tangled.org/@tangled.org/core). 57 48 58 - ### spindle 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 59 54 60 55 CI was our most requested feature, and we spent a *lot* of time debating 61 56 how to approach it. We considered integrating with existing platforms, 62 57 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". 58 + ourselves](/ci)! This allowed us to go in on Nix using Nixery to build 59 + CI images on the fly and cache them. 65 60 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). 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). 70 66 71 - ### XRPC APIs 67 + ## XRPC APIs 72 68 73 69 We introduced a complete migration of the knotserver to an 74 70 [XRPC](https://atproto.com/specs/xrpc) API. Alongside this, we also ··· 80 76 81 77 [lexicons]: https://tangled.sh/@tangled.sh/core/tree/master/lexicons 82 78 83 - ### issues rework 79 + ## issues rework 84 80 85 81 Issues got a major rework (and facelift) too! They are now threaded: 86 82 top-level comments with replies. This makes Q/A style discussions much ··· 88 84 89 85 ![issue thread](/static/img/issue-threading.webp) 90 86 91 - ### hosted PDS 87 + ## hosted PDS 92 88 93 89 A complaint we often recieved was the need for a Bluesky account to use 94 90 Tangled; and besides, we realised that the overlap between Bluesky users 95 91 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 92 + code forge after all, AT just happens to be an implementation 97 93 detail. 98 94 99 95 To address this, we spun up the tngl.sh PDS hosted right here in ··· 102 98 experience as a generic PDS host, but we're still working out details 103 99 around that. 104 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 + 105 146 ## the future 106 147 107 148 We're working on a *lot* of exciting new things and possibly some big 108 - announcements to come: 149 + announcements to come. Be on the lookout for: 109 150 110 - * labels 111 - * notifications: both in-app and emails 151 + * email notifications 112 152 * preliminary support for issue and PR search 113 - * total federation 114 - * network playback 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 115 157 116 - That's all for now; we'll see you in the atmosphere! 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 25 <ul class="px-0"> 26 26 {{ $posts := .Extra.blog }} 27 27 {{ range $posts }} 28 - {{ if .Allowed }} 29 28 <li class="mt-5 bg-white dark:bg-gray-800 py-4 px-6 rounded drop-shadow-sm list-none"> 30 29 {{ $dateStr := .Meta.date }} 31 30 {{ $date := parsedate $dateStr }} ··· 38 37 <p class="italic mt-1 mb-0">{{ .Meta.subtitle }}</p> 39 38 </div> 40 39 </li> 41 - {{ end }} 42 40 {{ end }} 43 41 </ul> 44 42 </section>