GithubHelp home page GithubHelp logo

saracaurel / fslang-design Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fsharp/fslang-design

0.0 0.0 0.0 2.28 MB

RFCs and docs related to the F# language design process, see https://github.com/fsharp/fslang-suggestions to submit ideas

F# 100.00%

fslang-design's Introduction

F# Language Design RFCs

RFCs (Request for Comments) and docs related to the F# language design process.

All open RFCs that have not been released live under /RFCs.

All RFCs that have been implemented in a preview of F# live under /preview.

All release language and FSharp.Core RFCs live under a folder with their respective release.

All tooling RFCs (typically for cross-cutting, cross-editor tooling) live under /tooling.

The Process:

  1. Use F# Language Suggestions to submit ideas, vote on them and discuss them.

  2. Ideas which get "approved in principle" get an RFC entry based on the template, and a corresponding RFC discussion thread

    There is currently a backlog of approved ideas. If an idea has been approved and you'd like to accelerate the creation of an RFC, send a PR creating the RFC document for any approved-in-principle issue.
    First in first served. To "grab the token" send a PR doing nothing but creating or naming the RFC file, and then fill in the further details with additional commits to the PR.

    • to pick the RFC numbered identifier, you can run dotnet fsi find.next.id.fsx
    • to name the file, tooling RFCs are prefixed with FST-, language RFC are prefixed with FS-, use - and lower casing (relaxed for code identifiers), giving descriptive name
    • the file location is always under RFCs and get moved by owners of the repository when it ships in a preview or a release.
  3. Implementations and testing are submitted to the dotnet/fsharp repository.

When RFCs are implemented and a version of F# is revved, the RFCs which correspond to the F# version they were implemented in are archived under the appropriate folder.

Language Update Release Trains

  1. Delivery of language features is via RFCs plus implementations submitted to https://github.com/dotnet/fsharp.

  2. New features that meet our quality bar are then merged and placed beyond a preview flag in the F# compiler and FSharp.Core.

  3. When we have a handful of 100% “ready, tested and completed” FSharp.Core and F# Language features in preview that aren't "too minor", then we will bump the language version and begin tactical work to release them in a few months.

  4. New releases of F# typically align with a .NET and/or Visual Studio version.

Who is in Charge?

Historically the designer of F# has been Don Syme (@dsyme). Practically speaking, today most of the design process operates through the efforts of contributors, overseen by those with commit rights on this repository, who are curently @vzarytovskii, @dsyme, @cartermp, @baronfel, and @abelbraaksma. Much of the work happens by contributions via RFCs and most features now proceed from initial approval all the way to implementation through community and enterprise contributions. The planning and progress process for features is intended to be transparent and participative.

Throughout feature development the needs of all stakeholders can be taken into account, e.g. the needs of those delivering tooling or long-term support for F#. Together with the F# community, the overseers of the design process will continue to refine this process based on community and delivery needs.

Roadmap and Areas of Priority Work

Any or all of the approved-in-principle items are eligible to catch a release train. That is as good as it gets for a "roadmap" for the language design.

There is a list of "proposed priority" approved language design items. This is not a roadmap, because other people will choose to prioritize other approved items, and is also subject to change and edit. You can find that list here: https://github.com/fsharp/fslang-suggestions/labels/proposed-priority.

Style Guide

The F# style guide is hosted as part of the .NET docs for F# and by default Fantomas aims to implement this style guide.

The design process for raising issues arising about this style guide is managed via issues in this repository. Issues are noted by [style-guide] in the title.

The style guide itself is adjusted via PRs to the style guide doc however discussion should happen here.

Adjustments to the style guide should generally only be made with consideration about their implementability in Fantomas, and if an adjustment is approved you should be prepared to contribute a matching pull request to Fantomas.

The decision maker for the style guide is @dsyme, with input/veto from @nojaf (current maintainer of Fantomas) and input from all interested parties.

Code of Conduct

This repository is governed by the Contributor Covenant Code of Conduct.

We pledge to be overt in our openness, welcoming all people to contribute, and pledging in return to value them as whole human beings and to foster an atmosphere of kindness, cooperation, and understanding.

fslang-design's People

Contributors

dsyme avatar cartermp avatar happypig375 avatar smoothdeveloper avatar neoeinstein avatar jwosty avatar vzarytovskii avatar patrickmcdonald avatar tihan avatar kevinransom avatar kurtschelfthout avatar abonie avatar nelson-wu avatar whiteblackgoose avatar swoorup avatar baronfel avatar forki avatar onurgumus avatar liboz avatar tarmil avatar mexx avatar latkin avatar aviavni avatar gusty avatar 0x53a avatar pblasucci avatar charlesroddie avatar saul avatar enricosada avatar 7sharp9 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.