The logo of Existential.Net

Existential.Net

I recently became the publisher of an open-source library: Existential.Net. As has become traditional for .NET libraries, it’s published as a package on nuget.org – and surprise, surprise, we’re at version 1.1 already, because I actually published 1.0 about a month ago and kept relatively quiet about it.

My previous open source experience consists (only) of contributing the first Windows installer for doxygen, but that was in version 1.2.13 about a billion years ago (sometime in the early 2000s) and I’m sure it’ll have changed unrecognisably since then. My name was unrecognisable even at the time, as I got credited as David Greig and never bothered correcting it.

Since changing employers earlier in the year, and spending a month on furlough in the process, I’ve had/made the time to do a bit more home coding. I started off a bit ambitious during furlough and had to scale back what I’d planned to get done, especially once I started work again. I did so by spinning out some of the things I would So Existential.Net is a small library of utility methods, mostly for handling or eliding nulls. Not that amazing; but for me a good experience to get something out there that’s mine, and it gives me a foundation for other things. For you, the methods are all pretty simple and you could write them yourself; but you probably either haven’t – or you’ve written them time and again all over the shop without bothering to package them up in a reusable library.

Where from here?

There’s still scope for extending and updating Existential.Net. Some of it’s using techniques I’ve been using for years, so features introduced in more recent versions of .NET will need a bit of attention to become fully supported. Some of it’s new to me and I’d like to get some other things out there too – updated versions of other techniques I’ve used in the past, and things that would help with work I’m doing now, but which there isn’t time for in the job. It may take a while – this first library has taken months to get there, so I expect others will too.

What I’ve found takes the most time is getting tests and documentation to the point where I’m happy to push something out; and names kept changing almost up to the last moment before version 1.0 to try to get the most expressive code I could manage. (I’m stuck with them now, so I’d better be satisfied!) The documentation could still do with improvement, but I think I’ve covered the most important bits reasonably.