I’ve been working with dotnet a lot lately. C# is ok. It’s fine. It isn’t like my favorite language ever, but it’s just generally good and has done a nice job keeping up with what it means to be a “modern” language. In addition to C# dotnet also provides what I think is one of the coolest languages out there, F#.
But I’m not really using F#. I’m still learning a lot of the “platform” aspects of dotnet.
A coherent platform is like a super power when you lean into it. This rhymes with UXN and Vavara to me. But it’s interesting how I immediately think of dotnet as a “platform” and Vavara is referred to more like an “ecosystem”.
The semiotics of all of this is interesting.
One other place I can think that considers itself an “ecosystem” instead of a platform is Crates.io. But it doesn’t fit the bill the way that UXN and Vavara do.
When I’ve had to consider Rust or Cargo as a cultural entity, I’ve referred to it as “the broader Rust community” and more recently as “the Cargo monoculture”.
But Cargo represents a hegemony. Going forward I’ll try to remember that.
But surely a programming language created by Microsoft (nay, TWO languages) is also hegemonic… and yes it is as well I guess.
Similar to Cargo, msbuild is this inescapable thing. The Rosylnn compiler is only included with the dotnet-sdk as a DLL. You can use it on it’s own without msbuild though (just like you can use rustc without Cargo), but it does not try to make that easy.
There is some important contrast though. And while I can’t put my finger on it precisely, I am entirely certain I know what bothers me about Cargo:
- It is broken by design
- It is incomplete
- It is frustratingly inelegant
- It is offensively wasteful
And when I look at these I might only consider msbuild guilty of being inelegant.
In regards to memory safety, C# was included on the list of languages recommended by the CISA.
So I guess my takeaway here is that “I don’t really mind the hegemony as long as it’s done well”. Which does leave me with a bit of an uncomfortable feeling!
Ok, so back to this “ecosystem” <-> “platform” spectrum.
When it comes to Vavara it is specifically about doing things on a human scale, personal computing, serving individuals and providing you the tools to be creative and productive without any ghouls to gatekeep or profit off of you. You’ll have to use a little elbow grease to get things where you want them and nothing you choose is wrong. Vavara is perhaps an ecosystem of tools and code to help you maintain your garden.
When it comes to dotnet, it is all about building an abstraction over the very complex differences between the predominant modern computer systems (no plan9, no risc-v yet, but maybe some Haiku at least). Its mission is to provide a detailed but uniform API to leverage these systems. It isn’t personal, and it isn’t really amenable to change that suits arbitrary users. Dotnet is perhaps a suite of tools and libraries to help you maintain your farm.
So maybe that’s it? A degree of scale.