Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hot Reload removed from dotnet watch - Why? #22247

Closed
rgwood opened this issue Oct 21, 2021 · 281 comments
Closed

Hot Reload removed from dotnet watch - Why? #22247

rgwood opened this issue Oct 21, 2021 · 281 comments
Labels
Area-AspNetCore RazorSDK, BlazorWebAssemblySDK, dotnet-watch untriaged Request triage from a team member

Comments

@rgwood
Copy link

rgwood commented Oct 21, 2021

Hot Reload functionality in dotnet watch was recently deleted and it seems that Hot Reload will be VS-only going forward. I've been using that functionality in dotnet watch happily for a while now, and this seems like a huge step backward for .NET. Most new .NET developers aren't using VS, and many aren't even on Windows.

Could we get some more information on why this change was made? The linked blog post is very light on details and the PR has been locked to collaborators.

@dotnet-issue-labeler dotnet-issue-labeler bot added Area-Watch untriaged Request triage from a team member labels Oct 21, 2021
@AnthonyMastrean
Copy link

@rgwood you say you've been using the feature "for a while now" but it's only been in since April/May as part of the .NET 6 previews... you've been using it in preview?

@rgwood
Copy link
Author

rgwood commented Oct 21, 2021

Correct. It’s been working well for me in the .NET 6 previews.

@AnthonyMastrean
Copy link

My team is very interested in this feature being available cross-platform, since we have folks on all platforms and primarily use Visual Studio Code. I hadn't noticed the initial announcement, only this mention of it being removed! I don't think it made it into a .NET 6 preview blog post.

https://devblogs.microsoft.com/dotnet/introducing-net-hot-reload/

@DamianEdwards DamianEdwards added untriaged Request triage from a team member and removed untriaged Request triage from a team member labels Oct 21, 2021
@rgwood
Copy link
Author

rgwood commented Oct 21, 2021

@LyalinDotCom was kind enough to clarify on Twitter (and to be clear, I do appreciate it; please don't shoot the messenger):

Sorry for any confusion. To clarify, given the number of scenarios we are working on, we had to prioritize :(. As a result, Hot Reload will not release as a feature of dotnet watch tool. We are doubling down on VS 2022 with support for VS4Mac coming later

I can certainly appreciate competing priorities, but this is still very disappointing. dotnet watch hot reload already seemed great to me, and if necessary it could have been moved behind a preview flag like other .NET 6 features (ex: generic math).

I've been using this feature as part of my cross-platform workflow, and I was incredibly excited for it in the broader context of the .NET ecosystem. A big part of the appeal of .NET is excellent developer tooling, but all too often that's been lacking for developers who stray from Windows+Visual Studio. This was going to be a flagship developer experience feature that I could get other, newer .NET developers excited about.

This seems like a short-sighted decision that will harm the .NET ecosystem in the long run. I can only assume this decision is being made by people outside of the .NET team, and I hope they're willing to reconsider the decision.

A former PM for F# said it better than I could:

It’s disappointing to see dotnet watch have the existing support it’s had for a long time now get dropped. It worked very well. Furthermore, it offered a credible .NET version of the kinds of things you see in other ecosystems (vercel/nextjs, reactjs, etc.) that are all delivered via a package manager. It’s even more disappointing looking at the source code to see that support for it was ~1-2k lines of code, and that code has now been ripped out at the last moment.

Orthogonality and cross-platform always wins in the end. The .NET team understands this. This is a clear backslide, especially because hot reload did not start out as being only for Visual Studio. I really hope this isn’t the start of a pattern.

In the meantime, the most productive development stack for me is nextjs with vercel, where I get seamless UI and sever-side hot reloading capabilities all delivered in a single NPM package. Hot reloading isn’t special anymore, it’s table stakes for modern app development. I hope the folks making these last-minute decisions realize that soon.

@Atulin
Copy link

Atulin commented Oct 21, 2021

Hiding it behind a flag and even dropping some "this feature is unfinished and might be unstable" warning in bold red letters into the console when the user runs it does seem preferable over a complete removal.

Especially since the response quoted above doesn't instil confidence in the feature ever coming back to anything but Visual Studio once it's removed.

@Cheeseless
Copy link

This comment seems especially ominous, even if the following one seems to contradict it somewhat. dotnet watch being put on the shelf is just as bad as having Hot Reload removed as a single incident.

@Atulin
Copy link

Atulin commented Oct 21, 2021

The comment does read as if there are plans, or at least talks, about deprecating dotnet watch altogether and locking the entirety of its functionality behind Visual Studio, indeed...

@qcc-na
Copy link

qcc-na commented Oct 21, 2021

Microsoft does not want you to use .NET or RIDER that's why.

Edit: Or emacs, vim, vs code, or any other editor that works with Microsoft's own Language Server Protocol. If you use any of these on any operating system, you are a second class citizen now.

@KieranDevvs
Copy link

KieranDevvs commented Oct 21, 2021

To outright remove the feature rather than put it in preview and make the user opt-in, really does make it seem like a conspiracy. You have System.CommandLine in beta (https://github.com/dotnet/command-line-api/releases) for two years encounting and yet you decide to remove existing and functioning features, rather than delaying them, for what? Its an anti-pattern, you want visual studio to use the CLI rather than VS use its own implementation.

I think the work had already been completed by the dev team and now management have seen an opportunity to capitalise on Visual Studio licence exclusivity so enterprises dont flock to Rider / VS Code, so it's not just been cut from this release, but cut forever.

Just look at the management decisions in Windows 11 (granted, I know this is isn't related to .NET but it illustrates the MS management mentality), Ads in the start menu... At least try and pretend you respect your customers.

@Kryptos-FR
Copy link

Kryptos-FR commented Oct 21, 2021

@LyalinDotCom was kind enough to clarify on Twitter (and to be clear, I do appreciate it; please don't shoot the messenger):

Sorry for any confusion. To clarify, given the number of scenarios we are working on, we had to prioritize :(. As a result, Hot Reload will not release as a feature of dotnet watch tool. We are doubling down on VS 2022 with support for VS4Mac coming later

First the .NET Foundation fiasco, now this. Someone at Microsoft wants to kill the Foundation.

I don't care that they have to prioritize it internally. The SDK repo and all other .NET Foundation repos are supposed to be open-source, developed in the open and with the community involvement. There should have been an open discussion about it before making that decision behind the scene. The Microsoft's employees could have focused in VS support only while letting the community help for the wider audience support.

If the SDK repo is vendor-focused (here Microsoft) then it shouldn't be part of the foundation organization and moved back to the Microsoft one. After all these years, it appears Microsoft teams still don't understand how open-source works. It's all about communication and community involvement.

There could already be people working on supporting it for other IDE (Rider, VS code). By not involving the community, you saw the branch there were sitting on. Microsoft's backlog of issues shouldn't be the only backlog but a part of a bigger picture. There are a lot of .NET developers out there, some could have ideas to solve some of the general issues. By shielding their team from the outside world, Microsoft is removing any such opportunity. Nobody wants to spend time contributing to a project where the owners can just kill a feature on a whim.

@Joshua-Ashton
Copy link

Joshua-Ashton commented Oct 21, 2021

If Microsoft had nothing to hide, they wouldn't pre-emptively lock the PR which does it #22217

Pretty sad and pathetic tbh.

But hey, Microsoft ❤️ Open Source

@thorpj
Copy link

thorpj commented Oct 22, 2021

To add to the discussion, hot reload in VS22 does not work with Blazor Webassembly Hosted.

So CLI actually has a feature that VS22 hot reload doesn't, and now my team cannot use hot reload (which is one of the major reasons for choosing .NET for this project).

And of course, we don't all use VS. There are far better IDEs, and this is not how you make yours the most compelling.

Reverse this decision Microsoft. Reverse it now.

@MatthewKing
Copy link

Decisions like this really erode trust in the platform. Please reconsider this.

@supertr0n
Copy link

supertr0n commented Oct 22, 2021

In my experience with Blazor (Server) so far, this feature was working exceptionally well and significantly decreased the dev loop time.

Dropping it completely makes very little sense to me (without visibility of the reasoning behind it) and so close to the release of .NET 6 too.

This feature has been talked about for a long time, and .NET had been lagging behind other frameworks' hot reload capabilities for years. So this really feels like a lose-lose for the platform and for all of us already using it.

Notwithstanding all the other great work the .NET team has been doing, this decision is really disappointing.

@mducharm
Copy link

Well, this deflates a lot of my excitement about .NET 6 and the future of C# development. The support for CLI-driven workflows is something I love about .NET Core and above; whether I'm building a quick console app with VSCode or something more involved in Visual Studio, I loved that I could think of everything in terms of dotnet commands. But the long-term implications of this are concerning.

@onionhammer
Copy link

This definitely should be behind a flag or a very good explanation should be written up for why it needed to be removed.

@crozone
Copy link

crozone commented Oct 22, 2021

Decisions like this really erode trust in the platform. Please reconsider this.

It's possible that there are sensible engineering justifications for this change, however the complete lack of communication is alarming, especially considering the discussion was insta-locked on the PR.

This doesn't just erode my trust in the platform, it erodes my trust in the entire .NET foundation. If MS are willing to push PRs which cut features at the drop of a hat, without any community engagement, ostensibly to force people to use their other proprietary paid products, they're not exactly ♥ing open source, are they?

@raaffaaeell
Copy link

As someone that works mostly using Linux (backend), moves like these do not bold well to the future. Not only keeping it behind their own IDE (making it even less interesting vscode for c#), but stripping the last bit that made this new feature cross platform.

Also, from their messages, it seems that they arent even considering revisiting this decision in the future.

A sad day for the .Net ecosystem and I hope they reconsider this decision.

@bwong365
Copy link

Was super excited to see .net moving in a great trajectory until this. I hope the team reconsiders, otherwise there's always going to be some level of suspicion now, especially when combined with the wix toolset mess.

@kensykora
Copy link

As someone who's bought 100% into WSL2, this is hugely disappointing. The momentum to support VSCode with C# workflows and the promise this had, this is a mistake to put it behind Visual Studio

@francofgp
Copy link

I think we all lost something today

@3nprob
Copy link

3nprob commented Oct 22, 2021

There is a PR for reverting the change in #22262

@ShreyasJejurkar
Copy link

ShreyasJejurkar commented Oct 22, 2021

This literally halved my excitement about .NET 6 and hot reload in general.

ping me when .NET 7 arrives

Edit - Jetbrains Rider just added support for Hot reloads to their EAP.
https://twitter.com/JetBrainsRider/status/1451555367117275163

And also one more thing EAP builds are free until the final release happens! So enjoy!

@Je12emy
Copy link

Je12emy commented Oct 22, 2021

Looks like MS just doesn't care about it's community... :/

@larsw
Copy link

larsw commented Oct 22, 2021

I left for Kotlin/JVM and the Spring ecosystem.

@AKruimink
Copy link

AKruimink commented Oct 22, 2021

As a Linux user that is required/forced to use other editors then Visuals Studio (VS-Code and Rider), it's rather sad seeing features like these being locked away to garner some sort of exclusivity, i agree that this is is a big step backwards and hope this will be reconsidered.

@jjxtra
Copy link

jjxtra commented Oct 25, 2021

There has to be a middle ground here. Something that adds checks and balances beyond just Microsoft. All effective forms of government work this way.

@yangzhongke
Copy link

We need to push for Microsoft to give .NET full independence.

You can say that again.It's time to make .NET independent.

That would be the beginning of grisly death for .NET. The reason it's been successful, especially for businesses, is that it's run by a business. We don't need another run-by-committee platform, or by a volunteer after-hours and when-it-has-free-time-to-fix-critical-bugs "community". There are dozens of them out there, I've tried them all, and they mostly suck.

MS from time to time will make selfish profit-motivated decisions, it's allowed to. Life goes on. .NET continues to be great.

Do you mean Linux sucks? Is Linux a when-it-has-free-time-to-fix-critical-bugs project?

@lonix1
Copy link

lonix1 commented Oct 25, 2021

Do you mean Linux sucks? Is Linux a when-it-has-free-time-to-fix-critical-bugs project?

I referred to .NET competitors. Linux doesn't count; you're comparing apples and oranges. Despite what the fanboys of other platforms would have you believe, there is no platform as mature, well designed, modern, and continually maintained, as .NET. There is a reason for that. If it works, then conserve it... don't fiddle with it so that it breaks.

There has to be a middle ground here.

True.

@ibakirov
Copy link

This is how Microsoft should act in .Net Foundation and follow the spirit of Independent. Innovative. Always open source.

The .NET Foundation is an independent, non-profit organization established to support an innovative, commercially friendly, open-source ecosystem around the .NET platform.

@hello-sergei
Copy link

Do you mean Linux sucks? Is Linux a when-it-has-free-time-to-fix-critical-bugs project?

Not a widely advertised fact: Linus Torlvalds, and early Linux development in general, was originally funded by European governments, interested in alternatives to US-produced and US-controlled operating systems. Later links between Linux, foreign governments, and commercial enterprises, are well-documented.

As someone who started building Linux distributions at home back in 1996, I doubt Linux would gain its current acceptance without massive investments, especially in its drivers and enterprise-level features, from multiple interested deep-pocketed parties. Who would be the interested parties, other than Microsoft, in case of .NET?

@leisurelyclouds
Copy link

microsoft ❤ open source ×
microsoft pretends ❤ open source √
microsoft ❤ monopoly √
dotnet/core#4788

@solarkraft
Copy link

solarkraft commented Oct 25, 2021

Who would be the interested parties, other than Microsoft, in case of .NET?

Not sure it's ever possible to build a counter-party as strong as Microsoft, but the amount of people outside of Microsoft with a commercial interest in .NET having a future is not that small. Software developers, consultancies ... probably most people in this thread.
Maybe if all get together in some kind of association (counter-foundation?) it'd be viable to effectively influence/pressure MS. It's also worth remembering that support inside of Microsoft for an open .NET is also quite large.

Thank you for staying on the issue. I think this is the straw that broke the camel's back.

@RichardHubertPtw
Copy link

Keep open features coming, or shoot yourself in the foot. Many are just waiting to pounce and leverage a Microsoft OSS bungle. Don't give up all the good by making market-political bungles. Get a good OSS consultant :-) And thanks for all the great OSS innovations...

@ziaulhasanhamim
Copy link

ziaulhasanhamim commented Oct 27, 2021

I think .net and the visual studio team should work separately. Visual Studio is a commercial product and .net is really an open-source and cross-platform thing. why you want to limit the capabilities of .net to visual studio. If Microsoft wants people to use their IDE they just have to make it better than other IDEs in the market. C# and dotnet should be independent of IDE and platform like other programming languages. don't limit features to the visual studio only. Visual studio is no doubt a great IDE. don't make it part of the .net ecosystem. people will use the thing they like and benefits them most(visual studio, visual studio code, ride, or anything else). If Microsoft keeps creating these enforcement .net will lose the love it had been given from the community. so people will move to other languages like golang, rust, or dart rather than switching their IDE. Please make .net independent

@igor-zenkov
Copy link

For a relatively long time now (from 2016) Linux is my main development environment for building Azure and AWS based solutions with one exception. I have Windows 10 VM to run Visual Studio. That's right, I am running and maintaining Windows VM just to run VS! I actually like VS and I think it is a great IDE, however it is time for it to go! I am switching to Linux for C# development. Thanks to MS and Julia Liuson in particular for influencing my decision. I plan to use CLI based workflow and if I need an IDE I will use Jet Brains Rider. If Rider is as good as IntelliJ IDEA I don’t think I will miss VS. I think I just made a sound business decision ;-)

@danielfaust
Copy link

danielfaust commented Nov 8, 2021

I just wanted to point out the following Video [0] from Scott Hanselman posted on 2021-11-03. This issue-thread is confusing me. Will .NET 6 have Hot Reload included as it is shown in this video?

[0] https://www.youtube.com/watch?v=4S3vPzawnoQ

@adrianwright109
Copy link
Contributor

adrianwright109 commented Nov 8, 2021

I just wanted to point out the following Video [0] from Scott Hanselman posted on 2021-11-03. This issue-thread is confusing me. Will .NET 6 have Hot Reload included as it is shown in this video?

[0] https://www.youtube.com/watch?v=4S3vPzawnoQ

Yes .NET 6.0 will have support for Hot Reload in VS 2022 and on the CLI with dotnet watch. Microsoft's decision to remove Hot Reload functionality from dotnet watch was met with outrage from the .NET community just weeks before the GA release. Microsoft then reversed their business decision so Hot Reload will be available to use in VS 2022 IDE and on the command line with dotnet watch as of the VS 2022 and .NET 6.0 launch on November 8th.

@bbirtle
Copy link

bbirtle commented Mar 5, 2023

"Doubled down on Visual Studio" Boooo, Microsoft! Booooo!

SQL Server is fantastic. Dotnet is a powerful langauge. I'm OK to continue to pay thousands of dollars per year for these technologies.

But I will not use MS Windows and I will not use your crappy "visual studio for Mac" editor.

How about you guys have a serious think and "double down" your support for Visual Studio Code? Why the heck do you even have two different and nearly idential editors anyway!!??

For awhile there, Microsoft was taking great steps towards understanding that almost nobody WANTS to use Windows anymore, in the wider development community. I love Visual Studio CODE because I can deal with 19 different technologies at once (PHP, React, Python...).

Get rid of "Visual Studio" completely please. And drop this "vendor tie in" which is trying to push developers back into Windows. If your solutions run on Linux, again I will pay A LOT OF MONEY in licensing fees to continue to use them.

Otherwise next project, it's going to be node and another DB platform...

@KieranDevvs
Copy link

KieranDevvs commented Mar 5, 2023

"Doubled down on Visual Studio" Boooo, Microsoft! Booooo!

SQL Server is fantastic. Dotnet is a powerful langauge. I'm OK to continue to pay thousands of dollars per year for these technologies.

But I will not use MS Windows and I will not use your crappy "visual studio for Mac" editor.

How about you guys have a serious think and "double down" your support for Visual Studio Code? Why the heck do you even have two different and nearly idential editors anyway!!??

For awhile there, Microsoft was taking great steps towards understanding that almost nobody WANTS to use Windows anymore, in the wider development community. I love Visual Studio CODE because I can deal with 19 different technologies at once (PHP, React, Python...).

Get rid of "Visual Studio" completely please. And drop this "vendor tie in" which is trying to push developers back into Windows. If your solutions run on Linux, again I will pay A LOT OF MONEY in licensing fees to continue to use them.

Otherwise next project, it's going to be node and another DB platform...

  1. This issue was resolved and is almost 2 years old, why are you grave digging?
  2. Visual Studio is nothing like VSCode, nor is it trying to be. It's not even comparable in any sense.
  3. No... Just no...

Get rid of "Visual Studio" completely please.

almost nobody WANTS to use Windows anymore, in the wider development community.

@bbirtle
Copy link

bbirtle commented Mar 6, 2023 via email

@KieranDevvs
Copy link

KieranDevvs commented Mar 6, 2023

Definitely not resolved for me. “Dotnet watch” seems buggy and almost totally broken. As for “grave digging” please keep your bad attitude to yourself. This thread comes up at the top of the list when I search for solutions.

This issue has nothing to do with hot reload not working. Its about Microsoft trying to put it behind a pay wall and they reverted that decision due to the community response. (I shouldn't have to describe what the issue you have posted on is about, you seem to have eyes and can read clearly.)

Do you often just pick a closed random issue regardless of what its contents are, and just comment your own personal unrelated issues?

Hint: No one is going to care about your problems if you don't care to file them in the proper location.

@CEbbinghaus
Copy link

But I will not use MS Windows and I will not use your crappy "visual studio for Mac" editor.

Seems they don't want you to use it either: https://learn.microsoft.com/en-us/visualstudio/mac/what-happened-to-vs-for-mac?view=vsmac-2022

This means that had the PR not been reverted it would have been impossible to hot reload on mac (one of the 2 biggest Development OS') ontop of Linux.

With their actions to close source the LSP & keep the debugger restrictive they are loosing a lot of goodwill and this issue keeps being referenced as "another reason" they are ruining their reputation.

@atrauzzi
Copy link

atrauzzi commented Sep 7, 2023

It's a good example of why designing with vendor lock in in mind - regardless of the market share of Linux - is always fundamentally a bad idea.

@tonyqus
Copy link

tonyqus commented Nov 21, 2023

According to this post,

I was extremely surprised about how critical MVPs can be about products and features Microsoft puts out. For example, there were a lot of MVPs extremely critical of Microsoft's decision to pull hot reload from .NET 6. Part of being an MVP is giving feedback to the Microsoft product groups. That feedback isn't public so you don't get to see a lot of it.

If this is true, it means a few MVPs influenced this bad decision from Visual Studio team. I'm actually investigating how bad MVP program is. This comment from the post really surprised me.

@MatthewSteeples
Copy link

I think you've read that the wrong way round. It's saying that MVPs were critical of the decision to remove it. That means they were against the decision that was made by Microsoft. I'd even go as far to say as the MVP program's feedback helped get the feature back in.

@tonyqus
Copy link

tonyqus commented Nov 22, 2023

I think you've read that the wrong way round. It's saying that MVPs were critical of the decision to remove it. That means they were against the decision that was made by Microsoft. I'd even go as far to say as the MVP program's feedback helped get the feature back in.

It said 'to pull hot reload from .NET 6' instead of 'to push hot reload back to .NET 6'. Is it possible that MVPs give wrong feedback like hotreload may be used by JetBrain or other IDE competitor?

@crozone
Copy link

crozone commented Nov 22, 2023

@tonyqus MVPs did not want it removed.

there were a lot of MVPs extremely critical of Microsoft's decision to pull hot reload from .NET 6

"Microsoft's decision to pull hot reload" = Microsoft decided to remove hot reload.

MVPs were "extremely critical" of that decision. AKA, MVPs wanted to keep hot reload.

@tonyqus
Copy link

tonyqus commented Nov 22, 2023

Sorry, looks I have the wrong translation for the word 'critical'. I have this conclusion because of the following posts I found from the Microsoft community. A few MVPs have concerns on the MVP program because Microsoft only wants MVP who can shill for their products. In other words, most of the remaining MVPs are good at shilling I'm afraid.

Confessions of a Disgraced Former Microsoft MVP
The State of the Microsoft MVP Program
Microsoft’s MVP Program has a new requirement: Shilling

@masonwheeler
Copy link

Sorry, looks I have the wrong translation for the word 'critical'

It's the following word that makes the difference. "Critical to" means "providing fundamental support for," while "critical of" means "disagreeing with." It would appear that you read the latter and accidentally saw it as the former.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-AspNetCore RazorSDK, BlazorWebAssemblySDK, dotnet-watch untriaged Request triage from a team member
Projects
None yet
Development

No branches or pull requests