Open JAForbes opened 8 years ago
Excellent idea, James. I agree that the readme should explain why a specification for interoperability of common algebraic structures in JavaScript is important. I appreciate the simplicity of your proposed solution.
Yea, it seems like currently the way this repo is organized is targeting people with Haskell background coming to JS who want to do Haskell stuff in JS. And I think we should make it more approachable for people coming from JS background and just wanting to do FP in JS.
I think this talk https://www.youtube.com/watch?v=oYk8CKH7OhE by author of Elm is very related here.
@rpominov I nearly linked to that exact talk! :D
So I'm proposing a separate readme.md and spec.md. The current readme would become the spec […]
Don't forget that this will break quite a share of links that refer to individual types. I don't have a better suggestion though.
Good point, @bergus. We could preserve the headings at the bottom of the document to provide links to the new locations. For example:
Functor
See spec.md#functor.
map
methodSee spec.md#map-method.
If we do this, could the first sentence be something like Fantasy Land is **[a specification](spec.md)** for common algebraic structures in JavaScript
. The actual first sentence is not so much my concern, but a prominent link to the spec very early on seems important to me.
Perhaps a Usage
section would work equally well. Either way, I think we need to make clear that the bit you need is the spec.md
, and that the README is just for explaining why you need it
I have no objections in completely changing to more than one markdown, I think the spec has grown enough now.
I also agree it'd be nice to have a separate specification document. From an implementor's perspective, both the normal prose and spec have grown enough that it's slightly difficult to navigate.
Also, I feel moving the spec out of the README would give room to explain the API in less technical terms, to be more approachable for people less familiar with functional programming.
Also if we move actual spec in separate file we could leave image in README and it will fix issues discussed in #118. We could also have the image in spec.md but in the end of file for the same jump issue.
also it would be nice to have contributing.md too
It sounds like everyone is in agreement. Who wants to take the first step here?
I am going to bow out for the first pass because I feel like my influence on tone would be more on "what" than is appropriate here. I'll gladly provide feedback though.
Hi all! As an outsider here, but keen on the entire FL prospect, I'd be very much interested in picking this up. Shall I just throw together a PR open for criticism? Should some more solid requirements be defined?
That would be wonderful!
When looking for examples, @DrBoolean did a great job explaining some real world use cases in his egghead series
Don't forget that this will break quite a share of links that refer to individual types. I don't have a better suggestion though.
Another option could be to keep the readme and links intact, but create a user facing github-pages site, which could publish a user-friendly intro, examples, spec, implementations list etc.
The disadvantage is that this would be more work, and making changes would probably involve a build step.
@kwijibo There's always GitHub Pages + Jekyll, if a build step is necessary.
Hey, uhm, what's the status of this?
It's been three years now, and the idea is superb. So what's next? FL still doesn't have a proper way to welcome newcomers like me...
@JAForbes thank you tons. Came here from an old RxJS ticket. Your comments, which have both deep empathy and technical knowledge, are still paying dividends.
I've received a lot of feedback from devs while working on getting Mithril, Lodash and Rx to support Fantasy Land regarding the heady language used in the specification. It is intimidating and creates the impression that it won't be helpful in their work.
I personally think using precise language in a specification is exactly the right thing to do. But I do think it would be beneficial to explain what the library is, what the benefits are, who is using it, how to get started implementing it, related projects etc on the front page.
I've received a lot of feedback from non functional programmers saying a blog post I wrote really helped them see the value, and they then went on to implementing FL in their own libraries, joining the gitter etc. I think this is great! I believe we can get really far if we build a nice smooth on-ramp.
So I'm proposing a separate
readme.md
andspec.md
. The current readme would become the spec, and the new readme would be a document extolling the virtues of fantasy land, etc etc.The readme would be more colloquial (but still as precise as possible) and focus more on "how" / "why" than "what".
How does that sound?
For anyone interested, here is a few recent examples, but I've got this sort of feedback many many times:
Source
Source
Source