[HN Gopher] Microsoft donates the Mono Project to the Wine team
       ___________________________________________________________________
        
       Microsoft donates the Mono Project to the Wine team
        
       Author : itherseed
       Score  : 627 points
       Date   : 2024-08-27 18:34 UTC (4 hours ago)
        
 (HTM) web link (www.mono-project.com)
 (TXT) w3m dump (www.mono-project.com)
        
       | larsrc wrote:
       | "Donates"? A code base is a maintenance burden.
        
         | pstrateman wrote:
         | Yeah if this doesn't come with a substantial endowment it's not
         | a donation.
        
           | rnd0 wrote:
           | So ...throwing it over the fence into the neighbor's yard,
           | then?
        
             | ielillo wrote:
             | More like going to the local library with a bunch of old
             | books. It might be worth keeping them, but someone has to
             | sort them out.
        
         | RandomThoughts3 wrote:
         | That's the old code base which has been in maintenance mode for
         | 5 years and which Microsoft doesn't want to maintain anymore.
         | New development still happen in a fork which remains under the
         | stewardship of Microsoft.
         | 
         | Second paragraph of the article by the way, just saying.
        
           | farhaven wrote:
           | So Microsoft gave the Wine project the software equivalent of
           | a stained mattress?
        
             | RandomThoughts3 wrote:
             | The Wine project apparently decided they wanted to keep
             | alive an old version of a piece of software Microsoft has
             | no interest in and Microsoft gave them the official repo
             | instead of throwing it out.
             | 
             | Mostly interesting in that it is a token of goodwill from
             | Microsoft to Wine something which is in line with the
             | current Microsoft view of the OS market but would have been
             | very surprising not that long ago.
        
             | PretzelPirate wrote:
             | It's not like Microsoft can force Wine to take the
             | codebase. In order for this to be donated, the Wine project
             | needed to accept it.
        
             | kergonath wrote:
             | Pretty much, by the look of it. But we still don't know
             | everything or what exactly the Wine project has on its
             | metaphorical mind.
        
       | nerdjon wrote:
       | I have only used mono a couple times, but I am a bit confused by
       | the wording here and it is likely because I don't know the full
       | story of Mono.
       | 
       | But:
       | 
       | > Microsoft maintains a modern fork of Mono runtime in the
       | dotnet/runtime repo and has been progressively moving workloads
       | to that fork.
       | 
       | Does that mean that this mono project and its associated repo and
       | what is within the dotnet repo are not the same and could (if
       | they have not already) diverge?
        
         | JackSlateur wrote:
         | Mono was the .net implementation for Linux (and others ?) years
         | ago while microsoft published the windows .net runtime
         | 
         | Since then, microsoft supports
         | https://github.com/dotnet/runtime, which is MIT licensed
         | 
         | Mono has no reason to live anymore, hence the lack of commits
         | and contributions
         | 
         | It is a dead project, I wonder what winehq has in mind here
         | 
         | edit: as pointed by the comments, mono supports .net runtime
         | before the newer ".net core" (which is not compatible). Because
         | wine wants to be able to run older windows code, they probably
         | still use this.
        
           | nicce wrote:
           | Winehq is probably the only org who might have needs to add
           | something in there. So why not have a control of it, even if
           | the contributions are rare.
           | 
           | Edit: To add, isn't the above about ASP .NET Core? Mono is
           | mostly about the time before Core, and it is not the same.
        
           | filmor wrote:
           | Mono has support for app domains (and is in general closer to
           | .NET Framework), a more powerful C API and runs on more
           | architectures.
        
             | actionfromafar wrote:
             | This _must_ be the reason. Wine seeks to be compatible with
             | a bunch of legacy software, some of which will want to use
             | the equivalent of .NET 1, 2, 3, and 4.x _Framework_ and not
             | just  "dotnet core". (Or whatever the new thing is called
             | in Microsoftese this week.)
             | 
             | Edit: maybe this means WPF can be the best way to write
             | Linux applications. After all, Win32 is the stable Linux
             | API... _nudge nudge, wink wink_. :-D
        
           | nerdjon wrote:
           | So if I am understand correctly, what I mentioned is correct?
           | 
           | On the website (where my quote comes from) it links to
           | https://github.com/dotnet/runtime/tree/main/src/mono which is
           | a mono within what you linked too.
           | 
           | So this is a case of 2 different mono's?
           | 
           | Sorry just trying to make sure I am understanding what is
           | happening here properly given the exact same name in 2
           | places...
        
           | jabl wrote:
           | I know little of dotnet beyond trying various semirandom
           | things to make some .net apps work on linux. With that out of
           | the way, my understanding is that
           | 
           | - Originally there was .Net Framework, by microsoft, for
           | windows only. Versions 1.0 -> 4.8 were released.
           | 
           | - Then mono came along as a somewhat clean-room
           | reimplementation of .Net framework, focusing on making it run
           | on Linux. Though mono does not implement windows gui widgets,
           | so for that there's stuff like Gtk#. And you cannot run
           | windows GUI applications on mono for this reason, even though
           | the core parts might be portable. Eventually Microsoft
           | acquihired the Mono team.
           | 
           | - Later on Microsoft made the core of .net open source and
           | portable, creating .Net Core. Or .Net Runtime, linked above,
           | which is apparently the same thing (not sure when they
           | dropped the "Core" part of the name). Applications written
           | for .Net Framework can't just be recompiled for .Net
           | Core/Runtime, there is porting work that needs to be done.
           | And similarly as for .Net framework, even though the core is
           | portable and open source, the windows gui libraries are not.
           | So again windows GUI applications written using .Net Runtime
           | cannot run on Linux. Not sure if there exists anything like
           | Gtk# for .Net Runtime, allowing creating native Linux GUI
           | applications with .Net Runtime?
           | 
           | - Finally, we have wine which is an implementation of the
           | Windows API on Linux. And in a wine environment you can
           | install e.g. .Net Framework including GUI libraries, so you
           | can run .Net GUI applications that way.
        
             | Uvix wrote:
             | They dropped the "Core" suffix with v5 in 2020, since at
             | that point there was no longer naming confusion.
             | 
             | While Microsoft doesn't have their own framework supporting
             | Linux GUI apps on the modern .NET runtime (MAUI does
             | Mac/iOS/Android but not Linux), there are third-party ones
             | like Avalonia.
        
               | Kwpolska wrote:
               | Dropping the "Core" suffix introduced more naming
               | confusion. Before that, ".NET" was often used as a
               | shorthand for the (now legacy) .NET Framework. Which
               | makes googling for Core-specific things much harder than
               | it needs to be.
        
             | neonsunset wrote:
             | See https://news.ycombinator.com/item?id=41372165
             | 
             | It is harmful to write new code that targets .NET Framework
             | and existing actively maintained applications all have
             | migrated to .NET. The ones that did not either have poor
             | maintenance or authors that lack time as they don't owe
             | extra effort unless they want to do that (or sometimes it
             | is a skill issue, unfortunately).
        
             | rezonant wrote:
             | > not sure when they dropped the "Core" part of the name
             | 
             | It was called .NET Core until they officially retired the
             | .NET Framework (ie v4) by releasing .NET 5.
        
           | bri3d wrote:
           | > Mono has no reason to live anymore
           | 
           | This isn't really true. Mono functions as a complete
           | replacement for the ".NET Framework" - something that can be
           | used to run any .NET app, including "legacy" apps targeting
           | old ".NET Framework" versions, on any supported platform,
           | even when the app was built to target Windows.
           | 
           | dotnet/runtime is intended to run more modern applications
           | that target ".NET Core" - basically, stuff that's cross-
           | platform on purpose.
           | 
           | There are tons of subtle differences relating to these goals
           | but also some glaringly obvious ones, like mono having an
           | implementation of Windows.Forms.
           | 
           | > hence the lack of commits and contributions
           | 
           | Microsoft have been actively forcing contributors out of
           | mono/mono and into the dotnet/runtime repo for several years
           | now, while Wine kept a weird halfway fork at
           | https://gitlab.winehq.org/wine-mono/mono . Formally
           | transferring `mono/mono` and the Mono name over to Wine will
           | in theory allow `mono` to more effectively accept code which
           | works to improve legacy .NET Framework support for
           | compatibility reasons, while dotnet/runtime can continue to
           | evolve as the way to run intentionally targeted .NET Core
           | code.
        
             | lyu07282 wrote:
             | Won't most apps use way more .net stuff than core? Mono was
             | a way to run dotnet apps on Linux, killing it meant killing
             | cross platform support for modern dotnet desktop apps?
        
               | jkulubya wrote:
               | Not really. Best to think of .net "core" as just .net.
               | 
               | Anything that was in the old .net that isn't in core
               | today won't ever be.
               | 
               | Then there's stuff that was missing in the earlier
               | versions of core that existed in old dotnet. Some of it
               | they later realised was useful for newer apps or apps
               | migrated to core. These pieces were ported over by
               | Microsoft or replaced by 3rd party implementations (e.g.
               | avalonia for xplat ui).
               | 
               | (.net core is actually officially just .net, they dropped
               | the core from the name)
        
               | romwell wrote:
               | This is Hackernews.
               | 
               | What are those _Desktop_ apps you speak of?
               | 
               | Clearly, everything is a command-line backend pipeline in
               | container with a web UI.
               | 
               | And everything that isn't can be easily deprecated. /s
        
           | Rochus wrote:
           | > Mono has no reason to live anymore
           | 
           | More targets, much leaner (< 10 MB clr + mscorlib), less than
           | factor two performance difference to current CoreCLR, written
           | in C, easier to compile than CoreCLR, etc.
        
       | donatj wrote:
       | Is the correct interpretation, reading between the lines that the
       | _original_ Mono project is being retired, and basically put on
       | life support?
        
         | Wytwwww wrote:
         | I think this has already been the case for years? Mono didn't
         | really have much of a point after MS opensource .NET and ported
         | it to other platforms.
        
           | rererereferred wrote:
           | And Wine will probably not do much more than maintenance so
           | applications targeting .net 1-4 work on Wine.
        
         | jacoblambda wrote:
         | Somewhat?
         | 
         | Mono is still really the only way to run older .NET (pre FOSS
         | runtime/Core .NET) on non-Windows platforms.
         | 
         | So Wine has historically kept a fork of mono for use within
         | Wine for supporting .NET apps.
         | 
         | Modern .NET can be built for Linux, etc so this is less
         | relevant now but there are still a lot of apps that depend on
         | old .NET and Wine still gets value out of that.
         | 
         | There are a bunch of downstreams that get used for various
         | purposes (Microsoft uses mono for webasm embedded .NET for
         | example) so it makes sense to give over ownership of Mono to
         | the Wine community as they are best aligned with the original
         | upstream's intended use case (as a full replacement for .NET).
         | 
         | So yes it's on life support but arguably more in the sense that
         | it has since specialized into a bunch of downstream projects.
         | The upstream will probably mainly be used for coordinating
         | common improvements that all of the downstream forks care about
         | (which are mainly Wine and Microsoft).
        
       | rickcarlino wrote:
       | I feel like I'm missing some context here. Is this a "free as in
       | take this puppy" situation? How do the wine developers benefit
       | from this?
        
         | minkles wrote:
         | I think it's just hurting someone at Microsoft less if they
         | give it a home that isn't /dev/null.
         | 
         | Edit: quick hat tip to Mono.Cecil which I've used a couple of
         | times to crack .Net components to bypass licensing code. It's
         | not that we didn't pay for them but we couldn't be bothered to
         | deal with license deployment and maintenance.
        
         | jcims wrote:
         | How has 'free as in puppies' not reached its rightful place on
         | the podium?
        
           | spiderfarmer wrote:
           | Because nobody wanted to maintain it.
        
             | karmajunkie wrote:
             | i'd upvote this twice if i could...
        
           | ragebol wrote:
           | I'm not a dog person: a puppy would be a burden (financially
           | and time-wise) and provide me barely any fun.
        
             | yathern wrote:
             | I think that's the intended implication - that it's "free
             | to a good home" - meaning any new owner takes on a lot of
             | responsibility.
        
             | bmacho wrote:
             | That's what 'free as in puppies' mean.
             | 
             | Free software is typically described as "free as in
             | freedom" or "free as in free beer". (This is probably a
             | limitation of English tho, my language has 2 different
             | words for permissions and costlessness.) GP above proposes
             | the "free as in puppy" variant, which means that it is a
             | burden of maintenance. I can't recall any real examples for
             | this.
        
               | jcranmer wrote:
               | If you want to be pedantic, English does have distinct
               | words for the two connotations of free--"liberal" and
               | "gratuitous". Although it should also be immediately
               | obvious why those words aren't preferred either:
               | "liberal" also has several other connotations (to the
               | point that a "Liberal Party" could be almost anywhere on
               | the political spectrum), while "gratuitous" tends to lean
               | more towards "unnecessary" than "free of charge" in
               | common parlance.
        
               | umanwizard wrote:
               | > English does have distinct words for the two
               | connotations of free--"liberal" and "gratuitous".
               | 
               | Sorry but no it doesn't. These words have the other
               | meanings you mentioned, but they don't include either of
               | the meanings of "free".
               | 
               | If you said you were giving away "gratuitous software",
               | native English speakers wouldn't know what you were
               | talking about. The only way to understand it would be to
               | realize that those words are etymologically cognate to
               | words in European languages that do have those meanings.
        
               | kbutler wrote:
               | Free software releases often include the "free as in
               | puppy" implication as a disclaimer of responsibility for
               | the effort you may need to expend to make use of it - "if
               | it breaks, you get to keep both pieces".
               | 
               | https://english.stackexchange.com/questions/118717/how-
               | is-th...
        
             | kelnos wrote:
             | To be fair, "free as in beer" doesn't work for a lot of
             | people who don't drink (or do drink, but don't like beer).
             | I don't think we're going to come up with a one-size-fits-
             | all slogan...
        
               | willhslade wrote:
               | Free food? Organic vegetable stew?
        
           | bawolff wrote:
           | I love this. Definitely using this next time someone tries to
           | guilt me into becoming maintainer of some abandonware foss
           | project.
        
           | matthewbauer wrote:
           | I guess this is in the context of "free as in beer" and "free
           | as in speech".
        
           | codersfocus wrote:
           | White elephant has usually been the go to animal for this
           | kind of idiom
        
         | zerocrates wrote:
         | Wine has (or used to have anyway, not sure if it still does) a
         | version of Mono it used to run .NET stuff within Wine; I'd
         | assume this has to do with that, that they were relatively
         | alone in having a continuing interest in the Mono codebase vs.
         | the dotnet core stuff.
        
         | dtquad wrote:
         | Microsoft's own FOSS multiplatform implementation of the .NET
         | runtime is now much more performant and feature complete than
         | Mono.
         | 
         | However Mono is easier to embed into other applications and
         | easier to port to new platforms. That is for example why it's
         | used for the .NET/Blazor WebAssembly stuff. Microsoft still
         | maintains their own fork of Mono for this specific use case.
         | 
         | Mono also implements some of the legacy Windows Desktop GUI
         | frameworks like WinForms and WPF that Microsoft never bothered
         | to port to their new .NET runtime. This is probably why the
         | Wine developers might be interested in Mono.
        
           | Phrodo_00 wrote:
           | Mono also supports winforms. I don't think they're supported
           | in dotnet (but there's libraries for Gtk, although you could
           | also use Vala with a bit extra effort).
        
             | IshKebab wrote:
             | Yeah I think it also supports WPF. Can't remember where I
             | read that.
        
           | neonsunset wrote:
           | A shoutout goes to a project that aims to simplify CoreCLR
           | embedding UX to prevent the issues stemming from embedding
           | legacy Mono: https://github.com/StudioCherno/Coral
        
           | lloydatkinson wrote:
           | Winforms and WPF are both very maintained and supported for
           | .NET 8 on Windows, to clarify. Good cross platform desktop
           | frameworks include Avalonia.
        
             | kelnos wrote:
             | Are those frameworks available in .NET 8 on non-Windows
             | platforms, though? If not, I think that's what the GP was
             | getting at.
        
               | grokys wrote:
               | Not by Microsoft, but Avalonia has a commercial fork of
               | WPF which runs on Linux and macOS:
               | 
               | https://avaloniaui.net/xpf
        
             | qingcharles wrote:
             | I think MS wants you to use this?
             | 
             | https://dotnet.microsoft.com/en-us/apps/maui
             | 
             | I was pleased to see WinForms got some updates in .NET9. I
             | really thought they'd left it. I still use it every day
             | when I need to spin up a new tool to do some little task
             | that needs a GUI.
        
               | lloydatkinson wrote:
               | The only people wanting anyone to use MAUI are the MAUI
               | team and even then only half heartedly.
               | 
               | Microsoft Build this year only discussed WinUI and WPF
               | even.
               | 
               | https://www.reddit.com/r/dotnet/comments/1cy2u6l/microsof
               | t_h...
        
               | mark336 wrote:
               | Good, I use MVC and it sucks.
        
       | stefanos82 wrote:
       | My assumption is that it must have something to do with
       | https://en.wikipedia.org/wiki/Wine_(software)#Microsoft_appl...
       | 
       | This way will allow them to improve Mono accordingly? Who knows?
       | /me-thinks...
        
       | zbowling wrote:
       | I worked on Mono a lot back in the early 2000s (back in the SVN
       | days before it moved to Git, even). This move makes a lot of
       | sense. Things evolved a lot over the years. Mono's legacy goals,
       | which are to be a portable CLR (.NET) runtime for platforms that
       | Microsoft didn't care about, don't make much sense today.
       | 
       | Mono made a lot of sense for running places where full .NET
       | didn't, like in full AOT environments like on the iPhone where
       | you can't JIT, or for random architectures that don't matter
       | anymore but once did for Linux (Alpha, Itanium, PPC, MIPs, etc.).
       | When Microsoft bought Xamarin (which itself was born out of the
       | ashes of the Novell shutdown of the Mono effort) and started the
       | DotNET Core efforts to make .NET more portable itself and less a
       | system-provided framework and merge in a lot of the stuff Mono
       | did a single more focused project made more sense.
       | 
       | Mono was still left out there to support the edge cases where
       | DotNET Core didn't make sense, which was mostly things like being
       | a backend for Wine stuff in some cases, some GNOME Desktop stuff
       | (via GTK#, which is pretty dead now), and older niche use cases
       | (second life and Unity still embed mono as a runtime for their
       | systems). The project was limping, though, and sharing a standard
       | library but different runtimes after much merging. Mono's runtime
       | was always a little more portable (C instead of C++) and more
       | accessible to experiment with, but we need that less and less,
       | but it's still perfect for Wine. So, having it live on in Wine
       | makes sense. It's a natural fit.
        
         | lolinder wrote:
         | Is there somewhere where someone new to the ecosystem can get a
         | simple introduction to all of these different terms and which
         | ones are still relevant today? I looked into .NET somewhat
         | recently and came away with the apparently mistaken impression
         | that Mono _was_ how .NET did cross-platform. I guess I must
         | have been reading old docs, but I 'm pretty sure they were at
         | least semi-official.
         | 
         | Is there good documentation somewhere for getting set up to
         | develop with modern .NET on Linux?
        
           | older wrote:
           | This is the official one: https://learn.microsoft.com/en-
           | us/shows/visual-studio-code/g...
        
           | Blot2882 wrote:
           | Mono was, but newer versions of .NET run on Linux and Mac.
           | 
           | You can install at the link below, and then making a project
           | is just `dotnet new console` and run with `dotnet run`
           | 
           | https://learn.microsoft.com/en-us/dotnet/core/install/linux
        
             | simion314 wrote:
             | Mono implemented the GUI stuff like Windows Forms, do the
             | latest windows cross platform stuff support that? Can you
             | run .Net GUI windows program on linux without Mono but
             | using the latest .Net thing ? I know it was not possible in
             | the past.
        
               | deaddodo wrote:
               | .net Core doesn't supply WinForms, but WPF is the far
               | more common paradigm for Windows apps now. WPF is
               | supported by projects like Avalonia on Linux. There are
               | also a few other major alternative UI toolkits, more
               | commonly used by cross-platform (vs Windows-exclusive)
               | developers.
        
               | Kwpolska wrote:
               | .NET Core does support Windows Forms just fine, but it's
               | only available on Windows.
        
               | pionar wrote:
               | You can use third party libs like Avalonia[1] or Uno[2]
               | 
               | [1] https://avaloniaui.net/ [2] https://platform.uno/
        
               | simion314 wrote:
               | Sure, nobody wants to write Winforms new applications
               | today
               | 
               | My point is about running existing applications on Linux,
               | there are still issues with running .Net GUI stuff under
               | wine and Mono was not a perfect implementation.
               | 
               | I read in other comments that the newer .Net cross
               | platform stuff is not a replacement for Mono for running
               | this old applications. (nobody will rewrite them to use
               | the current GUI stuff from MS since are old apps)
        
               | moron4hire wrote:
               | No, Microsoft's .NET only supports WinForms on Windows.
               | They do have an official cross platform GUI toolkit in
               | MAUI, but it strangely does not support Linux.
        
               | runevault wrote:
               | Last I knew it is also considered pretty lackluster.
               | Every time I read up on it it feels like, even beyond the
               | lack of Linux support people just don't care for it.
               | 
               | If I was building a cross platform native app with .NET
               | I'd probably use Avalonia right now.
        
               | moomin wrote:
               | Yeah, the took an age delivering it, then it came out and
               | most of the early reports were "It's still not ready."
               | and then I think Microsoft just gave up.
               | 
               | I think not supporting Linux was a tactical error,
               | though. Some people will put up with a lot for Linux GUI
               | support, and some of those people are the types who can
               | resolve problems with your half-baked GUzi framework.
        
               | sweeter wrote:
               | Windows: it's cross platform! _Looks inside_ "Except for
               | Linux"
               | 
               | Huh
        
               | stackskipton wrote:
               | >but it strangely does not support Linux.
               | 
               | Support reasons. Still isn't the year of Linux Desktop.
        
               | stuaxo wrote:
               | For this, having wine in charge makes sense - though, as
               | with many things wine you could be waiting a while.
        
               | eppp wrote:
               | No, they pretty much gave up on winforms when .net core
               | morphed into "the" .net that is cross platform. There are
               | some nice crossplatform gui libs now though.
        
               | LAC-Tech wrote:
               | What are the ones to use in 2024? I used to code informs,
               | it was a great improvement on its successors.
        
               | starik36 wrote:
               | Not really. Winforms have been updated to .net core. And
               | a bunch of handy features to modernize it have been
               | added.
               | 
               | I'd say it's the simplest and quickest way to go if you
               | need to bang out a quickie app for Windows only.
               | 
               | https://learn.microsoft.com/en-
               | us/dotnet/desktop/winforms/?v...
        
               | neonsunset wrote:
               | You are expected to use Avalonia or Uno for multi-
               | platform targeting or Gir.Core (GTK4) or one of the many
               | other binding libraries for Linux-specific GUI.
               | 
               | Also very easy to throw something together on top of SDL2
               | with Silk.NET.
               | 
               | Practically speaking it is in a much better place than
               | many languages considered by parts of Linux community to
               | be more """linux-oriented""".
        
               | simion314 wrote:
               | My personal use case is running old GUI apps, I am not
               | planning on writing GUI apps with .Net , MS had the
               | opportunity to open source .Net/Silverlight and make
               | money from tools but they bet on Windows and today most
               | apps are node and javascript, a much inferior platform
               | but MS open things up too late.
        
               | toyg wrote:
               | The whole point of .NET-Core was to remove all the
               | (largely desktop-oriented) platform-specific dependencies
               | that tied it to Windows, so you could run server-oriented
               | .net programs on Linux. So no, afaik you can't simply run
               | GUI apps built with .Net on Linux desktops - that's the
               | reason Mono wasn't simply killed, because it covers that
               | niche (which wouldn't even exist, were it not for
               | Mono/Xamarin's efforts back then. But I digress...).
               | Nowadays there are a few other attempts at providing that
               | UI layer.
        
               | dark-star wrote:
               | .net Core still has Windows Forms thoguh? At least I (for
               | kicks) migrated one of my old .net 4.something projects
               | to .net core and it still works and shows the classic
               | Windows Forms GUI.
               | 
               | It's (of course) not portable
        
               | qingcharles wrote:
               | I think this is what you need now...
               | 
               | https://dotnet.microsoft.com/en-us/apps/maui
               | 
               | "Build native, cross-platform desktop and mobile apps all
               | in one framework."
               | 
               | I know my buddy uses it to write Android apps on his Mac
               | that interface to an ASP.NET Core web site.
        
             | Kye wrote:
             | For historical context: this was _before_ the conclusion of
             | the antitrust case that led Microsoft to start softening
             | its stance toward open source. https://en.wikipedia.org/wik
             | i/United_States_v._Microsoft_Cor....
             | 
             | This was the same year Antitrust came out:
             | https://en.wikipedia.org/wiki/Antitrust_(film)
             | 
             | Any support for open source or cross-platform stuff was a
             | bulwark against claims of monopoly abuse, but none of it
             | worked well enough to be a true replacement. Mono worked
             | for some purposes, but it was far from the first party
             | support cross-platform .NET gets today. Nowadays it sounds
             | like .NET Core + third-party GUI libraries is the way to
             | go.
        
               | paranoidrobot wrote:
               | > Nowadays it sounds like .NET Core + third-party GUI
               | libraries is the way to go.
               | 
               | For reference for those unfamiliar with the terms:
               | 
               | .NET Core was the name given to the cross-platform fork
               | of the .NET runtime.
               | 
               | It was forked out of .NET 4.x and dropped support for a
               | lot of things in the first versions.
               | 
               | It ran on various distributions of Linux and MacOS.
               | 
               | At the same time there were forks of other
               | libraries/frameworks in the .NET ecosystem to have 'Core'
               | variants. Often these were dropping support for legacy
               | parts of their code so that they could run on Core.
               | 
               | Later versions of .NET Core brought over support for a
               | many of the things that had been dropped.
               | 
               | .NET Core and .NET had stand-alone versions until .NET
               | Core was renamed to . NET and became .NET 5.
               | 
               | So, if you want to do the most modern cross-platform C#
               | you would use .NET 9.
        
               | aspeckt112 wrote:
               | Good write up that wonderfully encapsulates how stupid
               | Microsoft's naming is - you didn't even mention .NET
               | standard.
               | 
               | I love .NET. It's a great stack, especially for backend
               | web apps. Blazor is a great SPA framework too. But I
               | loathe how Microsoft continue to handle just about
               | everything that isn't the framework and C# / F#. It's
               | laughable.
        
               | paranoidrobot wrote:
               | Well, to be fair .NET Standard wasn't a framework, it was
               | a standards/compatibility label and compilation target.
               | 
               | .NET Standard includes various versions of things that MS
               | doesn't even touch.
               | 
               | I stopped doing .NET stuff before .NET 5 so I'm not
               | hugely up to date with the latest shenanigans.
        
             | pantalaimon wrote:
             | Is there a way to build a GUI app with .NET on Linux?
             | 
             | Will it be cross-platform?
        
               | cultofmetatron wrote:
               | > Is there a way to build a GUI app with .NET on Linux?
               | 
               | yes
               | 
               | https://avaloniaui.net/
        
               | fsckboy wrote:
               | (i hardly know what i'm talking about so somebody else
               | may have a better idea, but i'm here now so)
               | 
               | mingw is a GNU's header/library environment (tools too
               | maybe?) to create windows compatible applications. So I'd
               | look into searching mingw .net and/or mingw mono.
               | 
               | also, ask your favorite AI, they're good at this type of
               | question so long as it's not up to the minute news
        
               | aspeckt112 wrote:
               | Avalonia.
               | 
               | The UI isn't native, is a Skia canvass with drawn
               | controls. But it'll work on basically every OS and it's
               | pretty good.
               | 
               | Also, you're not writing JavaScript, so that's a win any
               | day in my book.
        
             | Buttons840 wrote:
             | Is .NET open-source? Will I find it in an open-source
             | repository?
        
               | sva_ wrote:
               | Seems so https://github.com/dotnet/dotnet
        
               | NlightNFotis wrote:
               | Yes.
               | 
               | https://github.com/dotnet/runtime/
        
           | pionar wrote:
           | dot.net is the official starting point. It'll point you to
           | getting setup with .NET dev on Linux. You can either use
           | VSCode or Intellij Rider.
        
           | SideburnsOfDoom wrote:
           | > I looked into .NET somewhat recently and came away with the
           | apparently mistaken impression that Mono was how .NET did
           | cross-platform. I guess I must have been reading old docs,
           | 
           | History here https://en.wikipedia.org/wiki/.NET
           | 
           | .NET Core 1.0 (2016) was the first cross platform prototype.
           | It got good in a release in 2018 or 2019, I even forgot which
           | now. And took over steadily after that.
           | 
           | We don't even think about it any more. "which OS is the prod
           | env on" isn't a factor that causes any support worries at
           | all.
           | 
           | Getting set up would start at https://dot.net/
           | 
           | And the download page, which should show you content for your
           | current OS https://dotnet.microsoft.com/en-us/download
           | 
           | But also other targets are here
           | https://dotnet.microsoft.com/en-us/download/dotnet/8.0
           | 
           | You'll want the latest SDK 8.0.x
        
           | hsbauauvhabzb wrote:
           | You're not alone.
           | 
           | I would say I'm not 'new' and even developed .net 4.5 for a
           | number of years. I'm just as stumped by the naming mess that
           | Microsoft made across the board in that space.
           | 
           | Edit: I say 4.5 because I mean the original thick .net which
           | is not dotnet core, which I think is the way to differentiate
           | between versions, but also all the sub libraries like the orm
           | were iirc named the same but did different things.
           | 
           | They should have rebadged everything with a new name that
           | didn't involve a word that is fairly painful to google
           | ('core') can be used in development as well as the name of a
           | framework.
        
           | 3np wrote:
           | As the OP notes, MS use their own fork of Mono for the .NET
           | Core runtime these days. So you're not wrong but they are
           | different codebases these days.
        
         | neonsunset wrote:
         | In many ways, .NET today finally fulfills the original Mono
         | goals, and does so in a very performant manner.
        
         | kragen wrote:
         | i want to love dotnet-core, especially since godot switched
         | from mono in godot 3 to dotnet-core in godot 4, but so far i
         | haven't been able to
         | 
         | currently debian has a mono package but no dotnet-core package.
         | i'm not sure why this is; usually when debian lacks a popular
         | nominally open-source package like this, it's either because it
         | fails to build from source, or because it has some kind of
         | tricky licensing pitfall that most people haven't noticed, but
         | diligent debian developers have
         | 
         | does anyone know why this problem exists for dotnet-core?
         | 
         | also, does dotnet-core have a reasonable aot story for things
         | like esp32 and ch32v003?
        
           | Goz3rr wrote:
           | Even with AOT compilation, as someone who loves C# and also
           | does embedded development in C I would personally say a
           | garbage collected language like C# has no place there.
        
             | kragen wrote:
             | not _everything_ running on a 20-mips 32-bit
             | microcontroller with 2 kibibytes of sram needs to be hard
             | real time and failure-free, and of course the esp32 has
             | _hundreds_ of kibibytes
             | 
             | and, correct me if i'm wrong here, but doesn't c# allow you
             | to statically allocate structs just as much as c does? i'd
             | think you'd be able to avoid garbage collection about as
             | much as you want, but i've never written much beyond
             | 'hello, world' in c#
        
               | runevault wrote:
               | c# has the concept of value types (which structs are),
               | which are stack allocated. Generics have seen more and
               | more instance of getting a Value type like Value Task for
               | stack allocated async objects. But if you add a class as
               | a member of the struct that is going straight to the heap
               | with all the GC stuff that entails
        
               | kragen wrote:
               | what about global or static variables of value types? i
               | mean in theory you could stack-allocate whatever you want
               | in your main() method and pass pointers to everything,
               | but that sounds unusably clumsy. but with global
               | variables and/or class variables there would be no
               | problem except for things that inherently require heap
               | allocation by the nature of the problem
        
           | mdasen wrote:
           | You can add add Microsoft's repo to install it on Debian:
           | https://learn.microsoft.com/en-
           | us/dotnet/core/install/linux-....
           | 
           | Does Debian require packages to work on all of its
           | architectures? If so, that could be the issue. .NET Core only
           | supports x86, x64, and Arm64 (I think Arm32 has been
           | discontinued and RISC-V is experimental at this point).
           | 
           | It's possible that they object to .NET Core having certain
           | license restrictions on the Windows port
           | (https://github.com/dotnet/core/blob/main/license-
           | information...). .NET Core is mostly MIT or Apache licensed,
           | but the Windows SDK has some additional terms. Skimming the
           | third party licenses, that doesn't seem like an issue (mostly
           | MIT/BSD/Apache or similar).
           | 
           | I think the licensing situation is an interesting question:
           | if you have software that's 100% open source when compiled
           | for your OS, but requires non-free stuff to run on Windows,
           | is it ok to include in Debian? It looks like none of the non-
           | free stuff (like WPF) gets distributed with the non-Windows
           | SDK builds. Binaries created from your code only depend on
           | MIT-licensed stuff on macOS and Linux, but might depend on
           | something closed-source when targeting Windows - though it
           | looks like almost all of that stuff is either WPF (so you
           | wouldn't be able to develop on Linux/Mac anyway since those
           | libraries wouldn't be in the SDK on those platforms) or were
           | removed as a runtime dependency in .NET 7. It looks like
           | `Microsoft.DiaSymReader.Native` might be the only thing left.
           | Maybe that's what is holding it back?
           | 
           | > also, does dotnet-core have a reasonable aot story for
           | things like esp32 and ch32v003?
           | 
           | "Reasonable" can be a lot of things to a lot of different
           | people. People have been working on RISC-V support. Samsung
           | seems interested in it. But I probably wouldn't recommend it
           | at the moment - and Mono doesn't really have RISC-V support
           | either.
        
             | ozim wrote:
             | I would say it is .Net Foundation job to prepare and submit
             | the package not Debian maintainers.
        
               | kragen wrote:
               | if you want your package to be in debian, you are going
               | to have to find a debian developer who is willing to take
               | responsibility for maintaining it. microsoft is already
               | providing .deb packages on their website, at least
               | binaries
        
             | kragen wrote:
             | to be clear, my question about debian is not about whether
             | i can install dotnet-core in debian; it's about why it
             | isn't in _debian 's_ repositories rather than microsoft's.
             | microsoft, to understate the case somewhat, doesn't provide
             | the stringent protections for users that debian does
             | 
             | debian doesn't require packages to work on all of its
             | architectures. luajit, for example, has not been ported to
             | riscv64, mips64el, or ppc64el
             | https://packages.debian.org/sid/luajit, though lua5.1 is
             | https://packages.debian.org/sid/lua5.1. what the debian
             | policy manual says about architecture-specific packages
             | seems to be https://www.debian.org/doc/debian-policy/ch-
             | controlfields.ht...:
             | 
             | > _Specifying a specific list of architectures indicates
             | that the source will build an architecture-dependent
             | package only on architectures included in the list.
             | Specifying a list of architecture wildcards indicates that
             | the source will build an architecture-dependent package on
             | only those architectures that match any of the specified
             | architecture wildcards. Specifying a list of architectures
             | or architecture wildcards other than_ any _is for the
             | minority of cases where a program is not portable or is not
             | useful on some architectures. Where possible, the program
             | should be made portable instead._
             | 
             | i don't think the license you link to would be a problem in
             | itself, because it only applies to certain files which are
             | not useful for running dotnet-core on debian anyway. debian
             | has lots of packages from which non-free-software files
             | have been removed. i don't know anything about
             | diasymreader?
             | 
             | with respect to esp32 and ch32v003, what i meant to point
             | to was not the risc-v architecture (some esp32s are
             | tensilica!) but the limited memory space; jit compilation
             | is not a good fit for 2 kibibytes of ram or even 520
             | kilobytes of ram
        
           | davidhyde wrote:
           | I believe that you would use dotnet nano for something like
           | that. I used it (or some previous version of it) once many
           | years ago and was very impressed with the productivity and
           | ease of use it offered. Ultimately the lack of community
           | surrounding it drove me to other technologies. Might have
           | changed since then though, who knows!
           | 
           | https://www.nanoframework.net/
        
           | MarkSweep wrote:
           | .NET Core is available for Debian, you just have to add
           | Microsoft's APT source [1].
           | 
           | Fedora [2], Ubuntu [3], and FreeBSD [4] build .NET from
           | source themselves. A lot of work has been done to make it
           | possible to build .NET from source [5] without closed source
           | components, so it might just be a matter of someone being
           | motivated to create the package for Debian.
           | 
           | [1]: https://learn.microsoft.com/en-
           | us/dotnet/core/install/linux-...
           | 
           | [2]: https://src.fedoraproject.org/rpms/dotnet8.0
           | 
           | [3]: https://launchpad.net/ubuntu/+source/dotnet8
           | 
           | [4]: https://github.com/freebsd/freebsd-
           | ports/tree/main/lang/dotn...
           | 
           | [5]: https://github.com/dotnet/source-build
        
             | kragen wrote:
             | yes, i know about the microsoft apt source
             | 
             | as for building from source, i see, thanks! or maybe it's
             | unresolved legal concerns? nobody so far in this thread has
             | known of any, though
        
         | johnwheeler wrote:
         | Trip down memory lane touching several points in my career. Rip
         | /.
        
       | munchler wrote:
       | .NET now runs on Linux and other platforms, so what is the
       | purpose of maintaining Mono separately at this point?
        
         | kcb wrote:
         | Mono can run old .NET framework applications directly.
        
           | munchler wrote:
           | OK, but that doesn't require any further changes to Mono. It
           | should essentially be a read-only project going forward.
        
             | randomdata wrote:
             | Is there anything to suggest that there will be further
             | changes? I mean, other than bug fixes.
        
               | munchler wrote:
               | I'm surprised that such an old product would even get bug
               | fixes. It's not like Microsoft is fixing bugs in .NET
               | Framework anymore.
        
               | kcb wrote:
               | .NET Framework isn't EOL and is probably going to be
               | supported forever pretty much. There are still regular
               | updates to .NET Framework distributed through Windows
               | Update.
        
               | stackskipton wrote:
               | "Supported"... Kind of. Showstopper stuff is fixed. Other
               | stuff is not. My last company had two open bugs with .Net
               | Framework on more recent versions of Windows Server that
               | were year and half old.
               | 
               | .Net Framework will be supported as long as Windows
               | Servers OSes it runs on support it. If Windows Server
               | team ever casts it out, it will die.
        
             | wtetzner wrote:
             | It won't get new features, but will likely require
             | maintenance to keep it running as new versions of operating
             | systems are released.
        
               | mdasen wrote:
               | This is the thing about software: even if you aren't
               | looking to improve it, the world around it will subtly
               | shift so it'll need to be updated or it'll stop working.
               | 
               | For example, Windows XP can't access the modern internet
               | because it doesn't support TLS 1.2 or 1.3 and most of the
               | web is now secure. The software still exists, but the
               | world around it has shifted so it doesn't really work. If
               | 95% of people end up owning electric cars, gas stations
               | are going to become scarce. Maybe there will be
               | workarounds, but the world will have shifted around the
               | product. Let's say that all gas pumps were changed to
               | wider-nozzle pumps. Sure, you could make an adapter, but
               | that's the point: changes in the world around you end up
               | necessitating changes, workarounds, etc.
               | 
               | It might be mostly read-only, but there's always little
               | possible things that come up requiring work to be done on
               | it.
        
       | masfuerte wrote:
       | > We want to recognize that the Mono Project was the first .NET
       | implementation on Android, iOS, Linux, and other operating
       | systems.
       | 
       | Is this true? The pre-releases and version 1 of .Net came with
       | the source for a reference implementation of the CLR that ran on
       | Linux or BSD. I can't remember what license it had and I thought
       | Mono was a separate project, but maybe Mono was based on it. Not
       | that it matters now.
        
         | tredre3 wrote:
         | .Net _Core_ 1.0 released in 2016 supports Linux yes.
         | 
         | Lagacy .Net never supported OSes other than Windows. Mono,
         | released in 2004, was the first attempt to bring it to other
         | OSes.
        
         | saurik wrote:
         | You are thinking of Rotor. FWIW, I also feel as if Portable.NET
         | --which was rebranded at some point to DotGNU when I think it
         | was even donated to the FSF--had predated Mono in functioning?
         | 
         | The Mono website has an archive of an old mailing list post
         | which at the time talks about even-older origin of the project.
         | It is (of course) heavily biased for Mono, and hilariously
         | gives me an awkward shout out ;P.
         | 
         | https://www.mono-project.com/archived/mailpostearlystory/
        
           | masfuerte wrote:
           | Thank you!
           | 
           | So it ran on Windows, FreeBSD and Mac OS X making it the
           | first non-Windows implementation of .Net, but it didn't run
           | on Linux. It also had a fairly useless licence, so Mono was
           | separate.
           | 
           | https://en.wikipedia.org/wiki/Shared_Source_Common_Language_.
           | ..
           | 
           | Edited to add: and thanks for the link. Only three developers
           | and there's already drama! :-)
        
       | peppertree wrote:
       | Never miss a good tax write-off.
        
         | bawolff wrote:
         | I dont think this makes sense. What value would even be written
         | off here?
        
           | KeplerBoy wrote:
           | A value you come up with hoping the IRS will not one day
           | disagree.
        
             | bawolff wrote:
             | This gives me strong
             | https://youtu.be/aCP27_vquxQ?si=WztFEXETGLcsAT51 vibes.
             | 
             | I dont think this is how it works in the real world.
             | 
             | Even if it did, giving it away would be equally a write off
             | as just shutting it down.
        
               | tedunangst wrote:
               | I thought that would be a link to the Seinfeld episode.
               | https://www.youtube.com/watch?v=XEL65gywwHQ
        
       | cxr wrote:
       | I know it's a long-standing empirical truth that anyone involved
       | with Mono is required to prefer doing just about anything besides
       | thinking about or touching what's on the Mono project website,
       | but this announcement really deserves to be put on page unto
       | itself with a URL all its own, rather than shoehorned into an
       | anonymous div on the Mono landing page and at the top of /news.
       | 
       | See <https://simonwillison.net/2024/Jul/13/give-people-
       | something-...>.
        
         | romwell wrote:
         | It seems like the link we got (https://www.mono-project.com)
         | might be _the_ URL for the announcement - that 's to say, this
         | is the last update on that website, and will stay there
         | indefinitely.
        
       | repelsteeltje wrote:
       | I'm not a gamer so forgive me if I see connections that aren't
       | there. Does this in any way impact game emulation? Isn't wine
       | part of proton or stream attempts to run windows games on Linux?
       | I suppose .net and clr play some time in win32, how is that
       | usually emulated?
        
         | Y_Y wrote:
         | Wine Is Not an Emulator
         | 
         | but it is indeed the basis for Proton
        
         | tapoxi wrote:
         | Via wine-mono
         | 
         | Games themselves typically aren't .NET but ancillary
         | components, like launchers or map editors, are.
        
         | justsomehnguy wrote:
         | You are probably mix up .NET and C# somewhat.
        
       | troymc wrote:
       | Fun fact: Second Life, the virtual world, has an in-world
       | scripting language called LSL, and it gets compiled to bytecode
       | that gets run on a virtual machine. Initially, it got compiled to
       | bytecode that ran on an in-house virtual machine, but in 2008,
       | they switched over to compiling LSL to Mono bytecode to run on
       | the Mono virtual machine. I wonder if that's still how it works.
       | (I haven't been involved with SL for a long time.)
        
         | qingcharles wrote:
         | Thank you, that explains the Mono in SL.
        
       | neonsunset wrote:
       | For everyone who is confused by what is going on, here's the
       | explanation:
       | 
       | Today, there are 2.5 Mono's:
       | 
       | Mono that lives in https://github.com/mono/mono. This is the
       | original Mono codebase that was written back then and was the
       | .NET Framework for Linux, with corresponding compat. and such,
       | pioneered by Miguel De Icaza, who now seems to be happier in
       | Swift land. At the present day, it was receiving very little
       | maintenance and I don't believe was actively used. Please correct
       | me if I'm wrong.
       | 
       | Mono that lives in
       | https://github.com/dotnet/runtime/tree/main/src/mono. This is the
       | Mono that got merged into .NET, becoming the building block for
       | multiple components and one of the official runtime flavours. It
       | is actively maintained and is at relative feature parity with
       | CoreCLR, predominantly serving mobile targets (iOS, Android) and
       | WASM as well as exotic or legacy targets like ARMv6, LA64,
       | s390x(?), ppc64. It is also useful for initial stages of new
       | platform bring-up process. Note that you are not expected to use
       | it for targets that support CoreCLR due to a massive rift in
       | performance between the two. When you _are_ using it, you do so
       | as a part of standard .NET toolchain - it is picked automatically
       | for appropriate targets, or can be opted into with some
       | configuration.
       | 
       | Mono that lives in https://gitlab.winehq.org/wine-mono/mono which
       | is a Mono fork actively maintained by Wine for its own usage.
       | Going forward, any possible ambiguities regarding ownership and
       | stewardship are considered resolved and the ownership of
       | mono/mono and everything related to it is transferred to WineHQ.
       | 
       | Honorable mention also goes to private Mono fork used by Unity
       | which they are (painfully) trying to migrate from.
        
         | Rochus wrote:
         | > _due to a massive rift in performance between the two_
         | 
         | Not that massive; factor 1.8 as we found out recently.
        
       | __s wrote:
       | https://wiki.winehq.org/Mono#Microsoft_.NET for why Mono is
       | relevant to Wine
        
       | whalesalad wrote:
       | What is the mono logo? a gorilla with a hat? or a pile of poop?
       | serious question.
        
         | randomdata wrote:
         | A portrayal of someone's attempt at giving a "thumbs up" with a
         | broken thumb, obviously.
        
         | eddythompson80 wrote:
         | It's a Monkey's head. Mono is Monkey in Spanish. The original
         | author, Miguel de Icaza, is Mexican-American.
        
       | rgovostes wrote:
       | I always assumed Microsoft did not condone Wine or other re-
       | implementations of their APIs (like ReactOS), but that they were
       | protected by DMCA reverse engineering provisions and anyway too
       | insignificant to send the legal team after.
       | 
       | Wikipedia says,
       | 
       | > Until 2020, Microsoft had not made any public statements about
       | Wine. ... On 16 February 2005, Ivan Leo Puoti discovered that
       | Microsoft had started checking the Windows Registry for the Wine
       | configuration key and would block the Windows Update for any
       | component. As Puoti noted: "It's also the first time Microsoft
       | acknowledges the existence of Wine."
       | 
       | > In January 2020, Microsoft cited Wine as a positive consequence
       | of being able to reimplement APIs, in its amicus curiae brief for
       | _Google LLC v. Oracle America, Inc._
        
         | jimrandomh wrote:
         | If Windows Update replaced components of Wine, that would (a)
         | break people's Wine installs, and (b) give those users a way to
         | legally get Microsoft's versions of those components for use
         | outside of Windows.
        
           | rescbr wrote:
           | Microsoft's EULA would still apply to (b).
           | 
           | It's the exact same situation as downloading a Windows ISO
           | from Microsoft's website and running it with an activator.
        
         | kelnos wrote:
         | I think Microsoft has finally realized that its animus toward
         | projects like Wine and pre-acquisition Mono was ultimately
         | unproductive, and a net negative for Microsoft itself.
         | 
         | I still don't trust MS's motives in general, but I think they
         | at least recognize that Wine/Proton helps make the Win32 and
         | DirectX APIs a sort of de-facto cross-platform standard when it
         | comes to things like desktop gaming, and that this is a good
         | thing for them.
         | 
         | On the server side, MS knows that Linux is by far the most
         | popular server OS, and official support for running .NET
         | backend apps on Linux from MS themselves is a win for them as
         | well.
        
           | kragen wrote:
           | anthropomorphizing complex social institutions such as
           | corporations is ultimately unproductive and a net negative
           | for clear thinking
        
           | bonesss wrote:
           | I think it's just such a clear business-razor because of the
           | cloud: can I take my app and spin up a bajillion cheapo
           | servers with no licensing costs using that stack?
           | 
           | If the answer for .Net was 'no' then there are meaningful
           | domains where people would just jump ship in a second.
           | Research, academia, teaching, and certain government areas
           | pop to mind. Keeping Linux support, because of that server
           | dominance, is a core concern for them.
        
             | kej wrote:
             | Presumably being able to make money spinning up cheapo
             | servers, via Azure, just reinforces that decision.
        
           | deelowe wrote:
           | Microsoft as a company is extremely myopic. Budgets are
           | scrutinized down to the penny every few months at very senior
           | levels. This drives a culture of immediacy. Wine was a threat
           | until Microsoft realized everyone in tech had moved to
           | service based business models (aka "cloud"). Only afterwards,
           | did they "realize" Linux as a threat to their long term
           | viability no longer mattered.
        
           | shopvaccer wrote:
           | >that Wine/Proton helps make the Win32 and DirectX APIs a
           | sort of de-facto cross-platform standard when it comes to
           | things like desktop gaming, and that this is a good thing for
           | them.
           | 
           | I'm not sure if it benefits microsoft in the long term,
           | because the "backwards compatibility" features of Wine need
           | to be implemented in Windows already as a part of the system.
           | So in the long run wine/proton/mono will implement windows
           | features on linux in an optional/replaceable/modular way in
           | user-space while keeping backwards compatibility for older
           | windows software, while windows is forced to implement (and
           | distribute these features) with their OS and has to sacrifice
           | backwards compatibility if they want to simply their OS.
           | 
           | I would say that the adoption of wine/proton helps the linux
           | ecosystem a lot more because there wasn't a standard
           | executable format for linux beforehand (static? tarball of
           | program and dynamic libraries? .deb file? AppImage? Flatpak?
           | Higher-level language like java?). How do you reliably link
           | to libraries like mesa or even glibc? Now there is a
           | solution: just distribute a windows program and test it to
           | confirm it works in wine/proton. Perhaps it is better for
           | DirectX adoption, but it seems like Vulkan/OpenGL/WebGPU are
           | still superior in terms of cross-compatibility, regardless if
           | you use wine or not.
        
             | nine_k wrote:
             | Windows NT (2000, XP, etc) used to include an emulator
             | allowing to run DOS apps and win16 apps. I don't see why
             | running older / obsoleted win32 APIs through an emulation
             | layer won't be a good approach. Maybe even by adopting and
             | running Wine.
        
           | mark336 wrote:
           | If MS was smart, they would try to get the devs working on
           | Xbox projects to use their coding platforms for other type of
           | development.
        
         | qingcharles wrote:
         | Microsoft in 2024 feels like a different beast. All the MS devs
         | I know seem fully on board with totally cross-platform support.
         | Half of them are coding on MacBooks and I would hazard a guess
         | that a good proportion of .NET web sites being built are being
         | deployed onto Linux boxen.
        
           | sublimefire wrote:
           | Few work on Macbooks, it is more about using WSL on the dev
           | machines or even using DevBox instances.
        
           | gnu8 wrote:
           | I imagine very few of the MS devs are using BeOS.
        
           | stackskipton wrote:
           | .Net SRE here, all our .Net REST APIs are deployed on
           | Kubernetes. Devs are still mostly on Windows because Visual
           | Studio.
           | 
           | I've worked with Azure team, all greenfield they do for Azure
           | goes on Linux as well. Windows Server is pretty much dead to
           | Microsoft though it will be continue to be supported and
           | released because $$$.
        
         | alerighi wrote:
         | I mean, if wine is a problem they did basically the same thing
         | with the WSL, especially version 1 (version 2 is just a VM, but
         | the concept of running unmodified Linux binaries on Windows
         | like they are native application is the same).
         | 
         | I think that they don't care about going against the open
         | soruce community, given that Microsoft uses a lot of open
         | source software in their products (also, probably violates the
         | terms of the GPL license of such software).
        
       | pentagrama wrote:
       | A bit off-topic, but this makes me wonder about the relationship
       | between Microsoft and Wine. Do they consider it a threat? An
       | ally? Both?
       | 
       | This is my first time seeing Microsoft acknowledge Wine's
       | existence, and in this case, it was at least in a friendly
       | manner? Or could there be bad faith behind this 'donation'?
        
         | kelnos wrote:
         | Another poster quoted Wikipedia somewhere here; MS implicitly
         | acknowledged Wine's existence back in 2005 when they added a
         | check for some of Wine's registry keys which would disable
         | Windows Update if it found them. And in 2020 MS filed an Amicus
         | brief in that Google/Oracle lawsuit in support of free re-
         | implementations of APIs, citing Wine as a positive example.
         | 
         | While I am still wary of Microsoft after their previous anti-
         | competitive behaviors, I think they've taken a more pragmatic
         | view of late, and realize that projects like Wine are actually
         | good for their platform as a whole. I expect if Wine/Proton did
         | not exist, we'd see more (for example) Windows-only games
         | ported to macOS or Linux. With Wine/Proton, those ports are
         | mostly not necessary, and Microsoft gets to say that
         | Win32/DirectX is something of a cross-platform gaming
         | "standard".
        
         | datavirtue wrote:
         | What could WINE possibly do to them? Rob them of all kinds of
         | enterprise and cloud business? WINE is a single LED on a
         | nuclear powerplant control panel.
        
         | justsomehnguy wrote:
         | The best Wine _environment_ is still a Windows install. You
         | need a lot of things to do to run some of the mill Win32 app,
         | so Wine is not a direct threat for MS in any foreseeable
         | future.
        
       | voytec wrote:
       | Is this a "dropped on community" project like Borg/Kubernetes
       | fiasco with most PRs ending up in the following, and just corpo-
       | sponsored changes and patches getting through?
       | 
       | > The Kubernetes project currently lacks enough active
       | contributors to adequately respond to all issues.
        
       | Lockal wrote:
       | Yes, some things never change:
       | 
       | https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguis...
        
       | DrNosferatu wrote:
       | They could also donate comparability with modern MsOffice.
        
       | philip1209 wrote:
       | Can anybody speak to the accounting implications of "donating"
       | software to a foundation/501(c)3? Can there be any kind of tax
       | write-off? (It looks like this might already have been owned by a
       | foundation, but I'm still generally curious)
        
         | IshKebab wrote:
         | At best you would be limited to the value lost which is
         | essentially zero, so no.
        
       | nedt wrote:
       | Mono was very useful in university. Must have been 2005 when I
       | got asked if I wanted to use Java or C# for the programming
       | course. Being bored with Java I picked C#. We were a very small
       | group of two students.
       | 
       | But as I just had a Powerbook I used Mono to run it on OS X. At
       | the end of the course someone from Microsoft came to the
       | university to answer any of our question about upcoming features
       | in .NET and C#. And as we were a small group I set directly in
       | front of him with the shiny apple point at him.
       | 
       | Very interesting language at that time. .NET not so much. Also
       | still remember that we were tasked to implement 3 sort algorithms
       | of our choice. One of mine was bogosort and with Mono on PPC it
       | could sort up to 7 elements, before becoming really slow.
        
       | Havoc wrote:
       | How is .Net/Mono connected to Wine?
       | 
       | Or is this more of a steward role rather than technical
       | connection
        
       | pjmlp wrote:
       | Yet another piece of Xamarin/Mono that falls down.
       | 
       | No wonder Miguel de Icaza is now focused on Swift, Godot and
       | Apple's ecosystem, all the promises done at Xamarin acquisition
       | time are gone now.
       | 
       | Mono Develop killed, after being renamed into VS4Mac, gone
       | through a rewrite, only to be killed shortly after the rewrite
       | reached 1.0.
       | 
       | Xamarin.Forms rewriten into MAUI, with incompatible APIs.
       | 
       | MSIL Linker had a better chance as a critical piece of Blazor
       | WebAssembly and Native AOT.
       | 
       | The whole dotnet reload drama.
       | 
       | Now Mono donation, and then .NET team is surprised .NET uptake on
       | UNIX shops isn't as they expect.
       | 
       | In alternative universe when the Xamarin acquisition didn't
       | happen, where would we be now?
        
         | aspeckt112 wrote:
         | Based on how Xamarin performed prior to the MS acquisition, I'd
         | guess dead.
         | 
         | The license cost was high, and the MS acquisition came right
         | around the time React Native and Flutter started to enter v1. I
         | think they'd of been blown out of the water pretty quickly. At
         | least Microsoft allowed Xamarin to get into enterprise .NET
         | shops pretty quickly. There's a lot of B2B form based apps
         | written in Xamarin. I worked on a pretty big one that made (and
         | continues to make) a lot of money.
         | 
         | I've long assumed the point of the acquisition was because
         | Xamarin did basically all the hard work of allowing .NET to be
         | cross platform.
        
           | pjmlp wrote:
           | Ever heard of Rotor?
           | 
           | https://www.codeguru.com/dotnet/net-nuts-bolts-the-joy-of-
           | ro...
           | 
           | Or DotGNU?
           | 
           | https://www.gnu.org/software/dotgnu/
           | 
           | What happened to Xamarin looks like Microsoft took whatever
           | IP was relevant, and left everything else go, which this
           | decision is a confirmation thereof.
           | 
           | It is kind of interesting to see Miguel's feedback, now that
           | he his allowed to talk about how things went down.
        
             | aspeckt112 wrote:
             | I'm a big fan of Miguel's work. His comments have been
             | pretty interesting. You also don't have to read between the
             | lines much to know how he feels about what's happened to
             | his tech.
             | 
             | I assume he's got fuck you money now though. I'm very
             | excited to see what he does with Swift and Godot, Swift is
             | a great language for gamedev.
        
       | pdmccormick wrote:
       | I'm genuinely curious, for someone who develops web application
       | backends and larger distributed systems & infrastructure,
       | predominantly using Go and Python, exclusively targeting Linux,
       | is there anything in the .NET ecosystem that anyone would
       | recommend I take a look at? Many thanks.
        
         | BeetleB wrote:
         | You may want to look at F#. Because it's .NET you have a large
         | list of libraries you can use
        
         | dmw_ng wrote:
         | Modern .net on Linux is lovely, you can initialize a project,
         | pull in the S3 client and write a 1-3 line C# program that AOT
         | compiles to a single binary with none of the perf issues or GIL
         | hand-wringing that plagues life in Python.
         | 
         | Given modern Python means type annotations everywhere, the
         | convenience edge between it and modern C# (which dispenses with
         | much of the javaesque boilerplate) is surprisingly thin, and
         | the capabilities of the .net runtime far superior in many ways,
         | making it quite an appealing alternative especially for perf
         | sensitive stuff.
        
           | dwoldrich wrote:
           | Do your civic duty and disable telemetry everywhere you go.
           | :)
           | 
           | export DOTNET_CLI_TELEMETRY_OPTOUT=1
        
         | starik36 wrote:
         | .NET Core is my favorite way to quickly implement an app to run
         | on a Raspberry Pi. Just basically copy & paste into a folder,
         | chmod the executable and off you go.
         | 
         | I have a number of these devices running in the house doing
         | various things.
        
       ___________________________________________________________________
       (page generated 2024-08-27 23:00 UTC)