Settings

Theme

Microsoft releases F# under Apache 2.0 license

blogs.msdn.com

217 points by ataranto 15 years ago · 103 comments

Reader

gphil 15 years ago

This is a good move. With Java under Oracle's control, Microsoft has a lot to gain by embracing open source licensing.

  • aphexairlines 15 years ago

    Does the Apache license include patent licensing? Java is open source too.

    • nailer 15 years ago

      > Java is open source too.

      I don't think that's correct. AFAIK there's no certified OSS Java. And if it isn't certified, it can't be called Java.

      It would be correct to say there's Open Source 'Java compatible' environments.

      • riffraff 15 years ago

        openjdk is not certified java? I know harmony did not get a tck but it seems unlikely oracle is not letting their own developers use it.

        • nailer 15 years ago

          I'm not sure to be honest. The actual JRE based on OpenJDK has additions to the code according to http://openjdk.java.net. I couldn't find anything called 'Java' that wasn't this code.

          The OpenJDK FAQ is of course 404ing. Thanks Oracle.

    • equark 15 years ago

      Yes.

      • ntoshev 15 years ago

        Remember this only applies to the F# compiler and not to the .Net runtime which you need to run the compiled code. Microsoft is friendly with Mono currently, but so was Sun with Android.

    • Tamerlin 15 years ago

      Only OpenJDK is open source. Other than that, Java is closed -- and to certify a Java implementation, you have to pay a license fee, which not the case for .NET.

      IMO were it not for the Oracle acquisition, it would be a matter of time until Java were fully open sourced, but with Oracle in charge now I suspect that it's not going to happen.

      • SoundLogic 15 years ago

        Java is closed for commercial use under the terms of the GNU - did anyone notice how the press picked up on the story then it completely vanished from the news? ...guessing a gag order was issued

  • kamechan 15 years ago

    agreed. excellent move on their part. not to mention that i'm continually impressed by what the folks at MSR put out. some smart folks, those ones. i've always found it odd that the environment there seems so contrary to that in redmond. i guess that's marketing for you.

    now if they'd only do the same for the .net framework. i'm uncertain about java's future myself as are many of my friends who have invested a lot in their companies' solutions thinking that java would remain fairly OSS and are now scratching their heads.

    i guess MS sells enough server and DB licences that my hopes that they'll do the same for the rest of the .net framework will remain just that. it'd be nice if they at least sanctioned the mono folks and gave them a roadmap. living under the threat that microsoft could probably swoop in and put an end to their fun doesn't make me want to use mono. that said, i generally like the .net framework (and specifically c#) more than the alternatives in the managed/oop realm. but i'm out of the loop on the status of mono, as i rarely develop in managed/oop code these days.

    has there been any official acknowledgment/condoning of the mono project by MS?

    • aaronbrethorst 15 years ago

      I finally had a chance to follow up on this, and yes, Moonlight at least, is officially condoned by Microsoft: http://www.microsoft.com/interop/msnovellcollab/newmoonlight...

      • kamechan 15 years ago

        interesting tell in the url, that novell is involved. may be a good way for microsoft to let some things go OSS without directly doing it through collabs with novell, who already has a foothold in the market. one can hope anyway. i like a lot of the microsoft technologies, i just wish they'd let it roam freely.

    • Tamerlin 15 years ago

      AFAIK Microsoft has even contributed code to the Mono project.

    • aaronbrethorst 15 years ago

      Miguel de Icaza has spoken at past MIX conferences fwiw.

      • kamechan 15 years ago

        worth a bit, actually. a letter from ballmer (or gates) saying, "dude, nice work" would be even better. :D

        • kamechan 15 years ago

          on this subject, just went watch some netflix on my maverick meerkat install (on a macbook) and clicking on "install silverlight" on a microsoft site redirected me to the "mono moonlight" project. if that's not acceptance, i don't know what is.

          EDIT: sadly, netflix won't let me watch movies without win or mac (silverlight plugin notwithstanding).

          • ntoshev 15 years ago

            I think moonlight can't show you any DRMed content; it's still the technology that is at fault.

  • ntoshev 15 years ago

    To run F# you need .Net runtime, which is as closed as it can be. It's like Sun open sourcing the Java compiler but not the JVM.

    • MichaelGG 15 years ago

      I guess you haven't heard of http://mono-project.com. The F# team tries to ensure it works well on Mono, and the same for the Mono team.

      On top of that, the specifications for the CLR are standardized.

      • face 15 years ago

        Kind of like how I cannot watch netflix on my linux machine, despite mono and moonlight?

        • pufuwozu 15 years ago

          The DRM technology is the only part of Silverlight that isn't licensed to Moonlight.

        • tedunangst 15 years ago

          I don't think you have presented convincing evidence that the root cause of that is not "there are bugs in mono".

equark 15 years ago

It's interesting how the F# team is pushing F# to be the language for data-rich programming. Their Type Provider concept looks promising, but some of their demos still are comically difficult coming from a R/Matlab/Python style of data-rich programming. Of course coming from C#/Java it all looks amazing.

But I don't quite see how F# replaces R or Matlab, even with library support. Performance alone seems dubious value proposition, since packages like Jacket for Matlab make most computations extremely fast.

Anybody have experience where demand for strongly typed language is really needed for data analysis tasks?

  • silverlake 15 years ago

    "Anybody have experience where demand for strongly typed language is really needed for data analysis tasks?"

    Strong-typing is not really about performance, though it does help. It's about discovering more errors at compile-time rather than run-time.

  • chc 15 years ago

    I think the pitch is that F# is halfway to Matlab without losing general programming power — a best of both worlds kind of thing.

    • sliverstorm 15 years ago

      Yeah, Matlab seems to be pretty useless if you want to do anything besides pure math.

      I mean, that's really all computers are at the core- math- but you know what I mean.

      • Raphael 15 years ago

        I'd say computers are more applied math than pure math

        • gaius 15 years ago

          Mathematica is more oriented towards pure maths (e.g. symbolic maniplation) and MATLAB more towards applied (numerical methods).

      • konad 15 years ago

        At their core, computers are boolean logic, not arithmetic. Ironically, math is one of the things they are bad at, they are just quick.

ericflo 15 years ago

"After some discussion, we’ve decided to do this via a “code drop” model..."

They lost me here.

  • luffy 15 years ago

    They can't afford to do otherwise. Accepting community contributions will increase the MS surface area for copyright/patent infringements. The F# team is mostly a research outfit - they aren't going to vet patches.

    • ericflo 15 years ago

      Sorry, I just don't buy this. From Google, to Yahoo, to other teams in Microsoft, to small startups, to IBM, to single-person freelance developers--each one of these groups have open source projects that accept community contributions.

      If that increased the "surface area for copyright/patent infringements" were so great, or were such a dramatic burden, then the above would not be true. But it is true.

      Let's look at Cassandra as an absolute prime example of what I'm talking about. The original version of Cassandra was a code drop by Facebook. It made some news in tech blogs, and then mostly everyone forgot about it. A few months later, another version was dropped, but this time nobody really noticed.

      Then Jonathan Ellis found the codebase, imported it into GitHub, and started doing development on it in the open, and accepting patches. Sure enough, more people started to take notice and watch as development happened, and started to contribute back. A community started forming. Facebook then donated the project to the Apache Software Foundation, where it's continued to be developed in the open and thrive. Now it's supported by many companies; in fact new companies have sprung up specifically on the premise of providing support for it.

      Empirically speaking, the software has had much more development since it switched to being developed in the open. Subjectively speaking, it's simply a vastly improved piece of software from when it was handled as a "code drop", it's boosted Facebook's credibility in the eyes of developers for having started the project, and it's gained much more popularity.

      So, going back to F#, what are the goals that Microsoft is trying to further with its platform? I'll posit three (of which there are certainly more): to increase the reach of the .NET platform, to boost Microsoft mindshare, and to increase developer productivity.

      Each one of those goals are served better by moving to an open development model, for fairly obvious reasons.

      I didn't mean for this response to become so long, but it just seems to me that this is such an obvious and unfortunate blunder that it renders the whole open sourcing of the language nearly worthless.

      • pufuwozu 15 years ago

        I think everyone agrees that accepting patches would be awesome. The F# team isn't very big and is largely made up of researchers. They have obviously thought about an open model but decided not to, for some reason or other.

        Whether they have a valid reason or not, it's perfectly legitimate to create a public fork of F# and accept patches - I imagine that Microsoft will practically beg to merge in quality patches once they're proven to be popular.

      • bad_user 15 years ago

             From Google, to Yahoo, to other teams in Microsoft, to small startups, to 
             IBM, to single-person freelance developers--each one of these groups have 
             open source projects that accept community contributions.
        
        The difference is that Microsoft is selling these products to companies that have idiots in charge and that won't touch anything related to open-source; although it's Microsoft's fault really.

        EDIT: This is their excuse, that their customers prefer to be safe in regards to the IP they buy from Microsoft.

        • ericflo 15 years ago

          Are those people the same ones who would buy into an early-stage functional programming language like F#?

          • MichaelGG 15 years ago

            Both sets of people can be present in the same company. There have been postings in the F# forums of devs wanting to use F# because they know it's good, but being very clear that corporate policy is going to restrict them unless certain conditions are met. Whether IP concerns from open source contribs is one of these, I dunno.

            Nitpick: F# is really a multi-paradigm language. It truly does provide OO, functional, scripting and interactive styles.

            • cabalamat 15 years ago

              > There have been postings in the F# forums of devs wanting to use F# because they know it's good, but being very clear that corporate policy is going to restrict them unless certain conditions are met.

              Maybe the F# people should rename it "C# Functional", then the devs can write code in it and if the managers say anything, just tell them it's part of C#, and they'll be none the wiser.

      • gaius 15 years ago

        If you want to submit patches for code written by the same guys, there's always GHC.

      • DrJokepu 15 years ago

        If you don't like the way the project is ran, you can just fork it and create your F# variant that accepts patches. This has been done before countless times (e.g. EGCS), this is the power of open source.

    • GICodeWarrior 15 years ago

      What is the main value then?

      • MichaelGG 15 years ago

        I've been using F# for a while. The main benefit I've had from having access to the source is being able to figure out exactly how things work. A _lot_ of F#'s "magic" is in libraries written in F#, and the source to those is very clear and easy to navigate and figure out. The compiler is of course more complex, but the few times I've wanted to figure out a specific issue in the compiler that the F# language spec didn't explain, it's come in handy.

        This also holds true for the .NET Framework class libraries. Visual Studio can automatically step into the source while debugging. This has saved me tons of time.

      • bad_user 15 years ago

        When Microsoft decides to no long work on F# anymore, somebody else can continue to work on the project.

        As it happens right now with IronPython / IronRuby.

        I.e. it is just a promise that even if F# isn't receiving the same support as C# is, you have a safety net (kind of).

      • pufuwozu 15 years ago

        Value comes from the ability to tweak or change the language if necessary, for your application. A permissive license means you're less locked into the vendor (Microsoft).

    • konad 15 years ago

      He means "code drop model" http://www.google.co.uk/search?q=code+drop+model

      Most of the 16 results are linkbacks to this announcement

mfukar 15 years ago

First IronPython & IronRuby (http://news.ycombinator.com/item?id=1833772 ) and now this. I have to say, Microsoft is (or seems to be, depending on your philosophical disposition) increasingly embracing FOSS, and that's a very good move not only for them, but also the community.

  • konad 15 years ago

    Or using the dumping of stuff they don't care about to gain positive press from people who will never use them.

    • mfukar 15 years ago

      You're not implying that nobody uses F# or IronPython, right? That aside, I'm not in a position to know their motivation behind it, I can only say it's a good move for the FOSS community.

      • konad 15 years ago

        No, I'm not implying that at all. I don't doubt they are good products.

    • rbanffy 15 years ago

      Remember they once ignored the web.

8ren 15 years ago

Java is Oracle stack, C# is MS stack, objective-C is Apple stack.

Is there an opportunity for an open language with similar VM ease-of-use/performance tradeoffs - or is hardware now fast enough for the ease/speed of dynamic languages to fill that gap (Python, Ruby, Javascript, ...)?

  • scalyweb 15 years ago

    I was under the impression this was/is going to be one of the side benefits of the Parrot VM.

    Updated to add: Directly from the Mono Project website "An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET"

    Now with F# on Mono...great things!

  • lapusta 15 years ago

    Java isn't just Oracle stack. It's also SAP, IBM, Red Hat(JBoss), VMWare(SpringSource) & Google stack.

    The only thing you need from Oracle nowdays is JDK, and with OpenJDK becoming a standard - you need nothing.

    • 8ren 15 years ago

      Oracle owns Java. They will attempt to turn it into a profit center. The Google suit is one example. Another way is to make their database/s and products perform better, by integrating them more tightly with Oracle's version of Java (which includes BEA System's version) - analogously to MS making Office apps perform better under Windows.

      Sure, it's against the concept of a public spec, and OpenJDK; and it might not work, or at worst fragment the Java standard and destroy much of its value - but I can't see how Oracle could help themselves from doing this. It's inevitable.

    • bad_user 15 years ago

      OpenJDK is not a standard. Java itself is not a standard open to third-parties, unless Sun/Oracle wants to.

      It's not the JDK that you need from Oracle for Java to be a standard, but rather the JCK.

      This issue is a couple of years old and hasn't been solved: http://www.apache.org/jcp/sunopenletter.html

      Unless by "standard" you mean what everybody uses.

  • SkyMarshal 15 years ago

    Haskell, Ocaml, and Scala? All are open languages, cross platform, and first two at least are Free. And Scala runs on both the JVM and .NET, covering all three platforms. Is that what you meant?

    • 8ren 15 years ago

      Not exactly: many languages are open; my focus was on the ease/speed tradeoff.

      Haskell and the ml family only have ease-of-use for people who think higher order predicate calculi have ease-of-use - some of whom will vigorously argue that everyone should find them easy-to-use.

      (I don't know enough scala to form a judgment, but I haven't heard it being touted as primarily having ease-of-use, in contrast to Python and Ruby.)

    • contextfree 15 years ago

      AFAIK the Scala .NET implementation is still pretty raw (though there's at least more activity on the project recently).

    • riffraff 15 years ago

      I believe by "haskell" you may mean "ghc"

      • edwtjo 15 years ago

        Why? "Haskell" also works on hugs,yhc,uhc,... http://www.haskell.org/haskellwiki/Implementations Most implementations are BSD/GPL Licensed. Haskell itself (thinking of Haskell Prime, Haskell98) is a research/community driven project and, as such, open/transparent. For GHC there is even an intermediate format allowing you to run your code on stuff like llvm.

        • riffraff 15 years ago

          the original message was talking of specific "stacks", which in my understanding includes an abstract language and a concrete implementation (I'd say also some accompanying development tools: if not an ide, at least a repl, debugger, build system). "haskell" as such would not qualify, while ocaml, scala and ghc would.

        • vegai 15 years ago

          ghc is the only industrially viable choice at the moment, though.

      • SkyMarshal 15 years ago

        I did mean ghc, though I just assume everyone assumes you mean ghc unless you specify otherwise. GHC seems to be the standard.

scalyweb 15 years ago

Great News! Mono here we come...

  • DanielBMarkham 15 years ago

    Just got through installing Ubuntu.

    I expect to see some really good software come out of this. I think Microsoft bought a lot of goodwill with the community with this move.

    • irahul 15 years ago

      Any ideas why the compilation is so slow? Compiling a simple "Hello World!" takes a noticeable amount of time on my reasonably well endowed laptop(i5, 4GB ram).

      Is it slow just on linux/mono or that's the case on windows as well?

      Other than the compilation time, all else seems well. I was following "Programming F#" and didn't run in any blockers on selective examples I tried. Once compiled, the performance is reasonable.

      • pufuwozu 15 years ago

        The compiler and interpreter aren't pre-compiled. Use the --resident flag - it will keep the F# compiler running as a service.

  • pufuwozu 15 years ago

    Miguel has left a very suspicious tweet:

    "There is a rumor on the tweetosphere of an F# addin for MonoDevelop being demoed tomorrow ;-)"

    http://twitter.com/migueldeicaza/status/384890042327040

    This is very exciting!

  • tomasp 15 years ago

    There is actually an F# package for Mono (Linux/Mac) already: http://fsxplat.codeplex.com/ Although, the current release of F# has some bugs when running on Mono - open source release opens some cool possibilities :-)

  • pufuwozu 15 years ago

    It already runs under Mono - though, a few parts are a bit buggy.

    The release comes with a script to install it on Mono:

    http://fsharppowerpack.codeplex.com/SourceControl/changeset/...

MichaelGG 15 years ago

Does it mean anything in particular that they chose the Apache 2.0 license? Their previously public plans were to use MS-Pl.

  • luffy 15 years ago

    The newer projects on the MS backed OuterCurve.org (formerly Codeplex.org) all use either an Apache or BSD license.

    I suspect two reasons for MS accepting the Apache, BSD, and MIT licenses:

    1) the terms of those license are not very onerous and let the end user pretty much do as they will. This is very important to a company like MS that has a lot of code and needs to be paranoid about subjecting themselves to patent suits.

    2) Joe Briefcase has no idea what-so-ever what the "MS-PL" license is - no name recognition at all. The Apache/BSD/MIT licenses have been around so long and are so commonplace that they are generally acceptable to most everyone, and most developers shouldn't have a problem using one of those licenses.

    • bad_user 15 years ago

      Apache2 is not in the same league as BSD and MIT. It includes an explicit patents grant, versus GPL v2 which doesn't.

      It's a strong license overall.

      • davidw 15 years ago

        > Apache2 is not in the same league as BSD and MIT

        From the point of view of a company looking to release proprietary products utilizing the licensed code, though, it's similar to BSD/MIT in a good way: you can do it without problems.

        • rbanffy 15 years ago

          Plus, as it was pointed out, the patent grant prevents them from coming after you later.

gaustin 15 years ago

I wonder what it would take to remove the dependency on the .NET runtime. Could anyone with relevant experience and knowledge comment?

  • chollida1 15 years ago

    It could be done but it would be quite the undertaking.

    The compiler generates il. The basic container types wrap .net types. Alot of the built in methods and power pack methods call out to .net methods. Many of the new features rely on new clr features, such as async.

    Other platforms, jdk, probably offer similar functionality but to port it would be a case of having everything broken for some time until you could get the compiler and built in methods and containers ported over.

keyle 15 years ago

Are we getting any closer of developing .NET / WPF apps on Mac? (Wishful thinking, shameless cry)

rbanffy 15 years ago

That makes me believe there is no protection against contributor patents in the Apache 2.0 license...

At least they won't sue you if you use it under Windows.

  • equark 15 years ago

    3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

    • rbanffy 15 years ago

      Thanks. I stand corrected. It's good to know Apache is patent-safe.

      Sorry for those offended by my doubts.

  • sid0 15 years ago

    You post uninformed crap like this, then complain about being downvoted for anything "negative against Microsoft": http://news.ycombinator.com/item?id=1800507

    • rbanffy 15 years ago

      I complain when I am not wrong. This time I was very wrong.

      And now I know Apache has an explicit patent grant, something I didn't just 7 hours ago.

      BTW, I upvoted equark's comment. And thanks for pointing me to my previous comment: I forgot to add the "but, karma, burn" part...

    • mfukar 15 years ago

      rbanffy is anti-Microsoft, and doesn't waste a second in making it known. It's no use trying to reason or discuss with him about this - others have tried.

      • rbanffy 15 years ago

        I am not "anti-Microsoft". I am just old enough. I also worry, considering recent moves (and that's not only from Microsoft), that some companies (Microsoft among them) may be taking strategic positions to disrupt the free and open-source software ecosystems that threaten their dominance of their niches.

        Yesterday, for instance, Oracle made a huge PR splash in the MySQL space. One can't ignore it.

        • bad_user 15 years ago

               some companies (Microsoft among them) may be taking strategic positions 
               to disrupt the free and open-source software ecosystems
          
          Nice to join the party, some "Free Software proponents" have been doing that for years, doing nothing but going around and pissing on other people's efforts.
        • mfukar 15 years ago

          I am not "anti-Microsoft". I am just old enough.

          I say it here, it comes out there. :-)

          • rbanffy 15 years ago

            I'm also consistent. ;-)

            I've been able to observe Microsoft for about 30 years and one thing you learn is that they play hard. They too are very consistent.

        • face 15 years ago

          I'm glad that there are at least some people on HN who still understand the type of company Microsoft really is.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection