Facilitating Open Contributions for the F# Compiler, Library and Visual F# Tools

The Visual F# Team are very happy to announce that, through our participation in Microsoft Open Technologies (MSOpenTech) and in conjunction with the F# community, we are now able to accept contributions to the Visual F# Tools. 

Through this, we will also be enabling community contributions to the F# language, compiler, library more generally, including F# on Linux, Mac, Android, iOS and other platforms.

The F# language is already open, cross-platform and freely available. You can find out more about how F# is being used in practice through the F# Software Foundation, the primary community organization for the language.

F# is already available for use with Windows, OSX, Android, iOS and Linux. Recently, we have seen a surge in open engineering activity in the F# community, leading to a host of productivity tools, libraries and ground-breaking applications of the F# feature set.  The F# community is already doing high-quality, cross-platform open engineering using modern tools, testing methodology and build processes. Some particularly active projects include the Visual F# Power Tools, FSharp.Data, F# Editing Support for Open Editors, the Deedle DataFrame library and a host of testing tools, web tools, templates, type providers and other tools. F# has recently evolved one of the most dynamic, exciting and active open engineering communities for a programming technology. We have been impressed by what the F# community have to contribute, and we believe that programming technologies are stronger through open co-development with an empowered community.

Prior to today, contributions were not accepted to the core implementation of the F# language.  From today, we are enabling the community to contribute to the F# language, library and tools, and to the Visual F# Tools themselves, while maintaining the integrity and unity of the F# language itself.

In more detail:

  • Contributions can now be made to the core F# compiler, library and tools implementation.
  • Proposed changes will be rigorously moderated by ourselves and other community contributors from Microsoft Research and the F# community.
  • The full tests for the F# compiler and library are now available.
  • In time, the full source code and test suite for the Visual F# Tools will be made available. 
  • At regular points, we intend to package collected contributions into Out-of-band (OOB) updates to the Visual F# Tools. An OOB release includes a new compiler, library and tools.  We recently shipped our first OOB update as the Visual F# Tools 3.1.1
  • Source code releases/contributions are made by/to Microsoft Open Technologies. The contributions will flow as follows:
    • Contributions to the core language and library should be made via the Git-enabled MSOpenTech repositories at visualfsharp.codeplex.com.
    • We will work with the F# Community to ensure that accepted contributions are also applied to the open edition of F#.
    • This gives the crucial assurance that the Visual F# Tools and the open edition will implement the same set of language and library features.
    • The repository at github.com/fsharp/fsharp will continue to serve as a packaging repository for the F# open edition.
    • Contributions specifically related to the cross-platform capabilities of the F# open-edition should continue to be made to  github.com/fsharp/fsharp
  • Contributors to the core F# language, library and tooling must sign an MSOpenTech CLA. This is necessary if contributions are to be eligible to be part of the Visual F# Tools.  This is standard practice for contributions that may ship as part of Visual Studio.  
  • Contributions will be rigorously policed for quality.
  • We expect contributors to be actively involved in quality assurance.
  • Partial, incomplete or poorly tested contributions will not be accepted. 
  • Contributions may be put on hold according to stability, testing and design-coherence requirements.
  • We initially solicit contributions for
    • compiler optimizations
    • code generation improvements
    • bug fixes
    • library improvements
    • improvements related to FSharp.Data.TypeProviders.dll
    • improvements to allow additional targets for the F# compiler, such as Windows Phone 8 and WinRT libraries
  • Some candidate proposed improvements already exist at github.com/fsharp/fsharp, and we request these be instead proposed via visualfsharp.codeplex.com

We remain very committed to carefully managing the evolution of the F# language. Major improvements to the F# language itself (as opposed to library and tools) will be managed via an “F# 4.0” track and released as a collected, major releases. This will not be an OOB release, but rather is intended to align with major Visual Studio releases.  Microsoft Research (and specifically Don Syme, a contributor to the F# language) will
help manage the design and delivery of the F# 4.0 language design.  You can submit and vote on suggestions for the F# language and library design at the F# Language and Library User Voice.

Today is a great step forward for the Visual F# Team. We are happy to be contributors to language, tools and a great community.

The Visual F# Team