picoe / Eto

Cross platform GUI framework for desktop and mobile applications in .NET
Other
3.58k stars 325 forks source link

Remove mono support #2456

Closed cwensley closed 1 year ago

cwensley commented 1 year ago

Mono (the framework) is dead, all support for building with mono and using it should be removed.

This should allow us to reference RoslynCodeTaskFactory directly in targets, and simplify Mac packaging scripts.

Serg-Norseman commented 1 year ago

.NET (Core) is missing on FreeBSD, as is .NET Framework v>4.6.2. If Mono support is removed, then my application written using Eto.Forms for cross-platform cannot be run on FreeBSD.

And why did I then spend a bunch of years in order to port the entire application under EtoForms, if then the whole direction will simply be killed?

Serg-Norseman commented 1 year ago

I've been working like hell for the past month to polish the application perfectly on Gtk platforms. Everything is almost perfect.

Great news. Just a brick on the head. Thank you.

Serg-Norseman commented 1 year ago

WinForms are zombies. WPF for Linux does not exist. MAUI for Linux is practically not being developed. Mono and MonoDevelop are killed in MS. With Avalonia and Uno, a normal full-fledged desktop application cannot actually be built. Xwt is also dead. There are no alternatives left.

cwensley commented 1 year ago

Hey @Serg-Norseman,

Thanks for the feedback, and sorry for causing any grief. This is by no means something that needs to be done if people are actively using it this way (with no alternatives).

Given this, I could change these plans to only remove the ability to build using mono, but keep the ability to run built applications on mono.

Would that work for you?

Serg-Norseman commented 1 year ago

For me personally, this will definitely work. I build both in Mono and from under Windows for Mono, and on Linux for Mono using dotnet.

The only problem is that the packages for FreeBSD in the official repositories are made by other people. It has its own world with its own rules. And I don't know if they have the ability to use pre-compiled files from another platform when building a package.

The problem has already arisen, where I did not expect it - recently released a release of my program with the transition from netfw 4.6.2 to 4.7.2. And they approached me with a request that the project assembly on FreeBSD broke - for some reason, Mono available to them does not support 4.7.2 (however, this has been the same for Fedora). I will roll back my project back to netfw 4.6.2. I don't know how long this will work.

And I worriedly wondered whether support for netfw 4.6.2 would disappear in Eto ... As it already happened in one of the dependencies of my project.

cwensley commented 1 year ago

All great feedback, @Serg-Norseman. Thanks.

I think I'll take a different tack here. I won't plan on removing anything, but I won't be testing it anymore. If anything breaks I will wait until people complain and go from there.

If mono is removed from linux distros, or if .NET Core is available ubiquitously then I might revisit this.

cwensley commented 1 year ago

By the way, I'm not planning on upping the .NET Framework requirement any time soon.

According to https://learn.microsoft.com/en-us/lifecycle/products/microsoft-net-framework, .NET 4.6.2 will be supported until Jan 12, 2027 so no decision will be made until then.

danfe commented 1 year ago

Mono (the framework) is dead, all support for building with mono and using it should be removed.

Sorry, but [citation needed]. I see no indication of "deadness" anywhere upstream. FWIW, in many GNU/Linux and *BSD distributions, Mono is de facto standard .NET/C# platform and cannot be replaced without ripping users off their favorite programs.

That said, thank you for reconsidering and keeping Mono support. Even in an ideal world where M$ suddenly becomes truly FOSS-friendly (yeah right), we would still need an alternative implementation just in case someone from the upper management decides to pull the plug one day.

ris-work commented 2 weeks ago

BTW, there was a dotnet runtime lab experiment re: FreeBSD port and dotnet works fine for non-trivial programs on FreeBSD (SIPSorcery). Current versions are built at at least two places on GitHub and is also available through FreeBSD ports (which means it is as self-contained as systems go). I consider mono basically dead that Microsoft even donated it to the WINE project.