-
Notifications
You must be signed in to change notification settings - Fork 0
Write the Context/Narrative #50
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
Closed
Closed
Changes from all commits
Commits
Show all changes
139 commits
Select commit
Hold shift + click to select a range
3ee5aca
Make Context/Narrative its own folder with ReadMe file
JordanMartinez c4e122a
Merge branch 'master' of github.com:chexxor/purescript-documentation-…
JordanMartinez 3f8dee8
Define file outline and make initial go at defining 'good documentation'
JordanMartinez 9947e0e
Update number of dimensions to 4 and reword it as 'factors'
JordanMartinez 8a645e8
Fix rendering of sentence
JordanMartinez d406815
Improve 'large' and 'frequent' breaking changes explanation
JordanMartinez cc7ce99
Clean up Mediums of Documentation section
JordanMartinez c30cb59
Move conclusion down into proper section
JordanMartinez 4972403
Clean up and further expand criteria for good documentation
JordanMartinez eb6cf5a
Move questions to 'The Hook' characteristics & refer to them in criteria
JordanMartinez fb96dda
Add code examples are prioritized over other mediums
JordanMartinez 2f2e9cf
Include TDT's note about being against literate programming as docs
JordanMartinez aa9a689
Represent source accurately: "A few people", not "many people"
JordanMartinez f90789c
Merge Documentation's maintenance and accuracy sections
JordanMartinez 9c7451b
Clean up criteria section
JordanMartinez bc50447
Include note about automating tasks; add headers to section
JordanMartinez 186e20f
Add list of learning resources and when they appeared
JordanMartinez 04c06d3
Add headers and outline for next parts of the file
JordanMartinez 98e9e54
Review and revise context-narrative
chexxor a632222
Adjust per review
chexxor 056e6e7
Adjust the outline part per review
chexxor 9945e6b
Update State-of-PureScript-Documentation-2019.md
chexxor 2a657c7
Change to use "it"
chexxor 533d14a
Update State-of-PureScript-Documentation-2019.md
chexxor 6778d43
Merge pull request #51 from chexxor/chexxor-context-narrative-review
JordanMartinez d125032
Summarize why PS is lacking; explain "avoid (success at all costs)"
JordanMartinez 7a373b2
Reword some of the productivity examples
JordanMartinez 7c5b9dd
Summarize 'contributors spread thin' issue in why PS is lacking docs
JordanMartinez d608f90
Convert links into a list of links
JordanMartinez c794b4a
Fix formatting to make content more readable
JordanMartinez c6a8fca
Keep the 'why not just' pattern going
JordanMartinez 24f5ace
Include note about the cost of supporting new maintainers
JordanMartinez 66ca272
Explain why a roadmap is lacking
JordanMartinez 71f01ad
Update summary of 'why lacking docs' section
JordanMartinez 1831a73
Cleanup the roadmap section; address language specification separately
JordanMartinez 6d7421c
Explain Slack issue and FP best practices issue
JordanMartinez e6380aa
Prevent possible misinterpretations of core contributors' quotes
JordanMartinez 1f53502
Emphasize content's idea by no longer using adjectives
JordanMartinez 296ba0e
Explain `v1.0` ecosystem problem using less words
JordanMartinez bbdeab8
Reword explanation on why a roadmap is hard to define
JordanMartinez 166524d
Add a few questions for core contributors to answer
JordanMartinez 16c6fb0
Ask core contributors for non-goals for 2019
JordanMartinez a0799b5
Convert questions into copy-and-pasteable format for conveniency
JordanMartinez e9f6e21
Fix spelling errors
JordanMartinez 7d076c8
Clarify who gets potential core contributor support
JordanMartinez 1d62632
Document learning paths to PureScript visually
JordanMartinez 47836aa
Add initial table of helpful learning resources
JordanMartinez 2fe4e61
Rework learning paths to remove FP concepts from JS->PS path description
JordanMartinez 985edd3
Remove redundancy on header: core contribs spread thin
JordanMartinez 8e78c18
Rewrite 'not the next mainstream language' section
JordanMartinez b75fa45
Include question about automating some of the maintenance work
JordanMartinez 251e745
Change 'many' to 'few'; briefly explain docs aren't current focus
JordanMartinez 32fc63e
Make momentum the focus of issue
JordanMartinez 118e06c
Fix typo
JordanMartinez 85fbfdd
Reorder points explaining v1.0 ecosystem issues; expand one one point
JordanMartinez 370e9f2
Add breaking changes as another reason for why docs are lacking
JordanMartinez 0bfb50f
Convert 'things' to 'libraries and docs'
JordanMartinez 6be5259
Merge pull request #54 from chexxor/core-contributors-section
JordanMartinez b1e1806
Include note about automation possibly helping; cite interpretations
JordanMartinez 3d0bc5e
Focus on unchanging fact that learning FP will always be difficult
JordanMartinez 05f406c
Cite 'knowing whom to trust / supporting maintainers' section
JordanMartinez b3fb96d
Cite 'brekaing changes outdates docs' section
JordanMartinez 5176cdd
Fix typos
JordanMartinez 7560940
Cite "why a v1.0 hasn't been made yet" sources
JordanMartinez 87bd948
Cite 'avoid success at all costs' meaning section
JordanMartinez 25a9c96
Write a summary to 'why docs are lacking'; address Slack issue more
JordanMartinez dbe083f
Cite Slack as docs section
JordanMartinez 03554c7
Add question relating to integrating PS with JS build tools
JordanMartinez 8fe78a0
Clean up 'best practices issue' section and cite it
JordanMartinez 0596b5d
Include section on PS site privileges; thank core contribs, ask if ok
JordanMartinez 4955490
Clarify who 'we' is; provide "code as examples" examples
JordanMartinez d42329f
Remove other untested assumption (keep it simple)
JordanMartinez 2792690
Encourage people to repost questions on SO after answered
JordanMartinez 925b912
Fix typo
JordanMartinez 1173d2a
Add Gary's full name
JordanMartinez 8451a60
Add a stronger break to section via header; reorder point
JordanMartinez 6e32cd0
Reword sentence to include idea of screening possible maintainers
JordanMartinez 8dc679e
Include note about Bower's OOM error stopping doc publishing
JordanMartinez 41063be
Add point: 'breaking changes' waste cc's time by updating ecosystem
JordanMartinez c565999
Slightly expand 'non-bc-affected questions non-CC people can answer'
JordanMartinez 03795f4
Fix typo
JordanMartinez b5d39ce
Handle citations/sources for bower OOM section better
JordanMartinez 5253d91
Convert SO to StackOverflow
JordanMartinez 535f781
Include Gary's point about breaking changes occurring less frequently.
JordanMartinez e345c04
Fix numerous citations: cite correct section in All Interpretations file
JordanMartinez 690aaeb
Rename header to focus on real issue: documentation publishing
JordanMartinez 349af8c
Add summary (anchor link) to section's preface
JordanMartinez 8ccd236
Forewarn learners that PS is mainly for front-end
JordanMartinez 640f316
Rename header: support system not build structured persistent docs
JordanMartinez 3380972
Rephrase 'avoid success at all costs' to 'value power over popularity'
JordanMartinez 0be6207
Convert notion of 'costs' into notions of 'power'
JordanMartinez 164b36e
Use Alex's view of the OpenCollective situation (I agree)
JordanMartinez 15cd09d
Port summary of 'why docs are lacking' to start of the section
JordanMartinez df0f7bc
Elaborate 'why docs lacking' summary; integrate with links to sections
JordanMartinez f63b84c
Rephrase: breaking changes are the root issue, not doc sitaution
JordanMartinez 0fabba1
Merge pull request #55 from chexxor/new-learners-section
JordanMartinez 382c831
Merge pull request #53 from chexxor/why-docs-are-lacking
JordanMartinez 60d6612
Clarify the Purpose in the context/narrative (#60)
chexxor 2f4ae26
Replace probably offensive/hypocritcal summary statement
JordanMartinez 081bb57
Qualify parties who are concerned about PS docs (#64)
chexxor 4c7b135
Note the few number of sources for "good" docs (#63)
chexxor 0c798ab
Port 'what is good docs anyway' section into own file and backlink to it
JordanMartinez ab2fe59
Move less important information to the bottom
JordanMartinez 1db1533
Rerender the 'only comes from two blog posts' concern
JordanMartinez 730dfae
Port 'why docs are lacking' section to own file but keep initial summary
JordanMartinez dbd796c
Remove 'solution' aspect of 'why docs are lacking' header
JordanMartinez a49c218
Promote 'FP best practices' summary to top of 'why docs lacking' section
JordanMartinez f9fbd81
Move 'FP best practices' details section into 'why docs lacking' file
JordanMartinez 59f1d34
Move 'OOM error' & 'lack of structured docs' to 'why docs lacking' file
JordanMartinez d3d0519
Reuse Alex's rendering that highlight missing doc types
JordanMartinez dd988e3
Add infrastructure bottleneck point to summary rather than explain it
JordanMartinez 2f9bc27
Remove original outline to help guide documentation structure
JordanMartinez 462ad29
Provide subtitle to Core Contributors section
JordanMartinez 708e543
Add another reason for notifying us: wrong doc type
JordanMartinez 593713d
Backlink to 'Good Documentation.md' file to answer Doc Writers questions
JordanMartinez bec564a
Move 'is there hope' section to bottom: will become 'solutions' section
JordanMartinez 6943085
Group related audiences into new section (for ToC purposes)
JordanMartinez 50def88
Add "post your solution" section back in; finish summary with hope
JordanMartinez 57f9f37
Move 'our ideas' section into own file
JordanMartinez f974b9a
Document ACME doc project idea
JordanMartinez dc8531b
Reformat ideas into new structure
JordanMartinez 052a9ec
Convert SO reask-reanswer to new outcome structure
JordanMartinez 02917b9
Convert build-related problems & solutions into new outcome format
JordanMartinez 13b0826
Convert 'cookbook' idea into new outcome format
JordanMartinez c42bc35
Convert Bindings Library guide to new outcome format
JordanMartinez 0c78820
Generate 'our ideas' ToC
JordanMartinez de522ec
Generate 'state of ps docs' ToC
JordanMartinez a4e919f
Move OOM section to 'outdated' section
JordanMartinez 461e9a5
Update header levels by reducing them by one: 'why docs lacking' file
JordanMartinez 91a7021
Generate 'why docs are lacking' ToC
JordanMartinez a610cf6
Decrease header levels in 'good documentation.md' file
JordanMartinez 9ee1a86
Generate ToC for 'good documentation.md' file
JordanMartinez 26c4a60
Adjust document's purpose
JordanMartinez 6bafbe6
Merge pull request #66 from chexxor/updateToNewStructure
JordanMartinez f85df75
Change header to emphasize the criteria definition of section
JordanMartinez b487c60
Clarify: do not understand 'doc types' table as linear progression
JordanMartinez fc1460b
Fix typo: 'whould' -> 'would'
JordanMartinez ed01b07
Document idea about improving testing libraries
JordanMartinez 50351c1
Header revising in context/narrative (#68)
chexxor File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,135 @@ | ||
| # Good Documentation | ||
|
|
||
| - [What is "Good" Documentation Anyway?](#what-is-good-documentation-anyway) | ||
| - [The Types of Documentation](#the-types-of-documentation) | ||
| - [The Documentation's Intended Audience](#the-documentations-intended-audience) | ||
| - [Maintaining Documentation's Accuracy](#maintaining-documentations-accuracy) | ||
| - [The "Size" of a Change](#the-size-of-a-change) | ||
| - [The "Frequency" of a Change](#the-frequency-of-a-change) | ||
| - [How to Make Maintenance Easier](#how-to-make-maintenance-easier) | ||
| - [Criteria for "Good" Documentation](#criteria-for-good-documentation) | ||
|
|
||
| (The above Table of Contents was generated by: http://tableofcontent.eu) | ||
|
|
||
| ## What is "Good" Documentation Anyway? | ||
|
|
||
| Did someone ever teach you how to write "good" documentation? Probably not - you likely just wrote what came to mind and hoped it was good enough. | ||
|
|
||
| Because of this, it's useful to learn a definition of good documentation and understand why it's defined that way. | ||
|
|
||
| Essentially, there are 3 factors that affect whether documentation is "good" or not. | ||
| 1. Its intended audience | ||
| 2. Its type: the question being answered, targeting a specific subsection of the audience | ||
| 3. How accurately it reflects the desired version of the code/project | ||
|
|
||
| It's important to note that this section is sourced from only two blog posts, [What Nobody Tells You About Documentation](https://www.divio.com/blog/documentation/) and [Teach, Don't Tell](http://stevelosh.com/blog/2013/09/teach-dont-tell/). As we learn more this section might change in significant ways, so any conclusions we draw should be kept "flexible". | ||
|
|
||
| ## The Types of Documentation | ||
|
|
||
| First, there are 5 types of documentation that target specific phases of a learner's experience (as explained in [What Nobody Tells You About Documentation](https://www.divio.com/blog/documentation/) and [Teach, Don't Tell](http://stevelosh.com/blog/2013/09/teach-dont-tell/)) | ||
|
|
||
| | Learner's Phase | Type | Analogy | Characteristics | ||
| | -- | -- | -- | -- | | ||
| | Curious Outsider | The Hook | Selling a product to a potential customer | Answers these questions: <ul><li>What is this thing? / What problem does it solve?</li><li>Why whould I care? / How is this relevant to me for my purposes? / Who should not care?</li><li>How long will it take to learn it and how difficult is the learning curve?</li><li>Where do I go to get started / learn how to use this?</li></ul> | ||
| | Potential User | Getting Started | Teaching a child how to cook | <ul><li>Focuses on the learner 'doing' stuff, not 'explaining' stuff to the learner</li><li>Provides a small simple working example that teaches the basics</li><li>New learners experience an 'I can use this now!' moment by the end</li><li>Focuses on concrete tasks, not abstract concepts</li><li>Does not use jargon</li><li>Explains only what is necessary and cuts out all else</li><li>Avoids explaining deeper concepts or different ways of doing the same thing</li></ul> | ||
| | New User | How-To Guides | Following a cookbook's recipe | <ul><li>Achieves some goal or solves a problem</li><li>States the pre-requisites one needs to have before starting (not a Getting Started Guide)</li><li>The Guide follows a clearly-labeled step-by-step process</li><li>By following the steps, one reproduces the same results without fail</li><li>Explains the different ways one can achieve the same goal</li><li>Explains only what is necessary</li></ul> | ||
| | Active User | Reference | Reading an encyclopedia | <ul><li>Concise explanation of each piece of the code</li><li>The structure of the reference mirrors the structure of the code it documents</li><li>Formatting is consistent throughout the material</li></ul> | ||
| | Experienced User | Explanation | Listening to a CEO answer questions about his company | <ul><li>Explains the context/history</li><li>Explains the significant design decisions made, their alternativees, and the reasons one was chosen over another</li><li>Implies where things could be improved, expanded, refined, etc.</li></ul> | ||
chexxor marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| Moreover, there are clear examples of "bad" documentation (as explained in [Teach, Don't Tell](http://stevelosh.com/blog/2013/09/teach-dont-tell/)): | ||
|
|
||
| | Documentation Source | Why it's bad | | ||
| | -- | -- | | ||
| | Source Code | Only useful once you are already familiar with it | ||
| | Test Code | While it uses the code, it tends to focus on edge cases, not normal cases, and may not use all possible options/configurations. | ||
| | API docs | One must know the name of the function/value to be able to read its documentation. Most won't know the name until you teach it to them. Likewise, people don't learn by reading alphabetized lists of disconnected information | ||
| | Wiki | Content is usually not written by the code's authors, but by multiple 3rd-party people. There are often multiple disconnected voices throughout the material. It's like asking a student to write his own lesson plan. | ||
|
|
||
| ## The Documentation's Intended Audience | ||
|
|
||
| Second, the number of intended audiences can vary greatly. For example, here are different ways of categorizing them: | ||
| - The language/paradigms they primarily use and think in (e.g. JavaScript, Ruby, Haskell; lazy, strict; OO, FP; etc.) | ||
| - The amount of experience they have (e.g. never coded before, junior, senior, etc.) | ||
| - The programs they are looking to create (e.g. games, financial applications, cryptography, etc.) | ||
|
|
||
| Writing documentation that targets JavaScript-background junior developers who want to write games will focus on some things, exclude others, and order its content in a way that makes most sense to that purpose. | ||
|
|
||
| As a result, others who read the resulting documentation will consider it "poor" in some aspect: | ||
| - If one comes from a non-JavaScript language, one might find references to features in JavaScript confusing: "They used the concept of 'prototypes' to explain something, but that left me even more confused..." ~ a Java developer | ||
| - If one comes from a different experience level, one might have unanswered questions: "They didn't even mention what the performance trade-offs for specific libraries were..." ~ a senior developer | ||
| - If one has a different goal in mind, some crucial libraries might never be covered: "They didn't explain how I can make my Bitcoin client cryptographically secure..." | ||
|
|
||
| ## Maintaining Documentation's Accuracy | ||
|
|
||
| Third, documentation becomes outdated/inaccurate when the thing being documented changes in two ways: | ||
| - the 'size' of a change | ||
| - the 'frequency' of changes | ||
|
|
||
| ### The "Size" of a Change | ||
|
|
||
| The 'size' of a change can decrease its usefulness. | ||
|
|
||
| | "Size" | Example | ||
| | -- | -- | | ||
| | Small | A bug fix that affects little else. | ||
| | Medium | A new feature | ||
| | Large | One or more breaking changes affecting numerous things simultaneously | ||
|
|
||
| When breaking changes occur, documentation can immediately become useless because: | ||
| - none of its code examples work anymore | ||
| - old terms might mean something different now | ||
| - some new parts may need be written | ||
| - some parts of the documentation might no longer be relevant | ||
| - one needs to figure out how to integrate new content into old content | ||
|
|
||
| Updating documentation in light of breaking changes often requires the most work to update. | ||
|
|
||
| ### The "Frequency" of a Change | ||
|
|
||
| The 'frequency' of a change can decrease its coherence. | ||
|
|
||
| | "Frequency" | Example | ||
| | -- | -- | | ||
| | Rarely | Stable libraries that have exhausted their design space (e.g. core data types) | ||
| | Sometimes | Maturing libraries that still have a few things to fix or add | ||
| | Frequently | New libraries | ||
|
|
||
| When changes occur frequently, documentation can appear more like loosely-coupled snippets of ideas rather than a coherent explanation because: | ||
| - Article A depends on Article B to explain something. Then, Article B becomes outdated. Thus, one "patches" Article A with a quick overview of Article B that doesn't fit in with the rest of Article A's content. | ||
| - One updates 3 out of 10 articles. One article says `X is true` whereas another says `X is false`. A new learner isn't sure which is correct. | ||
|
|
||
| Updating documentation in light of frequent changes often requires less overall work. | ||
|
|
||
| ### How to Make Maintenance Easier | ||
|
|
||
| Moreover, when breaking changes occur frequently, it discourages people from updating the documentation. Why waste time on something that will become outdated soon? | ||
|
|
||
| The nature of this problem is not going to change. So, what medium of documentation provides the most "bang for your buck" long-term that is also is easiest to update? | ||
|
|
||
| Heavily-commented code examples. | ||
|
|
||
| It follows the principle of "show, don't tell." People can use them as a model from which to learn and as a playground on which to experiment. | ||
|
|
||
| Other mediums of documentation (e.g. blog posts, literate programming, videos) each have their place. However, the code examples might produce the easiest-to-update documentation in the shortest time possible. | ||
|
|
||
| Lastly, some documentations tasks are tedious and consume lots of time. Finding ways to automate them can greatly improve the situation. | ||
|
|
||
| ## Criteria for "Good" Documentation | ||
|
|
||
| In short, it is impossible to write "good" documentation for everyone that is always up-to-date. There's simply not enough manpower, time, and incentives to do that. Rather, it will be "good", "horrible", or "somewhere in-between" for diffent kinds of people and at different times/seasons. | ||
|
|
||
| Still, we can define our criteria for "good" documentation using these four factors. Documentation is "good" when: | ||
| - [Type] | ||
| - It states which type of documentation it is | ||
| - It abides by that type's characteristics | ||
| - [Audience] | ||
| - It states who the intended audience is | ||
| - For those who aren't the intended audience, it refers to other material that better suits them | ||
| - [Accuracy] | ||
| - It tends to be heavier on code examples rather than other mediums | ||
| - It explains which version of the code it documents | ||
| - If it's not the most recent version, it provides: | ||
| - A brief idea of where it is outdated | ||
| - Guidelines for how to understand the outdated explanation in light of new changes | ||
| - It includes the date it was published and when it was last updated | ||
| - It indicates whether it will be updated in the future (and when) or has been abandoned and no future updates will occur. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,96 @@ | ||
| # Our Outcome Ideas | ||
|
|
||
| The below Table of contents was generated by http://tableofcontent.eu | ||
|
|
||
| - [Goal: The top 30 dependencies used in PS' ecosystem have examples and counterexamples in all of their Pursuit docs.](#goal-the-top-30-dependencies-used-in-ps-ecosystem-have-examples-and-counterexamples-in-all-of-their-pursuit-docs) | ||
| - [How: A community-curated "ACME" Spago project](#how-a-community-curated-acme-spago-project) | ||
| - [Goal: Collect the best and clearest explanations for FP concepts into a central location](#goal-collect-the-best-and-clearest-explanations-for-fp-concepts-into-a-central-location) | ||
| - [How: Add it to Jordan's learning repository](#how-add-it-to-jordans-learning-repository) | ||
| - [Goal: Convert all answered Slack-based questions into StackOverflow Questions and Answers](#goal-convert-all-answered-slack-based-questions-into-stackoverflow-questions-and-answers) | ||
| - [How: Reask and reanswer it on StackOverflow](#how-reask-and-reanswer-it-on-stackoverflow) | ||
| - [Goal: Collect the best solutions to common build-related problems into a central location](#goal-collect-the-best-solutions-to-common-build-related-problems-into-a-central-location) | ||
| - [How: Add it to a special "build" repository](#how-add-it-to-a-special-build-repository) | ||
| - [Goal: Add Syntax Examples for Core Libraries](#goal-add-syntax-examples-for-core-libraries) | ||
| - [How: Document a syntax example in Jordan's Learning Repo](#how-document-a-syntax-example-in-jordans-learning-repo) | ||
| - [Goal: Document "best practices" for writing a good bindings library.](#goal-document-best-practices-for-writing-a-good-bindings-library) | ||
| - [How: ???](#how) | ||
|
|
||
| ## Goal: The top 30 dependencies used in PS' ecosystem have examples and counterexamples in all of their Pursuit docs. | ||
|
|
||
| ### How: A community-curated "ACME" Spago project | ||
|
|
||
| We make a version of Justin Woo's "ACME" Spago project ([project](https://github.com/justinwoo/acme-spago) & [resulting docs](https://jusrin.dev/acme-spago/)). For packages that are lacking docs or are maintained by core contributors who won't respond quickly, we could use Spago to override those packages with a version supplied by a community member that includes more documentation. | ||
|
|
||
| All changes should be accepted with little questioning. However, the project should heavily warn against people using the resulting package set in production as one could easily introduce malware here. | ||
|
|
||
| ## Goal: Collect the best and clearest explanations for FP concepts into a central location | ||
|
|
||
| In general, these are the kinds of things I had in mind: | ||
| - What are some of the clearest explanations of FP concepts? | ||
| - How hard is it to port their code examples to PureScript? | ||
| - Have people written an explanation that "walks one through" an FP paper's ideas in a clear way? | ||
|
|
||
| I don't want another 'link farm.' That leads to information overload and decision paralysis. | ||
|
|
||
| Rather, I want the top 1 or 2 explanations on something. | ||
|
|
||
| ### How: Add it to Jordan's learning repository | ||
|
|
||
| These links could be added to [Jordan's learning repo](http://www.github.com/jordanmartinez/purescript-jordans-reference) as it exists partly for this purpose. | ||
|
|
||
| While lacking expertise in some areas, he can still sift through them and help determine which are great, good, duplicates, or just downright bad. | ||
|
|
||
| ## Goal: Convert all answered Slack-based questions into StackOverflow Questions and Answers | ||
|
|
||
| Slack is still an ideal place to ask a question. However, it doesn't persist. | ||
|
|
||
| ### How: Reask and reanswer it on StackOverflow | ||
|
|
||
| When a question on the `#purescript` or `#purescript-beginner` Slack channel gets answered, request the person who asked it to post the question on StackOverflow and link to the question in the chatroom. | ||
|
|
||
| Then, let someone (whether the answerer or someone who saw it) "answer" that question and give credit it to the answerer. | ||
|
|
||
| We should prioritize persistent docs over crediting who answered the question. | ||
|
|
||
| ## Goal: Collect the best solutions to common build-related problems into a central location | ||
|
|
||
| - Integrating PureScript to work with JS build tools? | ||
| - Integrating PureScript with CI (Travis, AppVeyor, etc.)? | ||
| - Possible "tree-shaking" approaches to PureScript and their tradeoffs? | ||
|
|
||
| ### How: Add it to a special "build" repository | ||
|
|
||
| I would suggest adding it to Jordan's learning repo, but this idea only works well if there are lots of small sample projects to build. Thus, it'd be better kept as its own repository. | ||
|
|
||
| ## Goal: Add Syntax Examples for Core Libraries | ||
|
|
||
| Sometimes, Pursuit docs don't help you know how to use something. However, a lot can be gleaned/imitated by looking at an example. For example: | ||
| - [Halogen's "basic button component" example](https://github.com/slamdata/purescript-halogen/blob/master/examples/basic/src/Button.purs) | ||
| - [Jordan's example for how to create a tree via `purescript-tree`](https://github.com/JordanMartinez/purescript-jordans-reference/blob/latestRelease/22-Projects/src/11-Table-of-Contents/04-Tree/01-Syntax.purs#L31-L64) | ||
| - [Jordan's example of the "hello world" program via the ReaderT design pattern](https://github.com/JordanMartinez/purescript-jordans-reference/blob/latestRelease/21-Hello-World/08-Application-Structure/src/11-Hello-World/02-ReaderT.purs) | ||
|
|
||
| ### How: Document a syntax example in Jordan's Learning Repo | ||
|
|
||
| I've begun to do this myself [here](https://github.com/JordanMartinez/purescript-jordans-reference/tree/latestRelease/22-Projects/src/01-Libraries) with a few libraries that I've used when building some projects. Perhaps I will later turn this into a separate top-level folder and call it "cookbook" | ||
|
|
||
| ## Goal: Document "best practices" for writing a good bindings library. | ||
|
|
||
| ``` | ||
| Worst ---------- Ok ---------------------------- Great | ||
| No libraries Bindings to JS library PS library | ||
| ``` | ||
| While JS library bindings aren't ideal, they can still solve a problem quickly. Knowing how to write a good bindings library can help make the PS ecosystem that much more mature. | ||
|
|
||
| Some questions people might ask: | ||
| - How should a library author analyze the library to which they want to write bindings? | ||
| - What are common problems such people face and their possible solutions? | ||
|
|
||
| ### How: TBD | ||
|
|
||
| ## Goal: Improve guides for how to test applications / test libraries | ||
|
|
||
| Inspired by [this comment](https://github.com/JordanMartinez/purescript-jordans-reference/issues/280#issuecomment-485144396), producing a stable library or finished application could be slowed down if writing tests get slowed down by small issues like this. | ||
|
|
||
| ### How: TBD | ||
|
|
||
| One idea is to write more convenience functions that make it easier to generate the `String`s we need. |
File renamed without changes.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.