6 ms·
> I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma. I tried .NET and liked C# as a language. But even though th
by nicoburns 1y ago
> I wish .NET was more popular among startups, if only C# could get rid of the "enterpisey" stigma.
I tried .NET and liked C# as a language. But even though the language and runtime are now open source, it seemed like a lot of the recommended libraries were still commercially licensed, which was an immediate nope from me. I've never encountered that in any other ecosystem.
- GiorgioG 1y agoRecommended by whom? I've been doing .NET for 23 years (since the first beta) and I've never paid for a single library in any commercial project I've been part of.
- runjake 1y agoNot OP but I still run into paid libraries (eg Telerik) all over the place in projects.
- whizzter 1y agoMoq, lots of PDF libraries, Avalonia, Automapper, MediatR, MassTransit,Telerik stuff,etc. I'm not inherently against it, we have a problem with opensource being asymmetrically underfunded and if people going commercial is the cost perhaps we've failed.
- majora2007 1y agoThere are a few non-paid PDF libraries, but that is the biggest pain point in .NET, anytime you need advanced features for PDF, you're better off paying for a license (it's just insanely expensive unless you're a large company). Having worked on some basic parsing of metadata from PDF spec, I would rather pay than have to code something myself. PDF is such a PIA.
- jasomill 1y agoI've used libqpdf extensively from C++/CLI with excellent results, but since C++/CLI is deprecated-ish and Windows-only, I wouldn't disagree with PDF being a pain point, and if I get the time, a cross-platform open source .NET wrapper for libqpdf is at the top of my list of potential projects. libqpdf also intentionally limits its scope to PDF structure, so doesn't address nontrivial content creation or manipulation (page content handling is pretty much limited to compressing/decompressing and parsing/unparsing the content stream).
- tracker1 1y agoAFAIK pinvoke (DllImport) works today just like it always has if you want to create FFI calls to C libraries. It's not windows only for sure.
- whizzter 1y agoThat brings you back to managing memory though, C++/CLI having access to managed C# handles/references for GC'd objects (and finalization) would greatly simplify any memory management at the same time as having first class access to native libaries. Granted, one could probably build some of the machinery memory management in a simple way but it'd still need to be done and probably not be coherent with other native interfaces.
- to11mtm 1y agoIDK, for certain cases those fancy libraries are just handling the ugly marshal calls for you. Wayyyy back in the day, before package managers were a thing, I had to write something to output a PDF via DLL calls and frankly it wasn't a bad experience. Possibly outside of what is in a 'modern' workflow but honestly wasn't too difficult. Just wrap it all in a class that only gives what you need and avoids potential footguns via validation. Frankly it was easier than doing anything with Autocad's 'managed' libraries [0]. Maybe it's rose colored glasses for me, but .NET had fairly simple rules for most marshal bits so long as you knew them, although I will admit we didn't worry about 'performance' for the stuff I wrote and that can be a factor. [0] - Microstation had a bunch of fancy COM hooks and exposed all of it to .NET in a nice way. AutoCAD 'managed' libs had all sorts of weird sorts of arcane rules and if you failed to follow them not only could you crash your .NET process but Autocad could remain unstable until you rebooted the PC... which is why I keep putting managed in air quotes.
- electroly 1y agoEasy to avoid depending on the area; I'd urge you not to be discouraged by the presence of commercial libraries. They aren't as vital as it may seem from the outside. I've been a full-time C# developer since the first open beta and I have only one (1) instance where I used a commercial library. That was 2002 and if we were doing it today, we wouldn't have needed that commercial library. I have never used a commercial C# library other than that one time. We have a tremendous supply of open source libraries in NuGet, just like every other language, and much more functionality built into the standard library than most languages have. We just also have commercial UI libraries and such. That commercial library we used was a docking/tabbing UI library; you can get that from open source packages now (and my later projects do).
- throwaway7356 1y ago[flagged]
- toyg 1y agoCome on, it's clear he meant "commercial libraries not in the default Microsoft SDK".
- deleted 1y ago[deleted]
- stuartd 1y agoWix was open sourced in 2004 - https://www.computerworld.com/article/1580079/microsoft-goes-open-source-with-wix-tool.html https://www.computerworld.com/article/1580079/microsoft-goes...
- whizzter 1y agoRemember when people were selling COM objects in Dr Dobbs journal ads for Visual Basic in the 90s? I think it's the same culture (and partially people) that has been bought over to the .NET world via VB.NET as it was always touted as the stepping stone. Nothing has ever forced anyone to depend on commercial libraries, there has been some upsets as people has closed-source previously popular opensource libraries. But in the end, sometimes it feels like open-source in general is just waiting for a Jin-Tia moments everywhere, if people go commercial to prevent that happening that's just an indication that we've failed to create alternative ways of _living_ that can support open-source (this is probably most damning on companies that prides themselves on building on-top of opensource). Heck, remember that tjholowaychuk created tons of (some popularly still used) npm packages early in the Node.JS lifecycle before first moving to go and then abandoning open source altogether.
- colechristensen 1y agoIn the world of LLMs the new version of "open source" is LLM makers using prompts which are then used in training leaking your code into the next version of the model therefore distributing your code for "free" minus your payments to the LLM maker. It's probably a good thing because far from your "secret sauce" so much programming work is companies doing the same very boring things over and over connecting pipes together and making extremely similar design decisions for mundane tasks.
- mycall 1y agoProgramming is just a means to a way and a waste of time if it can be automated. Making useful things is all that matters.
- DarkNova6 1y agoSilly question. If you want the C# experience but more community/OSS driven… why not Java?
- neonsunset 1y ago[dead]
- bradford 1y agoI haven't kept aware of changes to Java in the last decade, but the things I didn't like about it then were: 1. The overall architecture (with the JVM) made it slower than the equivalent C# code. 2. C# really started embracing modern language features at a time when Java was kind of languishing (lambda functions, async patterns). Java seems like it's been in perpetual catch-up since then. (Not OP, disclaimer, I work for Microsoft and this is only my opinion).
- DarkNova6 1y agoAh, got you. > I haven't kept aware of changes to Java in the last decade, but the things I didn't like about it then were: It's almost a shame. I am genuinely impressed with the gains the team has made in both, language aspects as well as JVM technology. They have some brilliant people working on it and I love to hear their talks (Brian Goetz and Mark Reinhold, mostly). But I suppose I would say the same about .Net, it's just that you guys have much less public exposure of your internal reasoning.
- throw234234234 1y agoI've seen the gains in Java; the main things that would close the gap are not yet there in Java. .NET code, especially when tuned, still has significantly more knobs in your code to tune and make faster. An example would be proper generics with value types together means less boxing in generic code in general overall but there's a lot more I can think of. I've seen almost 50% of gains, particuarly when doing math like code, of moving away from Java to .NET especially if the jump to C/C++/Rust is too much for the team in question due to other requirements.
- wvenable 1y agoI will pile on that I don't use any commercial libraries in .NET at all. Ironically, I do purchase a commercial library for front-end JavaScript. I agree that the commercial library offerings seem much more "in your face" with .NET but I don't find the actual breadth and depth of the free and open source library situation to be that troubling. It certainly continues to get better every year. .NET is very "batteries included" as well so you don't need a huge base-line of competing open source packages just to do "hello world".
- osigurdson 1y agoEvery company should give developers $100 per year to donate to the open source project of their choosing. Right now the conditions are such that maintainers are incentivized to rug pull.
- dlahoda 1y agoevery company must pay enough to allow developer to donate from his own pocket (and each state to allow vat free donations without paper work).
- hakanderyal 1y agoThis one was weird to me at first too, coming from Python. Nowadays, the ones I use have reasonable licenses and pricing, like ImageSharp. Free until 1M gross revenue, cheap afterwards. I support this type of dual licensing wholeheartedly.
- tracker1 1y agoWhat libraries are you referring to? I really haven't used any commercial libraries at all since the .Net Core transition (and .Net 5+ as a result). Are you looking at older materials?
- eitally 1y agoJust one example, but when I was running a .Net dev team we licensed the Telerik UI components. We ended up dropping them, but not until we had initiated a migration to Java/PG instead of C#/MSSQL. After we moved to Java everything standardized of a set of FOSS libraries for various things.
- AshleyGrant 1y agoWe use Telerik components at my current job. They're a solid library, IMO. I'm sure there's better out there, but we've been using them for nearly 15 years at this point and I feel like we get decent value for the money, and their developers get to draw a salary.
- Salgat 1y agoI'm not sure how that applies in this situation, since you're choosing to buy into a proprietary platform when plenty of open-source competitive options exist. That's the case for every language/tech stack.
- tracker1 1y agoThat's a choice, there's lots of FLOSS alternatives... was this a desktop application? In that case, I can see wanting to chose a commercial library as it probably saves a lot of work with the floss/in-the-box alternative options. That said, for a web cli, there are a ton of options out there without touching anything commercially licensed.
- SegfaultSeagull 1y agoWhat is wrong with paying for something that is useful?
- theturtlemoves 1y agoSeems like many people are just coding as a hobby? Idk. I want to make money writing software and so I pay for libraries that solve a problem for me. I expect the baker who sells me his bread pays for the flour.
- to11mtm 1y agoIn the last 12-15 years, outside of imaging and PDF (and some office documents [0]) the only commercial .NET library I found worth it's salt was the the Devart Oracle client, if only because it sucked WAY less than the official one [1]. Yes, that includes UI frameworks. Honestly nowadays I'd just have an LLM help build my UI components, because every commercial UI component lib I've seen is never quite right to a shop I've worked at anyway and you see a bunch of kludges bolted on to make it work the way they want [2]. I guess maybe a list of the recommended libraries would help cause I'm a bit lost. [0] - You can totally do Excel output from .NET without a commercial library, I know you used to be able to hack together a PDF output flow, Word docs well good luck dealing with that format... [1] - Devart's lib was both x86 and x64. Oracle's you had to pick the right arch on build. And then make sure everything on the deployment chain was configured the same way, or deal with people forgetting and then burning cycles with broken stuff. That ROI on that alone was worth it to the org. [2] - To be clear I try to avoid touching such UIs encountered, when I do I at least try to clean things up if possible... but often it's not which is why I have to bring it up.
- moron4hire 1y agoThis site is full of people dreaming of making money off of software but refusing to pay for any software.
- 8cvor6j844qw_d6 1y agoSecurity and quality aside, I feel that npm have a larger selection of libraries.
- naasking 1y agoSure, with quality libraries like "is-even", who can deny the supremacy of the JS ecosystem? https://www.npmjs.com/package/is-even https://www.npmjs.com/package/is-even
- 8cvor6j844qw_d6 1y agoWow thanks, a perfect package, just what I was looking for. I needed something to determine is even values.
- smt88 1y agoAs someone who has written multiple Node and C# backends, Node isn't even close to the ecosystem quality. It's not in the same solar system. Npm has tons of libraries, but they're mostly abandoned. Many barely worked in the first place. And if they're even a little out of date, there's a decent chance they're missing TypeScript types or they won't work with your module system. It's a nightmare. Struggling with missing or broken dependencies is what made me swear off Node backends permanently.
- ozim 1y agoWell yeah I like how they boast numbers of libraries and numbers of downloads but most is crap.
- mattmanser 1y agoI use .Net a lot as in Europe it's everywhere. I think it occupies the same niche in Europe as Java does in America. Startups, enterprise, you name it. Lots of jobs in London with it for Finance. And in 20 years I've personally never needed a paid library. Maybe one company had bought Telerik back in the day? I've now built up multiple startups, some with millions of users. The only thing I ever plugin that's not a MS library really are serilog, validation with FluentValidation, and a job server, usually Hangfire just because it's easy. Other than that, most people have good C# API clients. Oh and OAuth, though the popular one got baited and switched like you said. The key difference is that the core libraries cover much more for .Net than most other languages. I'm constantly adding npm modules, but rarely nuget packages. But the opensource/closed source bait and switch has happened a lot recently it does seem. Someone was blaming it on some failure of an open source initiative MS were running. But one of the big frustrations sometimes is dealing with some American Koolaid company who thinks Erlang support is a priority but .Net isn't. No code examples, no officially supported library. Most recent example, IBM of all people (C-level insisting we use their cloud, ugh).
- tracker1 1y agoC# is pretty popular in the US as well in certain spaces... especially Govt or Banking and adjacent environments. Mostly line of business applications. I'd say Java is slightly more popular, but I never really liked Java's ecosystem ergonomics, though they're better today it's just not for me. Similarly, I'm not a fan of "Enterprise" development regardless... I find a lot of .Net shops, like Jave, just create a lot of layers of indirection and abstraction that only lead to excess complexity, cost and difficulty in both maintenance and enhancement. The older I get, the more my mindset shifts to make things that are easy to replace without adding undue complexity or patterns.
- mattmanser 1y agoThe problem with enterprise apps is that they're usually wide but shallow. Which means a ton of classes that don't do a lot and managing class complexity is actually the biggest challenge. So it's just a very different type of code and you can point at the language, but the reality is that it's the domain.
- Salgat 1y agoThat's surprising. For the past two companies, all our library dependencies have been open-source. All our persistences, aws sdk, consul, kubernetes, github/bitbucket libraries, pdf generation, selenium testing, etc etc. I'd recommend giving C# another look, the proprietary stuff is mostly an artifact of back in 2015 when everyone was still on .NET Framework.
- ozim 1y agoIs there equivalent of MassTransit in Java that works so well that you mostly can just use it with RabbitMQ and not worry much? What are free PDF generation/handling libraries in Java ecosystem what is their performance are they up to date and which licenses?