{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihkrlvcn7244uv6veaksq2zlzf2usqvf5vbhaptvrsn7jcshuk7rq",
    "commit": {
      "cid": "bafyreidjl5eqvghheeekdpincct5hfe65gqnocxvrgaaukhsr2abagprne",
      "rev": "3mmrr72cyz52o"
    },
    "uri": "at://did:plc:6z5botgrc5vekq7j26xnvawq/app.bsky.feed.post/3mmrr72bbds2k",
    "validationStatus": "valid"
  },
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "alt": "lego bricks - source: https://p.kagi.com/proxy/178378-colorful-LEGO-bricks-toys.jpg?c=5Y3nJsRGiNoV2MxZNTLMPwUrxfq9AOV9shuawkoyocY1L_xvfXoD3C7IG17yz3dZx8bbJwz4sar9EXquMueo3WSXfd8qq3r-KXayZFoeBUmN8zxRNsRaPSx0uCZV0RovZRhL5ssJTi6PMX0-OXlE4A%3D%3D",
              "aspectRatio": {
                "height": 1080,
                "width": 1920
              },
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreibxmcg3nf7aiouqefa2ybfqg27ijvnryml555gil46ujj7idioemu"
                },
                "mimeType": "image/webp",
                "size": 454688
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 35,
                    "byteStart": 0
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://p.kagi.com/proxy/178378-colorful-LEGO-bricks-toys.jpg?c=5Y3nJsRGiNoV2MxZNTLMPwUrxfq9AOV9shuawkoyocY1L_xvfXoD3C7IG17yz3dZx8bbJwz4sar9EXquMueo3WSXfd8qq3r-KXayZFoeBUmN8zxRNsRaPSx0uCZV0RovZRhL5ssJTi6PMX0-OXlE4A%3D%3D"
                    }
                  ],
                  "index": {
                    "byteEnd": 41,
                    "byteStart": 35
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 42,
                    "byteStart": 41
                  }
                }
              ],
              "plaintext": "Lego - the ultimate plugin system (source)",
              "textSize": "small"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 109,
                    "byteStart": 105
                  }
                }
              ],
              "plaintext": "I've recently been getting back into using Obsidian after a years long hiatus mostly using Logseq and -- gulp -- Apple Notes."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "While Obsidian comes with some great features and \"core plugins\" out-of-the-box, a big part of my re-onboarding experience has been customizing the environment with community plugins to fit my specific needs: exporting flashcards to anki with custom templates, converting kindle highlights to obsidian notes, setting up kanban boards, directory navigation enhancements, etc."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 144,
                    "byteStart": 136
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://notes.wesleyfinck.org/3mljuu3o43k2k"
                    }
                  ],
                  "index": {
                    "byteEnd": 190,
                    "byteStart": 157
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 265,
                    "byteStart": 258
                  }
                }
              ],
              "plaintext": "This process is trial-and-error: I search for existing plugins and test them out to see how they work. If I like them, I'll continue to practice using them (tools are best paired with habits). If not, I remove it and look for another. If I really can't find exactly what I'm looking for it's not a deal-breaker for Obsidian. I could always try building my own obsidian plugin or, since all the data in stored locally and formatted as (obsidian-flavoured) markdown, I could build/use any kind of program that can access local, easy-to-read/manipulate files."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "The key point is that much of the functionality that makes Obsidian so valuable doesn't come from the core Obsidian team."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 223,
                    "byteStart": 205
                  }
                }
              ],
              "plaintext": "I expect that if the atproto ecosystem continues to mature, we'll find ourselves in an analogous situation as the Obsidian ecosystem does -- except the community plugins won't be for a single app, but the ecosystem at large."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "We're already catching glimpses of this future."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:7qktq2csymlprtxrkgdchy3s"
                    }
                  ],
                  "index": {
                    "byteEnd": 32,
                    "byteStart": 20
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://bsky.app/profile/vicwalker.dev.br/post/3ml5mdg2yrk2f"
                    }
                  ],
                  "index": {
                    "byteEnd": 142,
                    "byteStart": 132
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:fip3nyk6tjo3senpq4ei2cxw"
                    }
                  ],
                  "index": {
                    "byteEnd": 203,
                    "byteStart": 186
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://airglow.run/u/accio.blue/3mmiupbwykk22"
                    }
                  ],
                  "index": {
                    "byteEnd": 247,
                    "byteStart": 239
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:rljif32vldjxbs3guprqal6h"
                    }
                  ],
                  "index": {
                    "byteEnd": 302,
                    "byteStart": 291
                  }
                }
              ],
              "plaintext": "Emerging tools like @airglow.run allow anyone to create atproto automations -- protocol plugins, really. For example, automatically converting stars of Tangled repos to Semble cards (by @vicwalker.dev.br) or taking any liked bsky post and creating Semble cards for any links in the post (by @accio.blue)."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://notes.wesleyfinck.org/3maq3h26ook2h"
                    }
                  ],
                  "index": {
                    "byteEnd": 109,
                    "byteStart": 54
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:re3ebnp5v7ffagz6rb6xfei4"
                    }
                  ],
                  "index": {
                    "byteEnd": 261,
                    "byteStart": 247
                  }
                }
              ],
              "plaintext": "These kinds of conversions enable customized forms of interoperability without apps needing to share lexicons or coordinate on standards, which can be a time consuming and difficult process (especially if the domain is not yet well established -- @standard.site being a great example of when lexicon standardization makes sense)."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://webtil.es/"
                    }
                  ],
                  "index": {
                    "byteEnd": 114,
                    "byteStart": 105
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:mdg3w2kpadcyxy33pizokzf3"
                    }
                  ],
                  "index": {
                    "byteEnd": 128,
                    "byteStart": 119
                  }
                }
              ],
              "plaintext": "On top of tools like airglow, there are emerging tools around interactive embeddings and components like webtil.es and @inlay.at. Both of which can empower community members to not only build protocol plugins at the data-layer, but at the interface-layer -- whether completely separate apps or embedded widgets in existing apps."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "It's not hard to imagine a future where new users of the open social web can be greeted with countless plugins to customize their own information environments, just like with Obsidian. Except they aren't limited to a single app but instead an entire protocol-based ecosystem."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 7,
                    "byteStart": 5
                  }
                }
              ],
              "plaintext": "This is a post-app paradigm."
            }
          }
        ],
        "id": "019e65ce-775a-7bb5-bf1e-fcadc82fca12"
      }
    ]
  },
  "description": "Bridging the interop gap and addressing the long-tail of user needs",
  "path": "/3mmrr6uuqtk2k",
  "publishedAt": "2026-05-26T19:49:03.314Z",
  "site": "at://did:plc:6z5botgrc5vekq7j26xnvawq/site.standard.publication/3ly4c4cmyn22t",
  "tags": [],
  "title": "Ecosystem Plugins"
}