Contributing to the F# Language, Library and Tools

You are invited to join with the F# Community and the Visual F# Tools team to help produce future releases of the F# language compiler, library and tools.

F# is a mature, open source, cross-platform, functional-first programming language which empowers users and organizations to tackle complex computing problems with simple, maintainable and robust code. F# is used in a wide range of application areas and is supported by Microsoft and other industry-leading companies providing professional tools, and by an active open community. You can find out more about F# at fsharp.org.

Through this repository, Microsoft Open Technologies help to manage contributions to the Visual F# Tools. Changes contributed here are packaged into the Visual F# Tools, the F# open edition and the open source F# editing tools. Microsoft takes this repository and package it as part of the Visual F# Tools. The F# community also package it as the "Open Edition" of F# for use on Linux, Mac, Android, iOS and other platforms, via the community packaging repository at GitHub

The Visual F# Team are proud to be contributors to F# and urge you to join in too. F# users and the F# community are grateful for all contributions to F#.

Contributors:   https://visualfsharp.codeplex.com/wikipage?title=Contributors 

Changelist:    https://visualfsharp.codeplex.com/SourceControl/list/changesets 

Priorities:    https://visualfsharp.codeplex.com/wikipage?title=Current%20Priorities

F# 4.0+ Language and Core Library Status:   https://visualfsharp.codeplex.com/wikipage?title=Status

How Your Contributions to the F# Language, Compiler and Core Library Are Delivered Cross-Platform

The F# Software Foundation includes a working group called The F# Open Engineering Group.  They have published a guide called How Your Contributions to the F# Language, Compiler and Core Library Are Delivered Cross-Platform.

Details

Contributions to the F# Compiler, Core Library and the Visual F# IDE Tools flow as follows:

  • Contributions can now be made to the core F# language, compiler, library and tools. Contributing via this repository gives the assurance that the Visual F# Tools and the open editions stay feature-aligned.
  • By agreement with the F# community, accepted contributions will be propagated to the open edition of F# and shipped for use on Linux, OSX, Android and iOS. The repository at github.com/fsharp/fsharp will continue to serve as a packaging repository for the F# open editions.
  • Contributions specifically related to the cross-platform capabilities of the F# open-edition should continue to be made to the packaging repository at github.com/fsharp/fsharp.

This arrangement is by agreement with the F# Community to ensure ongoing alignment of the versions of F# available on various platforms and full leverage of Microsoft's automated QA and packaging processes on Windows.

Currently this repository only enables development and testing on the Windows platform. If you are using Linux, Mac, FreeBSD, Android or iOS and would like to contribute to the F# Language, Compiler, Library and Core Tools, please see the instructions provided by the F# Software Foundation.

If you would like to contribute to the F# ecosystem more generally, please see the F# Software Foundation Community Projects Pages.

Getting Started

What to Contribute?

There are several important ways that you can contribute. We are especially grateful for early feedback on in-development features, bug reports with repro steps, bug fixes with regression test cases, cross-platform expertise and changes, documentation updates, feature tests, suggestions, comments, and ideas. 

We initially solicit contributions for

  • compiler optimizations
  • compiler performance improvements
  • code generation improvements
  • bug fixes (see the known issues list)
  •  library improvements
  • improvements related to FSharp.Data.TypeProviders.dll
  • F# 4.0+ language and library features

New features are also welcomed, but be aware that Visual F# is a high quality programming language with high quality tools, and we wish to keep it that way. Before you embark on an extensive feature implementation, make a proposal on the discussions page or on the F# Language User Voice so the community can review it. 

You will need to sign a Contribution License Agreement before a pull request will be considered. To complete the Contribution License Agreement (CLA), you will need to submit a request via the form and then electronically sign the Contributor License Agreement when you receive the email containing the link to the document. This only needs to be done once for each Microsoft Open Technologies OSS project you contribute to.

Please read the full details of our contribution pilicy before contributing.

All contributions made to this project are subject to terms and conditions of the Apache License, Version 2.0. A copy of the license can be found in the License.html file at the root of this distribution. By using this source code in any fashion, you are agreeing to be bound by the terms of the Apache License, Version 2.0. You must not remove this notice, or any other, from this software.  If you have requirements for a different license raise it in the discussion forum, we will work with you and our legal representatives to work out a mutually satisfactory solution.

Quality and Testing

Contributions to this repository will be rigorously policed for quality.

All code submissions should be submitted with regression test cases and will be subject to peer review within the community as well as Microsoft review and testing.  The bar for contributions will be held to be high.  This will result in a higher quality, more stable product.

  • 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.

Language Evolution

We remain very committed to carefully managing the evolution of the F# language.

We actively solicit contributions related to the F# language design, but the process for handling these differs substantially from other kinds of contributions.

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) manages the design and delivery of F# 4.0.  You can submit and vote on suggestions for the F# language and library design at the F# Language and Library User Voice and can submit implementations of approved language design items to the "fsharp4" branch of this repository. 

You can track status for the F# 4.0+ Design and Implementation process on our [Status] page.

Roadmap for Contributions

The primary function of this repository is to aggregate and coordinate contributions to the F# compiler, language and tools. The "roadmap" below shows how we intend these contributions to be arranged and how they will map into delivered versions of the Visual F# Tools and the F# Open Edition releases.

F# 3.1.X - Compiler, Tools, Library and Fixes

  • compiler optimizations
  • compiler performance improvements
  • code generation improvements
  • bug fixes
  •  library improvements
  • improvements to compiler and library to help F# reach to additional platforms
  • improvements related to FSharp.Data.TypeProviders.dll

Microsoft intend to package these into updates to the Visual F# Tools on an approximately quarterly cadence.

F# 4.0+ - Next Language/Core Library Revision

Will include language, library and platform enhancements that require extensive design, implementation, and testing efforts. See above for our approach to language evolution.

Packaging and Releases of the Visual F# Tools

Contributions accepted to this repository will be packaged and include in future releases of the Visual F# Tools.

Microsoft aim to package and release out-of-band (OOB) updates to the Visual F# Tools on a quarterly cadence.  These releases will include additional tools, new features, or bug fixes based on contributions to this repository.  We recently shipped the Visual F# Tools 3.1.1 and the Visual F# Tools 3.1.2, including open contributions.

Updates to the Visual F# Tools are published on the Microsoft Download Center and are available as updates from within Visual Studio Extension Manager. 

You can follow the Visual Studio F# team on their blog and on Twitter.

 

Last edited Oct 8 at 7:17 PM by dsyme, version 68