I think it could be a good idea, but honestly, I don't have any pain with the current packaging method or have a real need for source packages.Note that source-only, no-binary packaging would preclude using FSharpx in C#/VB.NET projects (well, you'd have to create an ad-hoc F# project just to host the source files, essentially reinventing the binary package), so please don't remove the binary package.About additional, beta items: we could always mark the NuGet package as pre-release ( http://nuget.codeplex.com/wikipage?title=Pre-Release%20Packages ) in the master branch and have a separate 'stable' branch (or the other way around).I usually push for fine-grained libraries, but I think something like FSharpx is an exception. It's like System.dll or mscorlib.dll or FSharp.Core.dll: a big library of fundamental, though not always related, stuff.Also, having more packages could be confusing for newcomers. For example take a look at the number of packages for Rx http://nuget.org/packages?q=rx , though I wouldn't worry too much about this.But I don't mean to sound too dogmatic. What are your pain points with the current packaging? Or how would you split things concretely?Cheers,Mauricio
About those local changes, perhaps they should be merged upstream, or there's some parameterization missing? Do you recall any particular cases?
Here are my reflexions which are based on my very particular view of the Typeclasses branch that at some point may be merged into F#x.
In files like prelude.fs the goal is to be able to define Typeclasses and include in their definition instances for predefined F# and .NET types.
Right now I would have to include and distribute the whole Fsharpx library with FParsec. I'm not sure if I (as him) would agree to do that.
Regarding the discussion between source and DLLs, stuff like this takes time to compile and may slow down significantly compilation time on the user project.
Hi all,
here are some assorted thoughts that I had while reading the conversation so far:
· Why would I want to reference only some features from FSharpX? I think code size is not an issue, but complexity is. If I was a team leader, wanting to use i.e. async features or type providers, I would not want to reference entire FSharpX, because I would not want developers to use some of the Haskell-y features of FSharpX.
(This is an example based on my preference in F# coding style, but you can imagine similar situations in other configurations – i.e. somebody wants to use lenses & monads, but only rely on standard F# library async and not accidentally use some imported extensions that they may not trust or like)
· I think many of the components can mirror standard namespace naming from .NET and F# (FSharpX.Collections, FSharpX.Async or FSharpX.Control, FSharpX.TypeProviders, FSharpX.Interoperability). I personally would really like to see more opinionated Haskell-y parts of FSharpX in a separate library which people may or may not want to reference (I think FSharpX.Functional would be a fairly adequate name).
· I also prefer just copying single (or a couple of) file(s) rather than referencing a whole library, so maybe more fine-grained organization would support this scenario (you’d know what you need to copy to get working subset).
· Finally, it might make contributing to FSharpX easier – i.e. different parts could have different main owners and they would not have to fully care/understand the rest of the project.
Though I agree there is a lot of disadvantages too...
Tomas