back
70 comments
The original Jetstream is really cool - it's incredibly easy to start consuming the Bluesky firehose - you don't even need to use a server, you can consume it directly in the browser.

I updated my browser demo to use the new Jetstream just now - hit "connect" and scroll down the page to see the events flowing past: https://tools.simonwillison.net/bluesky-firehose

New jetstream is fully compatible with old jetstream btw! We just added a bunch of new stuff as well

This is new jetstream:

wss://jetstream.us-east.bsky.network/subscribe

Great. My map application* has a place review system that was built on Atproto, we don't hold user's reviews, they're public, reusable by others.

In case of data loss, replaying the jetstream was not possible. This v2 with history is perfect.

* https://cartes.app

Chrome Windows, zoomed in on paris, france. Click the restaurant filter for search. The tab froze, tried multiple times. :3
Thanks ! It's the densest place in the world for restaurants. We're working on a v2 of place search by category, soon to come.

Google's task is much easier on this one : they only show those who've paid ads at high zoom (well at least, that's what we can guess). We're trying to be exaustive, but it's too much in this case.

Every move/zoom in the map causes it to pollute the browser history. You might want to fix that.
Yes thanks, never noticed this, I also find it annoying when websites capture my choice to leave clicking the back button.

https://codeberg.org/cartes/web/issues/2661#issuecomment-210...

I wonder if it would be a good idea to remake DNS on top of bluesky. The basic idea is that, if you own a domain name, you post DNS updates in a bluesky feed. The firehose itself is authoritative. DNS servers sit downstream of the firehose. All the updates to domain names get written into a database, and they essentially just respond to queries hitting that database. This would let anyone (with enough bandwidth) run a fast domain name server.

We could use this to fix some of DNS's long running problems. Like, we could add upstream cryptographic signatures to DNS records. And put TLS certificates in there too. We might be able to ditch TTL entries. In a DNS server, records should update via server-push from the firehose. You shouldn't have to wait for TTL to expire.

I think it'd make a nice little system.

I think you just invented blockchain DNS (e.g. https://handshake.org/) without the byzantine tolerance.
Yes, exactly. Blockchain DNS minus the blockchain is just good DNS.
Blockchain has some solid properties, don't throw the baby out with the bathwater.
How do you prove you own a domain with no records?
We’d need a registry of some sort. And a name space. Register a name, associated to a Bluesky account. Then use that Bluesky account to update dns records.
I'm trying to work out how the OP's system would look like and I was wondering the same.

---

There are at least three parts that you'd need to solve:

1. AFAIK there is no single globally canonical Firehose. Different relays aggregate different sets of PDSes, and some might decide not to include your PDS if they don't like your content. The Firehose also isn't really the authority here. It transports signed updates from account repositories.

2. In theory you could make up a new kind of DNS record instead of NS, called PDS, PLC, or something. You'd ask your TLD registry to publish something like `PLC <did>` instead of the NS records for your DNS server.

The value should probably be the account DID (that's the PLC mentioned above), rather than the address of its PDS. The account DID is the stable identity that signs the repository updates. The PDS is just the server currently hosting that account's repository, and its address can change.

3. You then have a bootstrap problem. To get from an account DID to its PDS, you resolve the DID document and look for its `#atproto_pds` service entry. But `did:web` resolution uses HTTPS and therefore DNS. `did:plc` uses the PLC directory, but reaching that directory and then reaching the PDS URL also normally requires DNS.

So the DNS replacement would depend on the old DNS system to discover the server containing its DNS records.

---

Then, as an example, Google's DNS resolver at 8.8.8.8 would subscribe to one or more Firehoses, index DNS records from account repositories, and verify that their updates were signed by the DID named in the registry record.

Querying would then be something like: you look at the top-level record for the domain, see that there is no NS entry, find the PDS or DID entry, and look in your local Firehose-derived database for DNS entries signed by that account.

If the records aren't there, you might resolve the DID, find the current PDS, and fetch the repository directly. But that brings you back to the bootstrap problem.

Maybe the registry record would need to include both the DID and some kind of glue-like PDS address. Or perhaps the new system would need an independent way of resolving DIDs and locating PDSes without using DNS. I'm not sure what that would look like, especially once you include PDS migration and key rotation, but I think this is an additional part the proposal would need to solve.

/shrug

this is not quite what you are asking for but https://marque.at exists
No A, no B. It's not X, it's Y.
Sort of on a tangent to the actual content of the page, but what documentation system/CMS is this particular web page UI? It seems very fast and relatively uncluttered for the menu on the left side, content pane, top horizontal menu bar.
https://github.com/bluesky-social/atproto-website

If I'm understanding this codebase right, it's a hand-rolled framework based on MDX and Next.js; the UI elements you're referring to were designed from scratch and aren't based on any existing CMS theme.

Some of it looks like tailwind css and they have a syntax highlighting addon that shows up in the homepage source as well.
No sure I agree on fast. At least on mobile the sidebar has an show/hide slide animation that takes a sizeable fraction of a second. In fact is one of the slowest animations for this I have seen.

I disable animations entirely on devices I use where possible. They just waste time and that adds up if you use something regularly.

Looks like astro starlight
I'm all for whatever atproto expansion and whatever's going on here, mainly it harks back to early Twitter days (tho also for better or worse, watching them build Bluesky in realtime isn't the best), but when they have outages like last week a good chunk of service unreachable/down for many hours with little update on https://status.bsky.app/ and then whatever history just basically disappears as if nothing ever goes wrong, it's not a good vibe.

Despite all the openness and github repos and what not it's very difficult to get straight answers or just like find a place where issues or changes to the platform are addressed easily.

Suppose this would be an example of what they meant by 'expands beyond the app'

Related:

Bluesky's active user base is shrinking as its focus expands beyond the app

https://news.ycombinator.com/item?id=49263461

Do you have a database/ui of all of this story graph labeling you've done? Is there a story behind it?
This protocol would be a great match for UCAN.
I've built my own client for Twitter. I'm using a library that a random guy maintains. It has its problems, but all of them can be worked around, and overall it feels solid, especially considering the fact that it's done by a single person.

Then I had to add bsky support when everyone and their mother migrared there. I used the atproto Python library and holy smokes, whener I need to touch that part of the code I feel sad.

I suppose that while your Twitter thing just touches the surface-level client-facing API, your Bluesky thing touches the internals. You could scrape bsky.app the same way you do for Twitter.
> I've built my own client for Twitter.

Didn't they terminate free API access? How does your client work?

It still has an internal GraphQL API. How would the official web app and mobile apps work without an API?
As a researcher who spent most of my graduate program trying to scrape twitter to do sentiment analysis. I do not believe you.
Even from the comments, they just don’t have the right base. Such a shame.
Neat protocol, shame about the users.

Also the VC-backed funding for this infrastructure will run out eventually. It's not self-sustaining, and Bluesky have no viable route to profitability.

[Bluesky proves that for social media, no matter what your technology stack, capabilities, or mission, if your community is awful, growth will never follow.](https://blueskyfeeds.com/bluesky-user-growth?t=3m)
Twitter seemed to have no issue growing so that doesn't seem right.
> no matter what your technology stack, capabilities

We haven't had many of the good sets of these to get any proof

> shame about the users

I use Bluesky regularly and have a fine experience. Yes, there’s an irritating minority of users. But so goes any social network, Twitter especially. At least the owners of Bluesky aren’t espousing Great Replacement Theory…

I also have a fine experience, but only by switching to the For You feed full-time and mostly sticking to my compsci-academic-tech-programming neck of the woods. Minority or not, the users GP mentions are so obnoxious that it affects the 'vibe' of the platform as a whole. Look up any "Top Posts" tracker/feed/whatever. No matter that I even (mostly) resonate with the underlying political leanings, I find the tone pretty dreadful.

Of course, the same applies to whatever remains of Twitter now.