fsprojects / FSharp.TypeProviders.SDK

The SDK for creating F# type providers
https://fsprojects.github.io/FSharp.TypeProviders.SDK/
MIT License
298 stars 94 forks source link

Project direction #13

Closed mavnn closed 10 years ago

mavnn commented 10 years ago

@ovatsus mentioned that he thought that the NuGet package should contain binaries (with instructions on how to build a Type Provider with them), while other people have suggested that it should be a project template rather than a NuGet package at all. What do we want the community suggestion for building a type provider to be?

Reference these files as code, which seems to have been the preferred advise so far and what this project currently provides?

Move to a binary distribution with tutorials for using external dlls in Type Providers?

Provide a project template (already including either the binary or source of ProvidedTypes) for people to start from and modify?

Some combination of the above?

It would be best if we could decide before we get too carried away with documentation etc...

Thoughts? @dsyme @tpetricek @TIHan?

ghost commented 10 years ago

I would like to see a project template and/or wizard for the whole "F# Community Library Scaffolding" thing, something which is ready to check in to GitHub and push to nuget.

So if we do templates then:

(a) F# Type Provider Library (b) F# Type Provider Community Component (with nuget package and documentation scaffolding) (c) F# Community Component (with nuget package and documentation scaffolding)

I'm not a big fan of binary components for making type providers because it increases the number of DLLs in the resulting component (which should normally best be a DesignTime DLL + a set of Runtime DLLs - any additional DLLs causing headaches)

ovatsus commented 10 years ago

Probably having a TP version of https://github.com/fsprojects/FSharp.ProjectScaffold would be the best

TIHan commented 10 years ago

I agree that a project scaffold mentioned above would be a good idea.

The only suggestion I have is that we should figure out how to get a basic generative type provider working without having to manually put in the code to resolve assemblies; that's one of the hurdles. I don't know much about FSharp.Data's AssemblyResolver/AssemblyReplacer, but something like this that is included would be very nice.

mavnn commented 10 years ago

I've not had time to do anything on this over the new year, but I have been thinking about it a bit. I'm more leaning towards the idea that we have a TypeProvider.Scaffold project based on @forki 's FSharp.Management project - and leave this one for the tutorials and introductory material. I can't see combining both in one repository working well for anyone.

Thoughts? And if I do split these out, where would people like to see the 'definitive' ProvidedTypes.fs - here, distributed as a code only nuget, or in the project template?

forki commented 10 years ago

There is also https://github.com/fsprojects/FSharp.Configuration which has the latest setup.

mavnn commented 10 years ago

Sorry - that should have been PSharp.Configuration above, rather than Management.

forki commented 10 years ago

https://github.com/fsprojects/FSharp.Management has basically the same setup. A little bit more complicated

ovatsus commented 10 years ago

I would leave the ProvidedTypes in the project scafold

mavnn commented 10 years ago

After some discussion, for the moment this project is staying as a collection point for tutorials (I'll add some more fairly shortly) and a code only nuget package.

A TP project scaffold that depended on this so it always had the latest ProvidedTypes could be quite useful as a separate project.