Skip to content

Repo alignment - How to enable xplat workflow for easy contribution #2854

@7sharp9

Description

@7sharp9

@dsyme says:

We would like to make it possible to contribute to core components that underlie the OSX and Linux experiences for F# by contributing to this repo (rather than the historical way of routing these requests into the fsharp/fsharp and fsharp/FSharp.Compiler.Service repos. We can call this "repo alignment".

Separately, people have discussed splitting this repo - putting the "Visual F# IDE Tools" (vsintegration and setup directories) in a separate repo, and perhaps putting "FSharp.Core" in a separate directory too. For now we will assume that this will be done eventually

Here's a list of things we can reasonably unify:

  • Mono friendly fixes and hacks from fsharp/fsharp
  • Mono friendly testing from fsharp/fsharp (or replacement)
  • "make install" or equivalent from fsharp/fsharp
  • local builds of nuget packages for FSharp.Core nuget (from fsharp/fsharp)
  • local builds of nuget packages for FSharp.Compiler.Tools nuget (from fsharp/fsharp)
  • code additions in Fsharp.Compiler.Service (notably some fixes and Exprs.fs) (from fsharp/FSharp.Compiler.Service)
  • local buidls of FSharp.Compiler.Service DLL (from fsharp/FSharp.Compiler.Service)
  • some extra testing (from fsharp/FSharp.Compiler.Service)
  • local builds of nuget packages for FSharp.Compiler.Service
  • type provider authoring SDK from type provider starter pack
  • compiling FSharp.Compiler.Service as a Fable component, a highly valuable long term addition to the F# ecosystem that we don't want to bit-rot
  • make sure documentation in this repo is not skewed towards Visual Studio and Windows. There should be a strong path where neither Visual Studio nor Windows are assumed or even mentioned. OSX and Linux contributors should feel "first class"
  • rename this repo to "fsharp" (even if it continues to hold the setup and vsintegrationdirectories). fsharp/fsharp could then be a mirror of this repo
  • Move tests\service* tests into FSharp.Compiler.Unittests.dll instead of VS-only tests since they don't need any VS bits to run
  • enable running FSharp.Compiler.Unittests.dll on Mono under Jenkins
  • enable running FSharp.Tests.FSharpSuite.DrivingCoreCLR on Mono under Jenkins
  • make sure the documentation on this repo is appropriate for FSharp.Compiler.Service and fsc.exe contributors on Mono/Linux/macOS
  • make sure the testing in this repo is appropriate for contributors on Mono/Linux/macOS
  • remove or minimize the use of CMD scripting such as build.cmd

Various problem with this plan:

  • This repo becomes a logjam containing everything related to both F# core engineering and the Visual F# IDE Tools.
  • The Windows-specific nature ("feel") of this repo will still hang around while it continues to contain the Windows-specific Visual F# IDE Tools
  • The "make install" business currently uses a bunch of makefiles, and adds things like policy files for Mono's unification of FSharp.Core. It's not at all clear we want to pollute this repo with that
  • Supporting the Fable bootstrap of Fsharp.Compiler.Service adds a very new and different dimension to this repo that may blow the minds of contributors, and leave them unable to debug issues with Fable.
  • Do the new binaries and packages get signed, and if so using which strong names

Aside: this does not mean that Microsoft Visual F# Tools team become publishers of any of the alternative packagings of F# - and indeed the final "tagging" and "publishing" of these components may still be done in other repos - see this description for the actual tagging and release repos, including those used by Xamarin. This is normal. But contributions would flow into this repo.


@7sharp9 writes:

As a starting point I want to help with the type provider type input testing and implementation, as well as many other features but doing so means porting code to and from FCS and also building and installing the compiler into osx/mono.

  • I can now build and run from this repo with the resource issue: SqlDataConnection Suppresses SQLMetal Warnings #720 I think
  • To get tooling support I will need to build visualfsharp and use it in place of FCS in ionide/xs/
  • I also need to be able to install the compiler with a script, Im assuming theres one described in the readme somewhere.

So I would need two build target outputs for this repo, one for an FCS compatible build, and one for a compiler build, and a script to install into mono.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions