Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Microsoft Open Source Programming

Mono 4 Released, First Version To Adopt Microsoft Code 223

jones_supa writes: Version 4.0.0 of Mono, the FOSS implementation of the .NET Framework, has been released. This is the first release of Mono that replaces various components of Mono with code that was released by Microsoft under the MIT license. Microsoft itself is working towards .NET Core: a redistributable and re-imagined version of .NET, which has two code drops: CoreFX and CoreCLR. Mono at this point continues to provide an API that tracks the .NET desktop/server version. This means that most of the Mono code that has been integrated from Microsoft comes from the ReferenceSource code drop. Mono's C# compiler now also defaults to C# 6.0.
This discussion has been archived. No new comments can be posted.

Mono 4 Released, First Version To Adopt Microsoft Code

Comments Filter:
  • Does Mono provide something unique to grant a look at it?

    • Re:Anything unique? (Score:4, Informative)

      by Anonymous Coward on Sunday April 05, 2015 @08:55AM (#49409217)

      It absolutely does. You can develop completely cross platform applications with 1 codebase using XWT. The single codebase creates projects for GTK, Cocoa(OSX) and WPF(Windows) that use the native controls for the corresponding platform.

      The fact that they are porting most of the libraries over to the first-party Microsoft versions means less bugs, and way more active maintenance. This is very good news for cross-platform developers!

      • There are other ways to develop cross platform code that don't require putting the loaded gun of Microsoft's dubious anti-litigation commitment to your head. .NET simply isn't so good that I'd put my fate in Redmond's hands.

      • Not unique at all. Java has had this ability for over a decade.

    • by Trepidity ( 597 )

      If you mean compared to the official C# release, for the moment it's still Windows-only, so Mono's main advantage is being a cross-platform C# compiler/runtime.

      • Only after I have pressed "Post" button, I hare realized that I probably given not enough context.

        "Anything unique to a Linux developer who looks for RAD on Linux"?

        From RAD for Linux, I'm aware only of the FreePascal-based Lazarus (Borland Delphi remake).

        Past attempts with the KDevelop (and QtCreator) were pretty abysmal: right after "apt-get install" and few clicks to throw together UI, they were failing simply to compile the "Hello World" msgbox application. (And wild goose chase to install what was

        • Re:Anything unique? (Score:4, Interesting)

          by kthreadd ( 1558445 ) on Sunday April 05, 2015 @09:42AM (#49409371)
          For RAD I've had some good experiences in the pas with RealBasic (renamed to Xojo some time ago). At the time the GNU/Linux support was quite ok but they haven't really kept up. 64 bit is still missing for example so running anything you build with it will require a couple of 32 bit system libraries to be installed.
          • Xojo

            Xubuntu 14.04 says that the installation would take 195MB of space. Bit heavy. Worst part: it is BASIC.

            On the positive side, Lazarus + FP SDK, requires almost 1GB of space on my Xubuntu.

            My ultimate goal is to be able to put together a quick UI, check in the source, and tell in few words to others who going to check it out how to compile it and get it running.

            All in all, Xojo gets on the short list of things to try.

            • by caseih ( 160668 )

              BASIC these days is little different from Pascal so I don't see why this is a downside. BASIC is every bit as modern as any other language and structurally equivalent to any modern static language. It's more verbose than C and similar languages, and maybe as verbose or slightly less verbose than Pascal is. Not sure about RealBASIC, but other BASIC dialects suffer from way too many things being a part of the language with custom syntax, rather than a callable function in the runtime. For example the Pset,

              • by ThePhilips ( 752041 ) on Sunday April 05, 2015 @11:57AM (#49410009) Homepage Journal

                BASIC is every bit as modern as any other language and structurally equivalent to any modern static language. It's more verbose than C and similar languages [...]

                Verbosity is the problem.

                If I were fine with the screens and screens of the boilerplate code, I would have simply used the Java.

                I don't understand why you couldn't get QtCreator working. Qt is easy to install and use on Ubuntu. And the Qt QUI designer is very easy to work with.

                As I heard it was a systemic problem back then: not all package dependencies were declared, meaning that after installation you have to also install bunch of other stuff to make it working. (Many years ago, first time I tried QtCreator, it actually refused to run, because some linked libraries were missing.)

                I'm not sure about now, but back then it wasn't even close to anything RAD. It was only a helper to create the GUI in a XML form, which was back then not even properly integrated with the rest: one had to write some code manually to actually tell Qt what resource corresponds to the window. And add resource manually to the resource file.

                I would say that Python + libglade + glade is also a pretty good combination. It's not quite the RAD experience you seem to want, but it is a fast and powerful way of developing GUI apps, thanks go a nice API and Python.

                Yes, it is not RAD. And for that I already use QT + C++, which provides very powerful, simple and no-fuss API to build GUIs dynamically (without external UI building tools like glade or Qt Designer).

                The problem is not me per se - I have no problems with most of the stuff. The problem are the other team-members who are not well versed as me in the scripting languages and building GUIs. On many past projects I have left behind lots of stuff which 95% of coworkers can't support or develop further. And I want to solve the problem by throwing in something that requires as least boilerplate as possible, stays as close to demos/examples as possible. I'm simply trying to find something to help the people start moving in the right direction.

                • by caseih ( 160668 )

                  You misunderstand. By verbosity I don't mean boiler plate, java-style. I mean simply that there are more keywords. If/Then/Else/End if, Do Loop, For/Next. Again no worse than Pascal which you don't have any problems with.

                  QtCreator is much closer to the RAD concept than you state here. Callbacks can be filled out in the IDE. It's not like you state in your post. However, the RAD concept isn't always super flexible, and modern GUI systems like Qt and GTK all let you work on the GUI in a programmatic wa

                  • If you insist on your definition of RAD you'll likely run into limitations (any RAD system) and be disappointed.

                    No, I will not be. I have used in the past the Borland Delphi for 5+ years and well aware of the limitations which come with the paradigm (rigid system libraries, "there is only true way to do it", "if there is no button for it, it's impossible", and so on). (And yes, to this day, I deeply hate Borland Delphi.)

                    I'm interested in RAD for specific purpose, so to say. To show that GUI development can be as easy as writing 10-20 lines of shell, but with the bonus of having a UI which is little bit more than te

    • Re: (Score:2, Informative)

      Well, it's a better designed language than Java ever was, so there's that. What more do you need?

    • The patent indemnification promise is irrelevant as it is basically legally meaningless. Microsoft wants the open source community to write stuff that uses Mono for all the same reasons they court non-open-source developers so aggressively. This post used to be a lot longer, but I am shortening it to simply reference some things that one should look up in a search engine if they want to know what this Mono / patent indemnification / "C# and Visual Studio are the best things ever" bollocks is really ab

  • by Anonymous Coward on Sunday April 05, 2015 @08:41AM (#49409173)

    Being able to use C# on Linux and OS X and the BSDs will make languages like Rust, Go and D even less useful than they already are. People who are anti-Microsoft may not like to admit this, but C# is an excellent programming language, and .NET is an excellent runtime. Although they're over a decade old, they were so far ahead of their time when they were first released that they still feel fresh and relevant even today.

    Mono was always OK, but not great. Now that Microsoft is releasing code that Mono can also use, everyone is a lot better off. We'll finally be getting a high quality VM runtime for Linux, much better than Java and it's VM, and much, much better than Parrot and the other failed open source VMs. The .NET CLR always feels very transparent, unlike the JVM which is painfully obvious.

    It's getting to the point where any sensible software developer will write their software in C#, even if targeting Linux. C# is just the best general purpose language out there. In the rare cases where C# isn't suitable for some reason, modern C++ provides a superb alternative.

    Between C# and C++, there's just no need for other languages. Both C# and C++ offer low level functionality, as well as much higher level functionality like lambda functions, closures, generics/templates, OO, memory safety through GC and/or smart pointers, and so on.

    There's just no sensible reason to use a language like Rust, Go or D these days. They're inferior to languages like C# and C++ in various ways, but without being any better. So you're inherently worse off when you use them.

    If you're ever in a situation where you may be choosing between Rust, Go or D, postpone your decision and look at C# and C++. You will very likely be making a better choice by choosing mainstream, well-supported, portable, mature and efficient languages like C# and C++.

    • by guruevi ( 827432 ) on Sunday April 05, 2015 @11:12AM (#49409787)

      I am old enough to have worked with .NET pre-releases. Back then most viewed C#/.NET as a cheap and broken Java clone. It took .NET several years to become mature enough to be useful.

      • That was actually true for Java too. Unfortunately Java development also slowed down significantly once it became mature, around 5.0-6.0. Scala is where most of the interesting stuff in Java is going on these days.
      • One's right to life, liberty, property, speech, press, freedom of worship and assembly may not be submitted to vote

        So you know, there's a very good reason that the Constitution codifies that the government may not make laws "establishing an official religion, or prohibiting the free exercise thereof." Those two rights are much broader than "freedom to worship."

        • by guruevi ( 827432 )

          Yet for some reason, the supreme court had to establish this in the above quote in the early 20th century.

    • Re: (Score:3, Insightful)

      by Anonymous Coward

      I tend to agree. I've had to use C# recently, and the .NET stuff is impressively mature and full-featured. I'm an old hardcore Java programmer, and Microsoft copied Java and C++ so closely that I was immediately productive. The whole .NET thing is an excellent rubber-room runtime system with everything you need. You'd be very, very, very hard pressed to make a business case for not using it. And even harder pressed to make a case for some nothing language that has no users anyway.

      My pet peeve is that there

    • Neither are quite perfect though - C++ has plenty of ancient cruft that;s there for C compatibility, but then, C# has plenty of cruft from its old 1.1 days (all those nasty, nasty functions taking char[] parameters for example.

      But they're still better than the newcomers simply because the new ones are just as imperfect but without the benefit of a wide user base or tooling. Maybe one day Rust will become mainstream and we'll all start using it, and good luck for that day.

      But, there's no reason not to use C+

      • Rust and C# target two different niches. Rust is basically a "better C++", and is suitable for kernel development and such. C# is more high-level and is best for userspace UI and web apps.

    • by Baki ( 72515 )

      Better than the Java VM? In what ways, and where are references?

      In most large corporations, JEE is 50-80% of new mission critical software nowadays. I work for one of the top-5 banks and we use windows only for desktops, and on the server side mostly for small- to midscale software pacakges. All the companies mission critical systems, either bought or built, are either on the Mainframe (diminshing, but that will take 10 years or more to finish) or various forms of Java (JEE, tomcat, hadoop, various other cl

    • by bmo ( 77928 )

      So much shilling in one post.

      >uttering C++ and C# in the same sentence as if they are equivalent

      Just... no.

      >no need for other languages

      Uh huh.

      It seriously sounds like you've got only two tools in your toolbox and are looking at the guy with the loaded Gerstner box and telling him all those things are useless, which as a machinist and toolmaker, I have to say that you're delusional.

      There is room in the world for C, Lisp, Go, Rust, COBOL, C#, and literal jokes like Brainfuck. Because no one language is

      • by Shados ( 741919 )

        There really isn't a neat for that many languages, even though you need quite a few to cover all the relevant use cases.

        The biggest issue right now with languages though, is that you have language A, that specializes in a very particular use case. Then you have a group who wants A, but with an ecosystem and focus on another use case, so they create B. For a while, life is good, until zealots of A go and try to recreate A in ecosystem B, and vice versa. Then people need to create ecosystem and language C, an

    • by gtall ( 79522 )

      To use C#, I'd have to trust MS. Never.

    • I can do the same thing with the JVM and choose from a number of languages (that are better than Java or C#), and I've been able to do this for a very long time. So this really adds nothing but another option but with shittier tools to work with.

    • Rust, Go, and D have completely different use cases than C#. It's like saying that C became irrelevant when C++ came out. Besides, Scala has more to offer than C#, and googling "EPFL lawsuit" gives you "Did you mean USFL lawsuit?"

      • by Shados ( 741919 )

        F# is a better functional language than Scala (and isn't plagued by shit like Scalaz and Akka. Also, even though Scala itself is an excellent language, the JVM underneath limits it in weird ways with issues the CLR doesn't have), and C# is better than Java (and in certain, limited cases, better than Scala).

        So the combination of both and the CLR, once it is fully cross platform and instrumentation/support ecosystem is available, would blow them out of the water. It probably won't happen because of the micros

    • It would probably be more reliable for Microsoft to just write front ends for their compiler for these languages rather than relying on FUD to prevent people from using them.
    • by jma05 ( 897351 ) on Monday April 06, 2015 @02:23AM (#49412749)

      > Both C# and C++ offer low level functionality

      Not really. Can you write a device driver in C#? How about a plain DLL? CLR is a VM. Its CPU performance is OK (2-8 times slower than C).

      http://benchmarksgame.alioth.d... [debian.org]

      But programs written on it have memory requirements that are higher than ones written in plain systems languages. The runtime footprint on the disk is also massive. I don't think you can really make a case that C# is a low-level language. It is not that much more CPU efficient than Java. Mono performance is worse than Java.

      http://benchmarksgame.alioth.d... [debian.org]

      Of course, CLR is better than dynamic language aka scripting language runtimes. But that's about it.

  • A "promise" not to sue? I'll take that as soon as the various studios rip out their copy protection in return of their customers' promise not to copy their crap.

  • While Microsoft released CoreCLR under MIT license, Mono runtime is LGPL. This makes it unusable on mobile (according to their own words, unless you pay) and more closed platforms, and beats the purpose of a platform independent VM.

    CoreCLR has no such restrictions and is gathering an enormous developer community, so I can't wait until we can kiss Mono goodbye.
  • by Eravnrekaree ( 467752 ) on Sunday April 05, 2015 @10:40AM (#49409629)

    After looking at Mono I failed to see the point in the whole thing. Thats because it does not support the WPF. Since a large number of .NET applications are GUI, not having WPF pretty much destroys the value of Mono in allowing Windows .NET programs to run on Linux. Otherwise, there is no point in using Mono. If you have a .NET program written using WPF its not going to run on Mono. If you are writing a new program there is no reason to use Mono instead of another application language such as Ruby. Using a development environment designed by the Evil Empire does not hold special appeal over the FOSS plartforms such as Ruby. If one has to write a program that can run on both Windows and Linux i would probably be better to use Ruby or Python or such.

    Why didnt Microsoft Open source the WPF. Instead, they open sourced the parts of .NET that Mono already had implementations of.

    • by Dwedit ( 232252 )

      I've never seen WPF used before. Forms are used much more than WPF.

      • I've seen a couple of WPF GUIs, invariably they're horrible - like what you'd write back in the 80s. I once saw a GUI that had orange and blue colouring with red highlight bars - yup, highlight the selected orange text with a red bar, reducing the distinction between the colourblind and those with perfect vision.

        Its pretty slow too, a colleague had to drop it for his audio GUI as it simply did not respond quickly enough whereas the old C++ GUI worked perfectly well.

        But its the latest cool thing so all the c

    • by gbjbaanb ( 229885 ) on Sunday April 05, 2015 @12:32PM (#49410161)

      WPF is very over-rated. [paulstovell.com] that has poor hardware rendering [wordpress.com] that doesn't work as well as old winforms [wordpress.com]

      Maybe Microsoft isn't open sourcing WPF because they know how bad it is. Only the .NET fanbois are still going on about how wonderful it is, even though the majority of UIs I've seen on Windows are using ASP.NET or Winforms.

      • Winforms emulate com underneath. I remember a long time ago there was dcom/com on Linux. Do no not know if it is still active or how well it integrates with Gnome or XFCE?

        Problem is we excpect it to be like Java and just work across platforms. C# maybe started out as J++ as a set of apis for java, but it is not java anymore. It is not python either that has gui components and frameworks designed to be cross platforms. It is not PHP either which that has quirks which make running it on Linux far best to this

      • WPF's perf issues don't eclipse the fact that it's one of the best designed UI frameworks out there in terms of just how powerful and flexible it is. Things that take many pages of code to implement in WinForms are often 2-3 lines of XAML in WPF. The only framework that I'm aware of that's close in terms of expressive power (and beats it on conciseness) is Qt in the most recent incarnations of it.

        The reason why WPF is not open sourced is more likely to do with the fact that it's all built on top of Direct3D

  • Can you run a .NET application that currently resides on a Windows-based web server on a Linux-based shared hosting server using Mono?

    • Can you run a .NET application that currently resides on a Windows-based web server on a Linux-based shared hosting server using Mono?

      In general: Yes. Need more context about the application to give a definitive answer, e.g. if it uses Windows specific infrastructure such as AD, Workflow Foundation.

      • Problem is let's say there is a bug that is causing your web app to constantly run out of threads or restart?

        Who do you call for support? Let's say you think it is mono causing it? WIth VS.NET on Windows you see the bug is not there. Or if it is you can go to MSDN and find others with the same issue and work arounds and a promise from QA that it will be worked on if it is big enough in a Windows update.

        I do not like Mono for this reason.

        Like C++ there is a big difference between one written for Unix and one

        • Problem is let's say there is a bug that is causing your web app to constantly run out of threads or restart?

          Who do you call for support? Let's say you think it is mono causing it? WIth VS.NET on Windows you see the bug is not there.

          Isn't that a concern with open source in general? That argument could be used against all open source projects where commercial support is not available. Yet, many open source projects thrives despite of this.

          .NET is great but not if you make calls that emulate Windows.

          But Mono does not make calls that "emulate Windows". In general the call upon native and/or open source libraries. Certainly you'd be hard pressed to come up with any examples of this behavior in the Mono server stack.

          Winforms is an example too which uses dcom/com underneath. It would make more sense to use GTK calls if it is a Linux app.

          But you are wrong about that. Winforms is definitively NOT based on COM (much less D

    • It depends. If it uses, ASP.NET MVC, almost certainly yes. If it uses classic ASP.NET, probably yes. But it all depends on the libraries being used. Also, perf may vary wildly.

      The .NET Core / CoreCLR effort by Microsoft is aiming to change that. It's basically an open source reboot of CLR and ASP.NET MVC that starts from scratch, ditching backwards compatibility (in particular, a lot of the older parts of .NET Framework libraries, esp. those that were Windows-specific) and generally embracing modularity ove

  • From the linked release notes:

    THIS IS A DRAFT OF THE 4.0 RELEASE NOTES

    I also can't find the 4.0 tarballs on the download page, which still says that 3.12.1 is the latest Mono release.

    • Looks like that's the case [ycombinator.com]

      It is a shame that this got submitted before we actually published the code. It is Easter and many of our engineers are taking these days off.
      The release notes are also incomplete and not ready for publishing
      Miguel

"If it ain't broke, don't fix it." - Bert Lantz

Working...