{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigwldsmncola33qwbrkzgv2343e5tohgr2pzy4ukhrvjwoqz5hizq",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mkkev5hn65i2"
  },
  "path": "/t/pre-rfc-dns-domains-as-package-namespaces/24202?page=2#post_32",
  "publishedAt": "2026-04-28T09:26:46.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "jmillikin:\n\n> Namespaces are a bit different, the goal is to expand the set of names people can use. Namespaces allow lots of different people to publish crates even if some of those crates are different approaches to solving the same problem.\n\njmillikin:\n\n> My package is an implementation of FUSE, and therefore it is called `fuse`. If I had forked the FUSE protocol into my own personal variant, then I would publish the library as `jmillikin_fuse`.\n>\n> Note that if I had done so, and I had published `jmillikin_fuse`, then I would not want to prevent someone else from publishing _their_ take on that idea. They should also be able to publish their `jmillikin_fuse` library if they wanted it to do something different than mine.\n\nI'm not following this argument. If you published `jmillikin/fuse` with namespaces would you be ok with others not being able to publish their `jmillikin/fuse`? To me it's exactly the same. If you then argue I could publish my own `skifire13/fuse` why can't I publish `skifire13_fuse` right?\n\nThe way I see it the main motivation for namespaces is to _reserve_ the namespace for my own (or my organization) packages, while _preventing_ others from creating crates in it.\n\n* * *\n\nps: I didn't see this mentioned earlier but note that you can publish a `jmillikin_fuse` _package_ containing a _library_ called `fuse` (which will be name that will be used to import it in Rust code).",
  "title": "[Pre-RFC] DNS domains as package namespaces"
}