Starting an F# + .NET Core Development Group

We propose to have a group focused to improve the F# story on .NET Core and integration in the .NET Core SDK.

Add yourself in or join #dotnetcore channel in FSF slack for info.

Summary

The goal is to improve the experience for:

  • New users
  • Existing projects in ecosystem who want to add .NET Core support

Because the goal is about the whole experience, lots of different areas/projects are interested.

It’s not about using .NET Core, but about contributing to so F# will be awesome to use on the .NET Core and .NET Core SDK.

Want to help?

Everyone can start contribute by him/herself already, everything is open source.

But the topic is new and there were also various changes in the previous months (netstandard/project.json), so it’s a bit difficult to get the current status, where start, where is going.

To help new contributors, we’ll do some quick session focused on contribuing about:

  • Foundamentals:
    • Topics like .net core/coreclr/netstandard/msbuild/sdk/ide
    • How the sdk and f# integration works, from zero to final executable/package
  • Overview of areas who require help
    • Like compiler/ide/tooling/docs/testing/libraries/etc
    • Everyone has their own agenda and definition of fun
  • Quickstart how to hack dotnet sdk about f# integration
    • from clone repo -> hack -> check if works.
    • Same for core project too
  • Weekly chat about progress

Features and roadmap

This continue the works done in the past.

For example .NET Core Sdk preview2 already support F# ootb for most use cases, and some projects in ecosystem already added .NET Core (or .NET Standard ) support.

But working <> awesome to use.

The lists are just to give an idea of the todo. Some features are already implemented, some not, some are partial.

  • Basics list of features needed for basic usage.
  • Additionals are nice to have, some already works in preview2 (like docker)

Basics

  • Support for .NET Core SDK preview3 (next version)
  • MSBUILD based, fsproj
    • Sdk+compiler from nuget package
  • Supported OS: same as .NET Core Sdk
  • Must be possibile to use normal workflow from sdk
    • restore/build/run/pack/publish/test
    • Support for multi framework targeting (crossgen)
  • Should be possibile to use it in parallel to old project system
  • Works and helps the ecosystem
    • Paket
    • FAKE
    • Fable
    • Ionide
  • IDE Support: VS Code/FSAC/VS
    • Intellisense
    • Debugging
    • Manually edit of project file works
  • Documentation, for example
    • Migration from old-fsproj (maybe with a tool too)
    • From zero to standalone console app in ide
    • From zero to library as nuget package (multiple frameworks)
  • CI, travis/appveyor
  • Should support other frameworks/profiles: Mono, .NET, PCL
  • Help community projects already supporting preview2, like
    • Suave
    • Argu
  • F# Interactive (fsi)
  • Templates
    • normal use case
    • integrated in expected templates generators
      • dotnet new
      • Forge
      • ProjectScaffolding
  • Single FSharp.Core package with multiple target frameworks.

Additionals

  • As normal as possibile, to easier interoperate with C# on same solution
    • Reference C# project
    • Be referenced by C# project
  • CI testing of different os
  • Use the new features of the sdk where useful
    • like sdk tools to remove the need of bootstrapping (dotnet reveal)
  • Docker examples (both linux and windows)
  • Mono, Xamarin, IOS, etc
  • List f# project who support or doesnt support netstandard1.6
  • Type Providers: require netstandard2.0

Enrico Sada, Dave Thomas