back to article Attention Microsoft-oriented Linux devs: .NET 6 is on Ubuntu 22.04

Ubuntu and Microsoft have brought .NET 6 to the Ubuntu repositories, meaning that you can install it without adding any extra sources to the OS. The announcement means that Ubuntu 22.04 is catching up with the Red Hat Linux family. As per Microsoft's online docs, you could already do this on Fedora 36 as well as the more …

  1. Anonymous Coward
    Anonymous Coward

    Nice one Cyril

    We've also asked Microsoft if they have any additional information or details, and will update when they respond.

    Will BoJo still be in No 10 when this arrives?

    I have to wonder what the real end game for MS is with this move.

    Is there some huge pent up demand for .NET these days let alone on platforms other than Windows?

    Asking for a MS admin friend.

    1. bazza Silver badge

      Re: Nice one Cyril

      Over the past few years, I've seen several projects pick up C# on Linux, the people doing so previously being the sort who'd normally have reached for Java. I've not heard that they've reverted to Java for future work.

      I've never done anything in Java, but I've used C# a fair bit and there's quite a lot to like about it and the ecosystem that surrounds it. It's pretty straightforward to be effective in C#, it's a very slick and easy development experience.

      Having a major software house on-board helps a lot I think. There is a big difference between Microsoft and Oracle these days, MS seems all cuddly and friendly, open and supportive, whereas there are people running scared from using anything with Oracle's EULA attached (even if heavily diluted by years of OSS licenses, etc).

      The end game is that Microsoft supply cloud services (Azure), they make good money out of that already, and strong support for .NET across all OSes that people want to run is going to make it easier for developers to justify using Azure, enhancing MS's profits.

      Being effective in the cross-platform application areana (there's MAUI, that seems to be coming along nicely) is a bonus, encouraging app developers to use MS tools and dev services, and oh-by-the-way it's oh-so-easy then to use Azure as a back end host too.

      On the quiet MS is conducting a successful pivot from being a straight up OS and Office provider, to one where Cloud (of some sort) is a big component of the business. When you consider the totality of their offering, it's really amounting to something pretty huge; the de-facto Office suite, a still very prevelent Desktop OS presence, a useful foothold in applications on iOS and Android (Outlook, the mobile Office apps, even One Drive), a good Cloud offering, plus the tooling by which all of this and more can be created and bound together regardless of the OS people want to run; for those wanting to get jobs done, and those wanting to make money by creating applications and systems that let other people get jobs done, or even just games (mobile, desktop), it's a pretty thorough and effective mixture, and they're still adding bits in (like MAUI). Even Active Directory (now available from Azuer as well as on-prem) is a really big asset for identity management.

      Having .NET on Linux is just one part of that.

      So, Is There Demand?

      So, is there some huge pent up demand for .NET on platforms other than Windows? The objectively answerable part of the question is easy - yes, there is demand now, there has been for some time, and so far as I know that demand is growing. The harder part - is it a huge demand - well, that's forecasting.

      I don't really see any of the other major software houses having anything like as big or far-reaching effort to cover all development types on all platforms with such a strong emphasis on making it all work together, from desktop / mobile all the way through to Cloud, whilst also being as cross-platform as possible. They've not finished, but the more they do finish it, the more developers (and thence users) will find themselves installing .NET on their boxes and running something originally compiled on a completely different platform.

      This is, I think, the dream that the original Sun Java engineers had, though they were decades too early and got swamped by the utterly unimaginative Orcale. Java never really made it in all arenas, and these days is restricted almost entirely to just server applications. Microsoft do seem to have a vision to do this, are big enough to make it happen, and are now experienced enough in all domains to get it right.

      The only thing they don't have - a mobile OS - seems not to be so important anymore, as mobile phones themselves are becoming very commodity (and therefore low margin) things. It's the services that matter, make it easy to build those and point them at Azure and collect revenue that way. Let someone else do all the legwork in making a mobile OS and mobile device.

      Google and Apple might be tempted to use their control of Android and iOS to make MS's life hard, but both Google and Apple are already under investigation for anti-trust issues in the USA and Microsoft can afford a lot of lawyers to help make those investigations sting. I can't see Google or Apple being able to wreck MS's strategy without closing their ecosystems whilst also avoiding the wrath of the US government.

      1. Doctor Syntax Silver badge

        Re: Nice one Cyril

        "MS seems all cuddly and friendly, open and supportive"

        What big teeth you have, Grandma.

        1. MyffyW Silver badge

          Re: Nice one Cyril

          When MS starts wearing my grandmas clothes, I'll be worried. Not least because she's been dead since 2003.

          (No analogies should be drawn with the moribund state of MS :-)

          1. Def Silver badge
            Coat

            Re: Nice one Cyril

            When MS starts wearing my grandmas clothes, I'll be worried. Not least because she's been dead since 2003.

            So... it's not like she's using them then.

    2. abstract

      Re: Nice one Cyril

      Maybe the cloud trend pushes Microsoft to extend the reach of its solutions...

    3. Mostly Irrelevant

      Re: Nice one Cyril

      I'm using .NET 6 in Linux containers at work all the time. It's convenient because the containers can be very small and there is no worry about OS licensing. For development you can build on Windows, Linux or Mac so it's super convenient.

      For developing web applications .NET is really first class and it performs well on production. Front-end is all JS, not using Blazor.

  2. bazza Silver badge

    MAUI?

    Although the article says that this is for server applications only (WinForms and WPF haven't made it over to Linux), I am intrigued by MAUI (see here. That Microsoft webpage suggests that MAUI on Linux is "Supported by the community", though I've not yet dug deep enough to determine how extensive that support is.

    I've played with MAUI a bit on Windows - it's WPF-like, updated for the modern world of touch / swipe and mobile. Data binding is supported. MAUI looks like work in progress, but none the less one can do a desktop or mobile app in it, and MS support that on literally everything but Linux and Tizen.

    It's just possible that MAUI will mature into something genuinely multiplatform, which really would be quite something. Certainly, this appears to be the focus of MS's cross-platform GUI efforts, so I don't think we're going to see WPF on Linux anytime soon.

    That could be intersting, to say the least. A properly sorted, strongly supported, modern, functioning GUI framework that allows genuine source code re-use across platforms, and possibly also binary re-use and also provides an acceptably easy-on-the-eye result could challenge some established norms. Why have a Web App, if you can just as easily have an all-platforms native app? Ok, so it's not as simple as that, but it's just possible that the "all-platforms" property of a web-app goes away. Given how awful Web Apps can generally be in terms of runtime overhead, clunkiness, inability to interact with other local stuff, etc, there may be some areas where MAUI is a better candidate technology.

    1. Liam Proven (Written by Reg staff) Silver badge

      Re: MAUI?

      [Author here]

      In my investigation for this piece, I discovered that there are _lots_ of ways to write GUI apps on .NET for Linux, such as programming directly to Gtk, or to Qt, or QML.Net. And on .NET for any supported platform, such as Uno, MAUI, Avalonia,

      But the core point I wanted to address was that the original proposition of .NET was that it was Microsoft's version of the JVM. The Java world offers several ways to write a GUI that will run on any machine: JavaFX, Swing, Eclipse, AWT, JWT, etc. It depends whether you want you app to try to look like a native app on the end users' OS, or do you want a rich "native Java" GUI that doesn't pretend to be a Windows or Mac or Linux GUI but works the same on everything.

      https://stackoverflow.com/questions/7358775/java-gui-frameworks-what-to-choose-swing-swt-awt-swingx-jgoodies-javafx

      .NET does not offer that as standard. There's a choice of Windows UI frameworks that only work on Windows, and there are Linux ones that won't work on Windows at all, and there are cross-platform ones that aren't part of the core framework and may work on anything but will require you to add extra dependencies.

      I thought this was an important and relevant point to make, since at least to me, it's not clear from the vendors' blurbs.

      The promise of .NET was that it would replace MS' own frameworks (mainly the MFC) with a cross-platform version.

      MS has been trying hard to push .NET. It was originally a requirement of the Windows Store. All those "Modern" apps that would run on a Windows tablet *had* to be in "managed code" which means that they had to be .NET apps.

      The original theory was that .NET on Linux and .NET on Mac and so on would let those rich graphical apps run on those other OSes too. MS was afraid it would be broken up into separate apps and OS divisions, and it wanted dev tools that could target all of them.

      But it hasn't happened. The quiet part is that you only get basic text-mode stuff this way.

      If you want to have a cross-platform graphical app you can do it, but you'll have to write it from scratch to be cross-platform. The GUI frameworks that .NET comes with in the box are Windows-only.

      1. bazza Silver badge

        Re: MAUI?

        Completely agree, and indeed a fair point to make.

        MAUI is so not in .NET yet that you have to download a preview version of Visual Studio to use it - or at least that was the case a few weeks back. But I think that it's existence and on-going development is a suggestion that MS are fairly serious about having another go at it.

        Time will tell. If they do pull it off, it could be an interesting result. It could also be half-formed, too incomplete to actually be of use for cross platform. It's not that long ago that the thought of MS officially supporting .NET on anything other than Windows would have been unthinkable, and here we are finding it to be lodged on the core repos for several major Linux distros. So, who knows.

        Is it Too Little, Too Late?

        In the sense of, is the time of managed code (Java, .NET, etc) beginning to come to an end?

        What's quite surprising about Rust is the sheer diversity of stuff that people are doing with it, everything from whole OSes to Web services, etc. Can it be a universal language? Far too early to tell of course. The memory safety aspects of Rust are a big chunk of what Java and .NET were all about originally.

        Again, time will tell. Rust I think could surprise us all, as it's been surprising us all the way through. Mozilla create a new programming language? Nah. Mozilla comes up with a pretty unique take on a language - memory safety but no run time garbage collector? No way. People create whole OSes using it? Most unlikely. Linus Torvalds doesn't dismiss it out of hand, for Linux source code? No chance. Major OS houses like MS and Google publicly say they're looking at it too? Pah.

        I'd not bet against it in the long run.

        Of course, it's a totally different kettle of fish. Rust isn't intended to be the universal cross platform language, and .NET / Java aren't intended for operating systems. It is interesting that some of the things people are using Rust for are the kind of things people would also use Java / .NET for. I'd not bet against it in the long run, but history tells us that there's many things that can crop up in computing to ruin a promising trajectory in a language.

        BTW, thanks for writing articles!

  3. Eric Kimminau TREG

    Id like to see some mention of the security vulnerabilities in that pig.

    https://github.com/dotnet/dotnet-docker/issues/2473

    https://www.cvedetails.com/vulnerability-list/vendor_id-26/product_id-80849/version_id-684354/Microsoft-.net-6.0.0.html

    Debian tracker for .Net vulnerabilities: https://snyk.io/test/docker/microsoft%2Fdotnet%3Acore

    RedHat .Net 6 issues: https://access.redhat.com/documentation/en-us/net/6.0/html/release_notes_for_.net_6.0_rpm_packages/known-issues_release-notes-for-dotnet-rpms

    Chapter 7. Known issues .NET 6.0 | Red Hat Customer PortalAccess Red Hat’s knowledge, guidance, and support through your subscription.access.redhat.com

    https://access.redhat.com/documentation/en-us/net/6.0/html-single/release_notes_for_.net_6.0_rpm_packages/index

    Release Notes for .NET 6.0 RPM packages .NET 6.0 | Red Hat Customer PortalThe Release Notes for .NET 6.0 RPM packages provide high-level coverage of the features and functionality that comprise the .NET 6.0 platform and document known problems in this release.access.redhat.com

    1. Anonymous Coward
      Anonymous Coward

      Summarising that is easy: it's made by Microsoft.

  4. Blackjack Silver badge

    https://www.theregister.com/2022/08/17/darktortilla_crypter_malware_secureworks/

    Yet another reason to think about moving to Debian, unless that also has .Net support.

  5. Gene Cash Silver badge

    .Net vs Mono?

    So what's the difference between .Net on Linux and Mono? (since I'm not a Windows guy)

    Also, isn't the Unity Linux engine (like what KSP uses) based on Mono?

    1. Def Silver badge

      Re: .Net vs Mono?

      Mono was an open source implementation of the old .Net framework. It was slow and low on features, but mostly worked. Unity have been stuck using their own fork of Mono for years, but they're slowly upgrading it with a view to possibly ditching it in the future now .Net Core is cross platform anyway. (If they haven't already done so - I stopped using Unity many years ago.)

      Microsoft have "owned" Mono since 2016.

      1. Liam Proven (Written by Reg staff) Silver badge

        Re: .Net vs Mono?

        What he said.

        Mono is still around but it looks like almost nobody is doing significant work any more. It seems moribund.

        Shame in a way but TBH it wasn't terribly popular even at its peak. When Ubuntu included some apps implemented with Mono tools, there was an outcry.

  6. abstract

    less headaches with Flutter

    Does an application developed with .net for Linux works out of the box on any Linux machine or does it require additional installs on the target machine?

    1. Liam Proven (Written by Reg staff) Silver badge

      Re: less headaches with Flutter

      [Author here]

      Any .NET app needs the .NET Common Language Runtime installed to work.

      My apologies if I did not make that clear. This code has run on Linux for many years now. What is new here is that it's in the Ubuntu standard repository, so you can install it without adding any additional external software sources.

      There _are_ ways to bypass this and generate bare-metal code, but it's an *extraordinary* amount of work:

      https://medium.com/@MStrehovsky/building-a-self-contained-game-in-c-under-8-kilobytes-74c3cf60ea04

      1. abstract

        Re: less headaches with Flutter

        Thanks!

        It is probably a step in the right direction but my remark was also questioning the strategy when there are other cross platform solutions that adopted a different approach: GO, Flutter (for those I tried).

        There is indeed an option (your link makes use of it): self-contained applications. Doesn't seem to be that herculean :

        https://docs.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained

        "Publishing your app as self-contained produces a platform-specific executable. The output publishing folder contains all components of the app, including the .NET libraries and target runtime. The app is isolated from other .NET apps and doesn't use a locally installed shared runtime. The user of your app isn't required to download and install .NET."

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like