-
Notifications
You must be signed in to change notification settings - Fork 789
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Repo alignment - How to enable xplat workflow for easy contribution #2854
Comments
I'm +1000 for this. Enabling @7sharp9 to contribute worth any effort needed to make |
Agreed, this is important. |
At the moment Im trying to figure out how to replace the compiler installed in mono with the one just built in release, I cant see a script for that in this repo. |
I added some notes here on trying to get that fork running the TP sample: colinbull@c295f8a |
@7sharp9 @vasily-kirichenko @KevinRansom @cartermp @brettfo I've added a lengthy description of all the work I know of to be done in the area of "repo unification" up above in the issue description, plus some additional comments @KevinRansom @cartermp @brettfo You guys are the repo owners - if you don't want these things coming in to this repo, then you should say :) |
We are eager for the repos to be aligned. And are willing to make the necessary changes to make that happen. So long as our product pipeline is not broken by any changes we are good. |
Agreed with what @KevinRansom said. Let's do it. |
@KevinRansom Thanks, that's great to know. p.s. That said, I fear you may have a heart attack (joke!! I hope not!! :) ) when you see a PR proposing to integrate the machine-wide policy files for FSharp.Core installed as part of Mono... The Mono packagings of F# have always used those to unify FSharp.Core to the latest version - for better or worse.... And I assume there is code that depends on that. We can perhaps reassess that, but probably best not to do that as part of unification. So I suggest we put those under an explicit |
Let's aim instead for building FSharp.Compiler.Service in this repo. For now let's assume FSharp.LanguageService.Compiler remains a special version of this component used only by the Visual F# Tools. This is because historically there was huge pressure from Visual Studio engineering to make FSharp.LanguageService.Compiler smaller - trimming out unnecessary parts. This is one reason I didn't integrate Exprs.fs - which is unused by FLSC. Size minimization was to reduce overall address space usage in the 32-bit |
Disclaimer: not directly related to mono support in this repository. Can we move the current scripts under scripts/misc and plan for a comprehensive layout for future build scripts under scripts/build? My feeling is that we should start splitting the behemoth build.cmd into smaller independant scripts, each put in scripts/build, and have the top level build.cmd handling the main parts (setting env variables for the build conditionals, calling other .cmd, and doing the main build). This way when we start introducing FAKE script, we can focus on a smaller set of behaviour to replicate. individual scripts I could see:
I know this will make it a bit harder (but how much harder? not so much) to deal with small changes, but I don't see how the community can put effort in a big bang PR to change the whole thing at once, that will need long lead time for you guys to review / assess, while changing each small script or the top level one, one by one is definitely doable. |
@smoothdeveloper Let's keep this thread on topic please, about repo unification |
@7sharp9 I've updated the issue description with a list of all the problems that will arise because of repo unification. Specifically, if we do this unification we should go into it with our eyes open: it's important that you be aware of the inevitable problems listed above (e.g. the mess that is the Windows-specific The point is - don't assume unification is some kind of panacea. It will bring new problems of a different kind. |
Mostly we need to be able to do mono build and testing as part of normal dev work. |
@dsyme, sorry but I think it is relevant. For example people using windows (hence build.cmd) might also want to loopback on getting FCS built from this repository, hence I think we should make the effort of making any addition to build scripts (which are not straight ports from fsharp/fsharp or FCS repositories at least) in smaller scripts, and possibly .fsx already if we don't want another round of .sh / .cmd duplication. Am I making any sense? |
@smoothdeveloper Yes, it makes sense. But whether the scripts are large or small, how they are named, which directories they go in etc. is a detail we will sort out along the way. |
Yes, that's crucial. @7sharp9's criteria is to be able to build and dev the core components that flow into Xamarin Studio (Visual Studio for Mac) using this repo (rather than making contributions here and then flowing them into the FCS repo). And in general to have a first class OSX contribution story for this repo. BTW I think I need to get myself a Mac.... My kids destroyed the last one :) |
I thiink I was misunderstood. I was meaning adding something like this in this repo:
This:
would build the separate FSharp.LanguageService.Compiler DLL from the same code for use by VS, obeying whatever extra requirements Microsoft demand (make stuff internal, minimize size or whatever) So on OSX Dave's workflow would simply be repeated:
and a feed of FSharp.Compiler.Service nuget would be available from AppVeyor CI of this repo |
Ah. I see. That's great. But we will end up building almost all the sources three times (FSharp.Compiler, FSharp.LanguageService.Compiler and FCS). However, if we, who use VS, won't have to build FCS in our workflow (not having it in VisualFSharp solution, basically), that's OK. |
Why does there have to be 3 compilers built, is |
The non windows workflow would also need a compiler built and installed as well as FCS, unless there is a way of unifying both of those, or specifically decoupling the FCS parts as a facade over the compiler. |
yes
We don't need the latest one when working in VS (as @vasily-kirichenko says) and indeed it would help if the second one was just adding to the compiler itself instead of compiling again (I wonder if the reason is also related to internals?). |
@dsyme I added this to the top too:
|
We can maybe reduce it to two or one - perhaps almost immediately after unification or even during it. It depends in part if Microsoft continue to want internal symbols only in the VS bits they ship. If they are ok with dropping this requirement - and are ok with slightly larger overall binary size - then I reckon we can just use one FSharp.Compiler.Service.dll and nothing else. |
Or ...
We can move vsintegration into a separate repo. If Iwe were to create a new repo … github.com\microsoft\fsharp we could move the cross platform compiler there. Limit visualfsharptools to the vsintegration and windows packaging that might make a useful factoring.
There would be internal work we have to do to support that … but perhaps it now makes sense and will at least simplify some of the build and test complexity.
Kevin
|
I think we all realise that any major change to code organisation is not going to happen in a reasonable time. To me the first few steps could be:
|
@7sharp9 @vasily-kirichenko The first of the many work items here has been completed - we now have a I will now work on |
@cartermp Note that an unfortunate side-effect of bringing FCS development into this repo would be bringing in 114 issues from that repo (though we could continue to track them in the other repo for a while while we trimmed them down). I'll try to close out many issues there beforehand. That's one reason I've been going through the VFT issue list today/yesterday - to trim out some old issues and make a bit of room :) |
@dsyme All good to me. More than happy to triage them so we can really know where we're at. |
Ive closed some of mine that are no longer relevant or Ive forgotten
context, I think Im one of the biggest culprits :-)
…On 29 April 2017 at 17:26, Phillip Carter ***@***.***> wrote:
@dsyme <https://github.com/dsyme> All good to me. More than happy to
triage them so we can really know where we're at.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2854 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAj7ylv34xQe8S2Qqixl7x6Lh61e4EWNks5r02S8gaJpZM4M9A3D>
.
|
@7sharp9 @vasily-kirichenko Thank you so much for closing the swathes of old bugs, it's really important to keep things ship-shape |
Just to mention that I'm working on a nasty PR to bring the FCS changes back into Microsoft/visualfsharp, see #2951 There are a bunch of complications with this - there are subtle differences between FSharp.Compiler.Service.dll (public API), FSharp.Compiler.dll (internal to fsc.exe and fsi.exe) and FSharp.LanguageService.Compiler.dll (internal to VS, some things trimmed out) but it's getting there. |
Just checking in / resurrecting this thread slightly. Im just reading the build build on OS X and was wondering if there is a way of building without using mono, e.g. with only a netstandard installation. A lot of people are getting interested in F# because of x-platform stability from netstandard and are probably not as enthralled by having to install "mono". I know its possible to build FCS using only net standard so this should also be possible here. |
I'm currently working on converting our projects over to use the new Microsoft.NET.Sdk which means you'd be able to |
Right now .NET Framework/Mono is still required to do any major testing, tooling work etc. in this repo BuildFromSource should work without .NET Framework/Mono. But there's no testing. If it helps Mono has been rock solid for our purposes in this repo lately. I haven't reported a bugzilla bug in about a year I think, and the only issues we've had have been xbiuld --> msbuild (which is about convergence) And performance is good on my Mac. |
Where are we with this, are we near to killing fsharp/fsharp? |
This has progressed a lot, though not precisely as the checklist implies:
Additionally:
I'm going to write another RFC for archiving |
I think we can reasonably close this out. FCS is now incorporated into the root of the repo and builds as a package, with release notes and docs underway. All the mono stuff is now irrelevant since we yote mono out of this repo and are unifying on the .NET SDK. The only remaining piece is emitting Fable stuff, but frankly I think Fable has been getting along fine enough without us ruining their day. Not that there aren't issues, but we've had multiple folks contribute compiler features without ever using Windows, so I consider that a success. |
@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
andsetup
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 eventuallyHere's a list of things we can reasonably unify:
setup
andvsintegration
directories). fsharp/fsharp could then be a mirror of this repoVarious problem with this plan:
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.
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.
The text was updated successfully, but these errors were encountered: