Maybe Open Telemetry can reduce some of the complexity. Right now every telemetry vendor provides their own tooling and nuget packages. There is no easy way to switch between them and some costs are just insane. I’ve seen NewRelic expenses reaching up to a quarter of total cloud hosting costs. That seems excessive to me.


New relic on cloud infrastructure is crazy money (or at least it was when I was looking into it a year or so ago), and my business has pretty much given us a blank cheque for our cloud infrastructure but we could not justify the money they wanted.
Didn’t help that the sales people didn’t know exactly how the licensing worked, so.nobody seemed able to give us an actual quote or decent deal.
In the end we went fuck it and threw application insights on our stuff, sure it is not as flashy as new relic and others but it gets the job done.
Is it just me or the number of dependencies that modern software requires is downright insane? Each new brand doodad is spread over several NuGet packages, all with individual release schedules, versioning principles and, most importantly, their own set of dependencies. We are steadily heading towards NPM/NodeJS levels of packaging insanity here, and maintaining dependencies in an up-to-date state will soon require a dedicated engineer.
And all for what?
Compartmentalization. I completely appreciate the ability to utilize small, function-specific packages rather than linking to some type of huge monolithic all-encompassing SDK.
I also think the needs of modern programs requires a greater degree of flexibility of choice. The trade-off of using other people’s work to get your job done faster is that they may not update it the way that you would want.
If you have all the time in the world then just program everything yourself.
I agree, but it’s not without reason. The big .net 5 migration has changed what’s included in the base libraries. So making everything a NuGet package allows the compiler to only pull the packages it needs for the specific runtime that your working with. Overall it saves space
Honestly we need to revise how we do licensing- right now every dependency (direct or indirect) must have its licensing model checked and accounted for before you can build something atop it, and seemingly most people don’t know this.
The main difference is that in .NET (and Java? I’m not as familiar), the rich core libraries means the dependency graph doesn’t spiral out into infinity, but instead stops expanding as eventually everything just links back to the core.
Last I looked at OpenTelemetry, it depended on pre-release versions of libraries, so that didn’t really apply.
C# devs
null reference exceptions

source