Whenever we're discussing tech stacks, whether it's here or on X or on Reddit, the most commonly mentioned frameworks are Next.js/Remix/SvelteKit (for those who really like JS/TS) and Rails/Laravel/Django (for those who want "batteries included" and don't want JS in the backend). Occasionally, it's HTMX+Go (for those who don't like "magic" and also don't like JS). But .NET rarely, if ever, comes up, let alone any Java-based solutions like Spring Boot or Dropwizard. Are these tools particularly bad for non-enterprise projects? From what I've seen, they appear to be nearly identical in most ways that matter. Just like Rails et. al, .NET is "batteries included", cross-platform, MVC-based, favors "convention over configuration", has what appears to be a Turbo equivalent in Blazor, and has decent documentation. Does the runtime environment somehow make it harder or more expensive to deploy? Are the "batteries" included in Rails or Django somehow better?
But that changed a few years ago with dotnet being available for Linux and quite a bit more open. While you still effectively need VS to work with Blazor (or suffer), there are many other options for typical web apps. Whether you want to go MVC or something more bare bones, it's definitely a good option.
As to why it's not a popular option: I would guess that proper Linux dotnet has not been out for long enough to really change the idea of what .net4 was/meant. This applies to both sides too - there's lots of old .net people still unreasonably allergic to open source. I've used it for server apps on Linux when Mono was still the only option and was happy with it already then. It's a good system - go for it.
https://charliereese.ca/y-combinator-top-50-software-startup...
I have no affiliation with Y Combinator itself or the author of the post.
The particular analysis is pretty skewed in its own way, so you can take it with a pinch of salt.
As a general rule, programming languages have ecosystems and communities, and if you pick a language where quickly delivering high-value features to users/customers is part of the community, it helps your startup; you'll probably meet founders and get business advice if you go to a Ruby meetup, but less so at a C# one.
It's not the whole picture, since it doesn't speak to the technical part of your question.
Do you see the pattern? It's corporations with huge marketing budgets trying to sell you things. That's why it's talked about a lot?
It's not just the companies directly but the entire ecosystem including the VC market. They fund companies that make "managed" services or "open source" frameworks and encourage other startups they fund to use it.
> Is there still a lot of stigma around it?
That's 1 thing - the worst part are the rumors. To this date I still see posts where people claim that NodeJs is async and faster than C#/Java by a huge margin.
It works well, React/TS frontend plus ASP.NET Core/C# backend.
It may not be any more, but to most people in the Linux world it just smells, and that's enough. It's like asking why people don't drink box wine. It's just not cool.
Microsoft has made great big strides to simplify .net web development, where a simple hello world rest api is not much different than its counterpart in expressjs on node.
.net is truly a wonderful platform, but it carries too much baggage.
Tooling is also a bit bloated.
Some of us remember Ballmer calling our freedom a “cancer.”
Trust is built slowly yet dashed quickly. There are so many respectful choices today. Little reason to pick the once abusive but rehabilitated.
This comment about MS caught with its hands in the cookie jar always makes me laugh: https://news.ycombinator.com/item?id=31727293
And while .NET is batteries included like Rails, I just don’t enjoy using it. The docs and frameworks aren’t written for nimble startups, but slow-moving enterprise companies. I know modern C# allows me to code like Ruby/Python/JS, but all the docs are written like 1990s Java. And the frameworks are designed that way too.
Now if you're talking about tech startups/firms, then you'd more likely be part of the Linux/open-source and AWS subculture. Your tech choices are going to cluster around that.
But if you're in the non-tech enterprise world, you're in the Windows and Azure subculture. .NET is very prevalent. There are many solo and small teams that contract for non-tech companies that, let's face it are mostly Microsoft shops, that develop in .NET. Microsoft and Azure own almost a huge proportion of the non-tech (think retail, industrial, etc.) enterprise world.
I used to develop in .NET Core and ASP.NET core and found the tooling to be surprisingly good. The IDE (Visual Studio -- the full one, not VS Code) does a lot of work for you. It was easy to spin up a CRUD app -- just some point-and-clicks and modifying some boilerplate code.
However, if you were a web developer who likes to write code in VS Code and likes to work from the ground up, I can see why the above might not be your style.
Also Microsoft software -- despite being very open-source these days -- is still very much backed by a commercial entity, and most people don't have the mental bandwidth to parse out what's commercial and what's not. Take SQL Server for instance. There's a free limited version, but licensing the full version if big bucks. Whereas in the open-source world, Postgres and MySQL are free, as in really free. (the only free Microsoft product I use is VS Code -- and it is excellent)
Back when I was still young and impressionable, I had several frustrating experiences with it at university. Most due to my inexperience, a few times due to Windows being Windows. Also, back then the various $$ and time costs. IIRC $125+ for a windows DVD, $150+ for a VS.Net install DVD, and higher hosting prices for Windows. Also, installs and updates OS, .NET, etc were frequent and time consuming. When I'm making $2.50/hr + tips to get by I couldn't afford that kinda investment.
Now, most of my career has been using Linux, and a variety of interpreted languages. I'm comfortable with them. I boot my Windows partition maybe 2 times a year. There would be a huge cost for me to completely transition to .NET.
In order to get me to try it now would require you to show me some set of features that make it a much better choice than what I currently know. For example, if I someday choose to do Windows apps.
Like, I get that they’ve been on a bit of a charm offensive for the last decade, and they’re the happy shiny new Microsoft, and all that, but I’d be cautious, myself.
And it’s just, well, not that compelling. C# a slightly better Java, but really Kotlin already has that covered, and the JVM ecosystem is generally better.
I don't know about that. HTMX is ultimately a lot of magic javascript hidden away from the devs. That's objectively worse than just knowing how to write a web page "for real".
Deployment and Cost: For solo projects, I do 1-click deploys to a load-balanced Azure App Service. I was using GitHub Actions for a while, but it was slow and I kept pushing up against the need for a paid plan. I keep things local.
Dotnet is dramatically more scalable than Rails or Django, which means much simpler infrastructure for a lot longer. Poor performance leads to the need for more complexity. More servers, caching, queueing, etc. Then you need things like docker and k8s to manage all that infrastructure. For me, I can scale up or out by changing a single flag, and entire apps are just single dotnet apps (aside from the DB), so there's no need for docker.
Batteries Included: My team that ran Rails was burned by the magic, repeatedly. Over the years, developers made decisions that turned into maintainability nightmares. With Python/Flask, the lack of structure was like a Wild West after several years of rotating contractors. In some of my older solo-dev work with Flask, it was nearly impossible to come back to because all the disparate dependencies wouldn't play nicely any longer. And in both Ruby and Python, the lack of static typing was also a source of inscrutability (so please use type annotations in your Ruby and Python projects - your future self will thank you).
As for why people don't use it more, I think it's largely due to "resume driven development". It's the same reason every startup thinks they need k8s or they need to be using React. That's not necessarily a bad thing. Choosing dotnet is definitely not going to lead to job opportunities in the startup world. But, in my opinion, any startup that chooses dotnet will have a competitive advantage over those that choose Rails, Node.js, or Python because of simplicity and maintainability.
As for the argument that "time to market is faster with rails or python", I disagree. The biggest factor will be using what you know. The second will be the complexity of your infrastructure, which will be much simpler on dotnet. Avoid analysis paralysis as much as possible.
Other folks may have very different opinions, but as someone who has worked on several major platforms, each for years at a time, I have found dotnet to be the best option. However, no choice will be perfect, and dotnet has many warts. My recommendation if you do choose dotnet, is to go with MVC + HTMX. It's not sexy, but it's stable and mature. I don't recommend Blazor, yet. I think it needs another version. Last note: I've never bought any third party libraries/controls to do anything in my dotnet projects.
Guess which one is the only one which is a totally pain in the ass to maintain... Yeah, that is C#. As soon as a version is deprecated, we need to scramble around to find out which next version is the minimal supported by all of our customers.
Already did a full migration to latest version once, and was a total pain... customers having to install the .net framework and not having the prerequisites, or installing any other software that conflicts.
Zero problems with any of the other techs. So yeah, now we are building those .net components in go so we can ditch .net for good.
This is a desktop application, so, sometimes we have little control on the end user machine, but, well, even when we coordinate with customers for an entire year, it is difficult to predict what microsoft will do with their prerequisites in the future.
Our software has been on the market for over 25 years so far, and we do see the same problem with other companies developing .net products, since they will usually conflict with us. Some customers just give up and have specific computers to run .net specific features, not the best solution but at least a solution.
do you plan to use another db than SQL Server? .net 'prefers' SQL Server.
do you plan to deploy with containers? .net is not container first
do you plan to deploy outside of Azure? .net examples are Azure first (and same with EntraID and so on)
as for Blazor, silverlight then the 10 others attempts at UI after that still makes us hesitate to commit fully to it.