so this is happening.

All my #Rust #RustLang repos are moved over. Now I just need to figure out CI, republish to crates.io, and archive the github side (and document a tombstone in their readmes).

I have a bunch of other repos I'll either archive or delete as well.

#KDL and #orogene will remain github-side for now because they're a bit more dependent on github services, but I would like to at least move orogene over eventually. KDL might be stuck, though, unfortunately, but I might move only kdl-rs.

#bevy #miette

I was having nice warm fuzzy feelings because even though #orogene itself is kind of on pause (for now), it’s actually spawned multiple widely-used projects:

  • #miette was extracted from orogene, because it’s what I was building for rich errors/error codes/etc
  • #kdl was created with the intention of being the configuration file for orogene, as well as an alternative syntax for package.json with more bells and whistles
  • We had to write an NPM-compatible #semver package in Rust, because the semantics are actually different from Cargo’s semver implementation: https://crates.io/crates/node-semver
  • The orogene resolver is published as a wasm NPM package, and is currently used by vscode.dev for doing in-browser, full fledged intellisense (because you need access to your dependencies to get their types, source definitions, etc). You can literally GoToDef and you don’t need a vm/desktop for it
  • I think that’s it so far? And of course I’ve had the opportunity to share a lot of learning about performance that have been used by more recent package managers in other ecosystems!

    crates.io: Rust Package Registry

    very excited to see a feature I worked on finally see the light of day.

    This feature is backed by a wasm version of #orogene!

    It's extremely cool to just be able to load arbitrary package code like this, without needing a vm/filesystem. And it's so fast! Please go try it out!

    GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.

    An extremely fast Python package and project manager, written in Rust. - astral-sh/uv

    GitHub

    warm cache + lockfile:

    #orogene: 29s
    NPM: 59s
    bun: 34s

    (I did not expect bun to be slower here. huh.)

    #orogene web: 177.5s
    orogene desktop: 157.861s
    bun: 106.3s
    npm: 540s

    not bad for something done in someone's spare time, rather than with VC money, and that can run in the browser (!)

    This is full cold start. No cache, no lockfile, nothing. Just a package.json and some vibes.

    back to poking at adding type acquisition support to vscode.dev and finally fixed some issues that were making it slow. Tested with a huge package.json, yeah, it took a while. Tested on orogene desktop, took about the same amount of time. ok.

    npm? 3x the amount of time (9 minutes!!), even though orogene web can only open two fetch requests at a time and has to serialize stuff between the Rust and JS layers.

    lol. lmao. And orogene desktop was only a few seconds faster!

    I should jump back on #orogene dev some time. This thing is still pretty solid.

    my 2c on opt-in vs opt-out:

    both are bad in the case of things like telemetry.

    If you're going to do something that the user might want to make an important decision about (such as their privacy), you should of course have them opt-in, but opt-in with default-to-no means that something important might not happen, and enablement of that feature will be too low to make it useful. But of course, if you just enable them and yolo, then you're.... well, you're probably violating some laws, tbh, so I'll leave it at that.

    I want to have a special term for making opting decisions that doesn't imply defaults, such as "active opt-in" or something, where the application requires that you make a decision either way, during setup, if it's going to do things like telemetry.

    Because, in all seriousness, telemetry is useful, and when privacy is respected, it genuinely helps makes products better, but opt-out is gross af, and opt-in won't get you the data you need.

    This is what I decided to do with #orogene, btw. It sends anonymized crash reports, but you're prompted the first time you launch orogene and both options are presented equally and you can't just skip this (well, you technically can if you're in a non-interactive environment, where we'll default to no telemetry)

    @janriemer just gotta get #orogene out into the world now and world domination will be complete 🦀🦀🦀

    The video for my #PackagingCon2023 talk is now up on youtube!

    I blurted out a bunch of stuff about the kind of work I've done speeding up #NPM and #Orogene, in hopes that it would help some poor soul out there. It's kind of a high-level overview, but it talks about a lot of different things. It's also the first talk I've given in YEARS.

    Check it out if you're interested! https://www.youtube.com/watch?v=eh3VME3opnE&list=PLl386dCR5QGTElF3MbltCJupNG1lHK4Nr

    Gotta Go Fast – Kat Marchán | PackagingCon 2023

    YouTube