-
Notifications
You must be signed in to change notification settings - Fork 292
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
Create Fable.Import package #930
Comments
@alfonsogarciacaro Fable.Core.Extensions.fs also has dependency on Fable.Import.JS.Promise. We can either keep the whole Fable.Import.JS or just the Promise/PromiseLike portion of it, which is unlikely to change. |
I think this would be a good idea. I would go for three different pacakges but users might be confused about the need of importing JS + Browser and JS + Node. As in JavaScript world we always say just Browser or Node env. |
I think |
Time to make seperate repos for Fable.Node and Fable.Browser? |
I was thinking to put all the bindings in https://github.com/fable-typed/types to build on @mizzle-mo's work :) |
Can someone ELI5 this: what's the benefit of the monorepo? What's wrong with repo per lib? |
Ok, I'll give it a go ;)
Please note I'm talking about pure bindings (in Typescript parlance, declarations): type definitions with no code. These will be distributed only as |
I wrote a lengthy reply, but screw it... I can't behind any of this, but it's irrelevant. One thing I will say is: ownership matters - for some of us this not just a hobby. I've seen a bindings we've contributed early on disappear because the repo in question was a kitchen sink managed by a committee and it's just not acceptable from business continuity perspective. |
Of course I won't be pointing a 🔫 at anybody to force them push their bindings to a mono-repo 😉 I see compatible having a single repo with Fable-community maintained bindings while other contributors publish and maintain packages on their own. It's possible that right now the fable-typed repo contains some bindings created by external contributors. I totally agree these bindings should be removed if the original creators prefer to keep them in their own repos. |
Totally agree with @alfonsogarciacaro. The idea was to put them all together and try to build community around it while giving consumers a primary place to look first. I definitely don't want to turn anyone off of the idea. Perhaps the better approach is to delete all the 3rd party stuff and ask them politely. I didn't change any of the authors in the files though, and have no intention of doing so. Right now I see it more as a fork to aggregate them, but I definitely don't want to upset anyone, especially @et1975 |
The license gives you the right, so that's not the issue. On the other hand, community involvement does not require a monorepo... anyone can make a PR. In terms of finding the bindings... how do you find any F# libs? nuget.org and npm both have search, and then there's the "awesome" list... |
I search npm and nuget very rarely. Usually I will either search using Google or Github.com first. I don't want to search nuget as the descriptions usually suck. When it comes to types, I want to know how recently they were updated, how often they are being updated before I even try to install it. I could be weird though. That being said, I was worried about it being counter productive as well if you go back and look at the Gitter messages where I proposed it. I think I actually used the words "on the fence" as to whether it would be a waste of time or not. I don't want to waste time at all. I'm still on the fence as to it being a waste of time which is why I haven't done any work on it. Ideally it would be automated, so I could just type |
Automating the bindings is itself not a very good idea. |
@et1975 I think this comes from a misunderstanding, I may have given the impression that I wanted to put in a mono repo the bindings from every contributor. If that's the case, I apologize because it was not my intention. I was thinking mainly in all the bindings that I originally created with ts2fable (and tweaked later) and are currently scattered through the fable-compiler.org. As commented above, 3rd party bindings shouldn't be in that repo unless original authors want to do so (forks make no sense to me). I've mentioned some times I want to depersonalize Fable to ensure of the continuity of the project and for this I'd like to build a team where people work and take decisions together (I think we're on the right path for that). But by no means I want Fable to have a closed ecosystem where everything has go through a committee, everybody should be free to contribute to Fable in the best way they see fit. About visibility, it's true we can use Nuget search or fable-awesome, but I still think putting all fable-compiler.org bindings in the same repo will help uniform best practices, especially at this point when we're deciding what's the best way to write the bindings. @mizzle-mo On automation, even if we reach the point were translations with ts2fable are immediately usable (which would be awesome) I still think we'd want to have our own packages for version management. If I create a library which depends on, say, Leaflet bindings, I want the consumer to use the same bindings (not others they translated from a different .d.ts declaration or with a different version of ts2fable). |
@alfonsogarciacaro Any updates here? I'd like to contribute some bindings for socket.io when it's ready |
@jgrund For now I just forked fable-typed/types here as I don't have rights to push to the original repos. I was thinking to move Browser and Node bindings there and solve the issues mentioned above (remove 3rd party bindings) and then send a PR to fable-typed. But we can also discuss if it's better to keep the bindings in the fable-compiler org 👍 |
👍 for pushing browser / node bindings and removing 3rd party ones. I think extracting them out makes sense in terms of updating fable without being pinned to a specific binding version. |
@ncave has proposed something very sensible here. Quoting:
It does make a lot of sense. In Fable first versions I put everything in a single module because referencing .dlls was done manually and it was cumbersome. But now we have Paket! So adding dependencies it's just a matter of adding the name in the paket.dependencies/paket.references files. Fable.Core is tightly coupled with the Fable.Compiler, but Fable.Import types are not, so splitting them will allow us to update the bindings more frequently without affecting the the pair Fable.Core/Fable.Compiler.
The only problem is Fable.Core.JsInterop.importDynamic which has a dependency on
Fable.Import.JS.Promise
, I guess we'll have to move it. And there's another question. Should we have a single package for JS, Browser and Node bindings or rather three different packages?The text was updated successfully, but these errors were encountered: