Microsoft Open Sources F# 212
aabelro writes "Don Syme has announced the release of the F# compiler source code as a code drop under Apache 2.0. He wrote, 'The F# PowerPack now includes libraries, tools and the compiler/library source code drops. I'd like to take a moment to explain the F# team's approach to this. Firstly, the source for the F# compiler in our MSI/CTP releases has been available for some time, in the releases themselves, so in that sense there's not much new in this release. Secondly, we've always made sure we have a free download binary release of F# available, and will continue to do that, and that should still be the main way you "get" a release of F#. However, we've long discussed making compiler+library source available in a different way. After some discussion, we've decided to do this via a "code drop" model, where we make available versions of the compiler+library code logically matching each release of the F# language itself.'"
So .... (Score:3, Insightful)
Re: (Score:2)
Re: (Score:2)
That quote means *nothing* about it being Open Source or not. Just because you can't put your code on their trunk doesn't mean you can't fork it and distribute your derivative.
The Apache license is definitively Open Source. You can download the source, edit it and put it up on Github or whatever for anyone to use.
Re: (Score:2)
Sort of. At best, it's Visible Source, not Open Source.
Except that it's Apache licensed which allows you to do with the code as you wish.
But since it is a code drop, the users won’t have access to the main trunk, so they cannot enhance it, fix it, determine its future. Microsoft will continue to exercise full control over their releases.
Smoke and mirrors, folks. All just smoke and mirrors...
So according to this logic a ton of FOSS projects aren't "open source" since you they don't provide public access to the main trunk.
Re:So .... (Score:4, Funny)
It's more like that exercise machine that nobody's used in years, so somebody finally leaves it out at the curb. You can take it if you'd like.
Re:So .... (Score:5, Informative)
Not quite so. There are plenty of companies out there that use Ocaml, F#'s undermaintained cousin. Jane Street, a private investment house, is one having perhaps the biggest Ocaml codebase next to Microsoft's. I see that MS opensourcing of F# compiler will lead to perhaps well-earned retirement of Ocaml from mainstream use. I think the biggest issue with Ocaml was that it was mainly a reasearch tool, maintained by INRIA. The developers have little incentive to have Ocaml do much besides what they need for their R&D, and that's understood and I don't think there's anything wrong with that. What it leads to, though, is that Ocaml is rough around the edges, and not really ready for primetime outside of niches.
F# should IIRC run just fine under Mono.
Re:So .... (Score:4, Informative)
F# should IIRC run just fine under Mono.
It does. In fact, if you look at the download page, Mono/Linux is an officially supported platform for F#.
One thing that needs to be understood about F# and why the attitude there is so remarkably different is that it is, essentially, a Microsoft Research project. Yes, it was productized and shipped "in the box" for VS2010, but a large number of folks who work on it are still from MSR.
Re: (Score:2)
OCaml is used for all sorts of things in many companies and is very much ready for primetime.
F# is fine if you're using .Net (ie. Windows). For those who want native
code, use OCaml.
Rich.
Re: (Score:3, Interesting)
I'd say that for all practical purposes, at least in my limited testing, the performance you get from the code running on CLR is not appreciably worse from what you get with OCaml's native code, so I don't see any real benefit of OCaml's native code over code running on CLR. I've found plenty of cases where CLR outperforms OCaml by an order of magnitud -- basically as soon as you use OCaml to the fullest, plenty of POD stays boxed, and everything goes downhill from there.
Company Skunkworks (Score:2)
...is how Erlang started.
"Rough around the edges" is fine if you have a paradigm-shifting product. :)
http://www.erlang.se/publications/bjarnelic.pdf [erlang.se]
Re: (Score:2)
there's always a catch (Score:3, Interesting)
Mono: It's not just the kissing disease (Score:2)
in this case you'll stop using other development platforms and produce apps that will only run on dotNET
If it's open source, you can hire someone to port it to work on Mono.
Re: (Score:2)
F# runs on Mono, so if you want multi-platform you design it that way.
How is that different than anything else?
Re:there's always a catch (Score:4, Insightful)
Re: (Score:3, Interesting)
Re:So .... (Score:5, Informative)
Re: (Score:2)
Or Mono.
Re: (Score:2)
F# is essentially defined as "ML dialect for CLR". For example, its object model is intentionally designed to match CLR more or less exactly, so that you can easily interop with C# or VB code.
That said, Mono is a supported platform (not just in a "it happens to run" kind of thing, but it is actually listed as one).
No catch. (Score:2, Insightful)
Where's the catch? What will you inadvertently start using that will later need licensing?
There is no catch. Microsoft is doing this because F# has no commercial value. Who uses F#? A couple of math/CS geeks?
Re:No catch. (Score:4, Insightful)
Ocaml, F#'s cousin, is used by a large private investment house -- Jane Street. F# itself is used in MS's static code analysis tools, like the driver verifier, and surely in a lot of in-house tools.
Re:No catch. (Score:4, Insightful)
Re:No catch. (Score:5, Insightful)
There is no catch. Microsoft is doing this because F# has no commercial value.
Yup, that's precisely why F# - previously a research project in Microsoft Research - was taken up for inclusion in Visual Studio 2010, IDE support added, new documentation written and put into MSDN Library etc. Because it has absolutely no commercial value.
Re:So .... (Score:5, Informative)
nobody really cares about functional languages except a few nerds.
Nobody really cares about programming languages at all except a few nerds. As for applications, explain Jak and Daxter, the majority of which was written in a Lisp dialect called GOAL.
Re:So .... (Score:4, Informative)
Offtopic, but since you asked, I can explain it. They were following a cult of personality, and they got burned for it. They plan on C++ for all future projects.
"GOAL sucks! While it's true that GOAL gave us many advantages, GOAL caused us a lot of grief. A single programmer (who could easily be one of the top ten Lisp programmers in the world) wrote GOAL. While he called his Lisp techniques and programming practices "revolutionary," others referred to them as "code encryption," since only he could understand them. Because of this, all of the support, bug fixes, feature enhancements, and optimizations had to come from one person, creating quite a bottleneck. Also, it took over a year to develop the compiler, during which time the other programmers had to make do with missing features, odd quirks, and numerous bugs.
Eventually GOAL became much more robust, but even now C++ has some advantages over GOAL, such as destructors, better constructors, and the ease of declaring inline methods."
...but isn't, any more. (Score:2)
For reasons that are more social than technical:
http://c2.com/cgi/wiki?LispInJakAndDaxter [c2.com]
Seriously, (Score:2, Funny)
F### that Microsoft S###.
Re: (Score:2)
FTFY
WTF is "F#"?? (Score:4, Funny)
Re:WTF is "F#"?? (Score:5, Informative)
It's a functional language following in the footsteps of the ML category of languages, but written for the .NET platform. It's open source with a patent grant, and the F# team has made sure each release has both a .NET and a Mono installer.
Re: (Score:2)
<Vader>
You underestimate the power of the functional languages.
</Vader>
Re: (Score:2)
I looked at the wikipedia page linked from the summary and went "wtf#?"
As far as I can tell there's nothing in it that you can't do in C. It's got different keywords and formatting, but otherwise seems just the same.
Either that means F# is the same capability in a different wrapper, or the wikipedia page lost the plot and thinks recursion and modularity are unique to it.
Re: (Score:2)
I thought it was a recursive question.
Nice, but... (Score:3, Insightful)
It's really nice they did this, and the license they chose (Apache 2.0) is very free/libre.
But honestly... is there going to be a big community around this? I don't think so. You can say a lot about the Windows ecosystem, but "lively open source developer community" isn't one of them. So the source code is probably going to be of use for debugging purposes, or research purposes, but other than that, I can't see lots of people chipping in on the F# libs or something like that.
Re:Nice, but... (Score:4, Insightful)
Maybe port it to JVM or LLVM?
Re: (Score:3, Informative)
It already is officially supported on Mono; I don't know why you'd feel it needs to be ported. Might be worth doing for fun, but you can already run F# on pretty much all mainstream OSes, not just Windows.
Re: (Score:2)
I never said it needed to be ported. I just think that JVM and LLVM are two great choices to port it to, especially since Mono isn't as well received as some would hope.
Re: (Score:2, Interesting)
Almost seems like their thought process is:
"We aren't going to get more resources in-house to continue developing it. Maybe if we throw it over the wall we'll get something (for free) from the Community."
Re: (Score:2)
That F# would go open source was announced more than 2 years ago, even before the 1.0 release (and before it moved from being a research project to a part of a commercial shipping product).
Re:Nice, but... (Score:5, Informative)
No, this isn't a prelude to cancellation. MS is a heavy in-house F# user. All of static verification tools that Windows kernel team uses are AFAIK written in F#, and every driver that's signed by MS was tested using a static analysis tool written in F#.
Heck, they have seen so much internal demand for F# that they developed it in the first place -- initially, their static verifier codebase was written in Ocaml. They figured there's possibly so much more to be done in that area, that they developed a whole new programming language. That's as much commitment as you can get, in my book.
Re: (Score:2, Insightful)
Many companies build their crap in their in-house-developed-tool-of-choice. It says nothing about whether they also want to support it publicly.
Re: (Score:2)
I thought Open Source projects are supported by "the community"?
Re: (Score:2)
While true, you're disingenuous. The static code verification tools developed by MS are hardly crap. They are on the forefront of what's available for static analysis of C/C++ code.
Re: (Score:2)
If Microsoft believed in open source, they would open source Microsoft Office.
Some people inside Microsoft want F# to succeed. The PHBs making decisions want their careers to succeed. F# needs to grow to succeed. There is no market success in "MS is a heavy in-house F# user." For market success, you need sales. Sales make a product. No sales = no product.
F# will either succeed or fail. Either way, key figures at Microsoft will succeed. This decision is about their careers.
Re: (Score:3, Interesting)
"This is a prelude to cancellation."
Too bad, if true. From a technical perspective its a good language, a respectable entry in the world of functional languages. Its one of the Microsoft-developed tools they appear to have gotten right, in my opinion.
Re:Nice, but... (Score:5, Insightful)
So all those Windows projects on Sourceforge aren't part of a lively community? All of the open source web projects that make sure they work on Windows browsers aren't lively?
Re:Nice, but... (Score:4, Interesting)
Re: (Score:2)
Duh people, if it's not Linux it can't have a community OR be genuinely "Open Source".
This is obviously just another dick move by Microsoft to screw everybody over (even though they have a long history of giving most of their developer tools away for free).
Re:Nice, but... (Score:4, Insightful)
There are actually several .NET tools that are open source like NHibernate and NUnit.
Re:Nice, but... (Score:5, Insightful)
Which are just clones of the original java tools, like C# is a clone of Java
And GNU/Linux is a clone of UNIX, and Quadrapassel from GNOME Games is a clone of Tetris...
Re: (Score:2)
C# borrows heavily from Java, but also from C++ (syntax, destructors, something loosely approximating function pointers, and address-bassed memory access (true pointers, buffers, etc. - if you want them).
Why when we already have Ocaml? (Score:2)
Okay, why do this when we already have Ocaml? Are they doing this because we already have Ocaml? This doesn't mean we get Visual Studio, either, so I'm ripe for enlightenment on this issue.
Re: (Score:2)
Well, some C# programmers are starting to use F#. Making it open source is quite useful as F# programmers can now produce code that can run on non-Windows platforms using Mono.
Re:Why when we already have Ocaml? (Score:5, Insightful)
Re:Why when we already have Ocaml? (Score:5, Informative)
Literally, with C# and F# you can just define classes in either and call them in the other language directly.
Thats what sets this apart from Ocaml, and thats why people use it over Ocaml on
Re:Why when we already have Ocaml? (Score:5, Informative)
Because next to F#, Ocaml frankly said sucks. And I don't mean to be a troll. Almost anything you look at in Ocaml, F# has it better. Libraries, performance, interoperability, ...
All of the facilities of CLR are available from F# -- that includes vast core .NET libraries, all of 3rd party .NET libraries, interoperability with all of the code that runs on CLR,... To give a transportation analogy: the libraries available in Ocaml are to libraries available in F# like a car's driver is to a seagoing ferry.
Ocaml was developed by INRIA to support their own R&D program, pretty much. There is, understandably, little incentive for them to have Ocaml do much more besides what they themselves need. It's OK, really, there's only so much you can do with limited funds and the day only being 24h long.
Never mind that there are serious technical issues with the virtual machine that runs Ocaml bytecode, and with the runtime library that supports native-compiled Ocaml. Those issues are benign enough to allow Ocaml to be deployed in certain scenarios, but for a language platform to be widely used they are pretty much non-starters. F# runs on CLR, a platform that gets as much or more development resources allotted to it yearly than Ocaml saw through the whole of its long existence, including that of Caml-lite.
Re: (Score:2)
Not quite sure why you've chosen to troll about F# here, but OCaml simply does not have the serious technical issues you say, and does have hundreds of libraries [inria.fr]. It's used a lot by some very large companies, and in important areas like financial trading, aircraft code verification and virtualization.
Rich.
Re: (Score:2)
I read caml-devel like you do, so the only thing I can make out of your post is that ocaml's issues are not all that important to your use of it at Redhat. And I'm fine with that, but again -- it's a niche use. As for important areas: sure, I agree, after all F# came up from MS's own use of Ocaml!
Re: (Score:2)
From what others are saying, Ocaml is not very polished. It was made by researchers for researchers, so some of the practical sides of it weren't well developed.
MS actually used Ocaml first, then decided to create F# because a.) Ocaml was very popular internally and b.) Ocaml didn't meet all of their needs.
The solution is obviously to create a language similar to Ocaml that meets all of their needs.
Thus, F# was born, a language written by researchers for programmers.
It is apparently used very heavily inter
What is F#? (Score:2)
Forgive my lack of knowledge as Delphi developer, but what is F# and does it have any advantages over, say, C#?
Re: (Score:2, Informative)
Re: (Score:2)
No, it's a Microsoft's dialect of ML that shares most of the base language with Caml (and is therefore more similar to it than to, say, Standard ML), so much so that you can typically take a Caml program and have it compile, unless it uses some missing libraries.
However it has a lot of differences to Objective Caml - its object model is entirely different, for example (to easily align with .NET one). It misses some major features of OCaml (e.g. functors), but adds some of its own: indentation-based syntax a
Re: (Score:3, Funny)
For starters, it's five semitones higher!
Re: (Score:2)
Re: (Score:2)
Yeah, but I have to wonder how well it integrates with C, since together they make the "devil's tritone".
Re: (Score:2, Informative)
Re:What is F#? (Score:5, Informative)
Very few .NET languages have strong advantages over the others aside from programmer preference. It's more about which one you like coding in, as all of them have pretty much the same capabilities.
With that said, it appears that F# is essentially a tweaked OCaml syntax, whereas C# is a tweaked C++ syntax. It's really more about what you prefer coding in.
I must say though, despite loving my Linux desktop at home, I work in C# a great deal at work, and I love it. I know there's a lot of MS hate on Slashdot, but their development tools are amazing. I'd do a lot more coding in Linux if I had something that was similar to (and of the same quality, which throws out things like Monodevelop) Visual Studio.
Re: (Score:2, Insightful)
Re: (Score:2)
Re: (Score:2, Informative)
Qt Creator [nokia.com]
Re: (Score:2)
Re: (Score:2)
Have you ever tried to hammer nails in with a microscope?
It is entirely possible, but it is not very practical. Same as your suggestion.
Re: (Score:2)
Good luck getting it to compile.
I don't understand, why wouldn't Microsoft's free C# compiler compile valid C# code?
Also, have you ever used Visual Studio in the last 10 years?
Re: (Score:2, Insightful)
Forgive my lack of knowledge as Delphi developer, but what is F# and does it have any advantages over, say, C#?
Well really the power of F# comes from the functional programming style. So there are much easier, cleaner ways to do some things in F# than C#. They both have the same capabilities, the way you implement and code them is just different. Also, with the ability to have F# and C# code call each other makes it so you can have the benefits of object oriented (C#) along with the benefits of functional (F#) while having clean code in both.
/. snottery (Score:5, Insightful)
Re: (Score:2, Insightful)
Re: (Score:2)
I dunno I can see both sides. On the one hand, it's really good that Microsoft would release anything Open Source. On the other hand people are justifiably suspicious of a company that goes out its way to demonstrate what a fool's chance you're taking by using Open Source... then releases Open Source software. Of course there's always the people who won't be happy with Microsoft no matter what they do simply because they're Microsoft, and the people who are incapable of seeing any gray between the black
Re: (Score:2)
There is also the "once bitten twice shy" syndrome. MS has such a horrible past that even when they do something worth of praise it is very diffic
Re: (Score:2)
That's not open source!
You obviously don't know what "open source" means.
All this means is that Microsoft is not allowing community "enhancements" into the official product. With the source, though, you are free to fork it if you want to (I honestly don't see why you would, but you can).
Patents (Score:2, Insightful)
Until Microsoft permanently ceases asserting software patent rights, sharing their source code is of very limited value.
Re:Patents (Score:5, Insightful)
Until Microsoft permanently ceases asserting software patent rights, sharing their source code is of very limited value.
And therefore, it's interesting that the chose to use a license that explicitly offers a Grant of Patent License.
Re: (Score:2)
If I maintain a project, and open source it, that doesn't mean that I'm going to incorporate your changes, enhancements, bugfixes, or rewrites into my code base. All it means is that you are allowed to see my code, and then distribute forks/improvements yourself. They're distributing under an Apache license, but are choosing not to let you submit changes to their codebase. The license is still valid and still allows you to make changes.
Re: (Score:2)
I don't see how the fact that it offers a Grant of Patent License has anything to do with Microsoft not wanting to incorporate community alterations to their software.
I frankly don't understand your point at all in this context. It's a copy of another post you made, which was at least in the right context even though it was completely incorrect.
Seriously, if you can't comprehend what people are saying, you probably shouldn't quote them.
Re: (Score:2)
But I thought most of the value of open source was that you could inspect the guts of something yourself and fix it if it was broken?
Seriously, I feel like open source advocates should be happy whenever a force in the closed-source world takes a step, no matter how small, in their direction -- instead what actually happens is it's never open source enough.
Re: (Score:2)
Ballmer has been a bit of a patent bully in his speeches, but I believe the TomTom case was the first in history when Microsoft went after someone for patents. They have a massive portfolio and could be a nasty patent bully, but they haven't really acted the part so far.
Re: (Score:2)
Somehow I doubt they managed to get HTC to pay up by asking nicely.
F#CK Yeah (Score:5, Funny)
so they released the F# Compiler Kit?
Apache 2.0 has a good patent clause (Score:2)
Much better than the other permissive licences:
http://en.swpat.org/wiki/Patent_clauses_in_software_licences#Apache_License [swpat.org]
I know this is Microsoft... (Score:2)
...but there is no need for criticism of back-handed compliments here. Regardless of their history, this is a good move.
Kudos on another open source release.
Does this mean that.. (Score:3, Insightful)
Re: (Score:2)
Does this mean that we can use the source code to port F# to other platform such as GCC and LLVM?
If the Apache 2.0 license is GPL compatible, yes, if not you can still use the sources for learning how to write a F# compiler.
Re: (Score:2, Informative)
Re: (Score:2)
Re: (Score:3, Informative)
F-sharp (pseudo musical notation)
Re: (Score:2)
It's 'pound' to North Americans, yes. The rest of us don't call it 'pound' for reasons well explained at:
http://en.wikipedia.org/wiki/Pound_sign [wikipedia.org]
Re: (Score:3, Insightful)
Re: (Score:3, Informative)
I was intrigued with Sun's Fortress, but this has gone nowhere, and it is fundamentally flawed from the start in that it is tied to the JVM, which is no-no when it comes to high performance computing.
How's that again? I haven't seen any indication that CLR is better suited for HPC than the JVM. Not that I've looked extensively, mind you, but it seems like the two runtimes are not that far apart.
Re: (Score:2)
The same statement, of course, applies to any programming language in existence.
Re: (Score:2)
All of the languages you've listed - probably with exception of FORTRAN - derive from other languages which were designed in academia.
More specifically, C, C++ and Java are all part of the Algol family, and C++ and Java are more specifically a part of the Simula family - both "academic" languages.
Re: (Score:2)
I think that they will continue to develop it. They use it in-house, if other commenters are to be believed, which means that they will continue to make the improvements to it that serve their needs.