{"id":21224264,"url":"https://github.com/sam-parsons/learnyouchildprocess","last_synced_at":"2026-02-21T14:33:03.368Z","repository":{"id":123935691,"uuid":"379072071","full_name":"sam-parsons/learnyouchildprocess","owner":"sam-parsons","description":"series of lessons exploring child processes in node.js","archived":false,"fork":false,"pushed_at":"2021-06-27T03:08:02.000Z","size":95,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-28T20:51:45.913Z","etag":null,"topics":["child-process","nodejs","streams"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/learnyouchildprocess","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sam-parsons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-21T21:54:45.000Z","updated_at":"2023-03-09T03:58:18.000Z","dependencies_parsed_at":"2023-07-11T14:34:25.572Z","dependency_job_id":null,"html_url":"https://github.com/sam-parsons/learnyouchildprocess","commit_stats":{"total_commits":62,"total_committers":1,"mean_commits":62.0,"dds":0.0,"last_synced_commit":"e35966a1939cd266ec4584f1d43f7173a2ef68cb"},"previous_names":["sam-parsons/learnyouchildprocesses"],"tags_count":12,"template":false,"template_full_name":"sam-parsons/demo-workshopper-template","purl":"pkg:github/sam-parsons/learnyouchildprocess","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-parsons%2Flearnyouchildprocess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-parsons%2Flearnyouchildprocess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-parsons%2Flearnyouchildprocess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-parsons%2Flearnyouchildprocess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sam-parsons","download_url":"https://codeload.github.com/sam-parsons/learnyouchildprocess/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-parsons%2Flearnyouchildprocess/sbom","scorecard":{"id":796910,"data":{"date":"2025-08-11","repo":{"name":"github.com/sam-parsons/learnyouchildprocess","commit":"e35966a1939cd266ec4584f1d43f7173a2ef68cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T09:16:05.170Z","repository_id":123935691,"created_at":"2025-08-23T09:16:05.170Z","updated_at":"2025-08-23T09:16:05.170Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29683988,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T14:31:22.911Z","status":"ssl_error","status_checked_at":"2026-02-21T14:31:22.570Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["child-process","nodejs","streams"],"created_at":"2024-11-20T22:57:31.202Z","updated_at":"2026-02-21T14:33:03.348Z","avatar_url":"https://github.com/sam-parsons.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# learn you the node.js child processes\n\n**An intro to Node.js child processes via a set of self-guided workshops.**\n\n![learnyouchildprocess](https://github.com/sam-parsons/learnyouchildprocess/blob/master/learnyouchildprocess.png?raw=true)\n\n\u003cb\u003e\u003ccode\u003elearnyouchildprocess\u003c/code\u003e\u003c/b\u003e is a Node.js package that contains a series of workshop lessons which will teach you the basics of creating and communicating with Node.js child processes. The lessons will cover the most used parts of Node's `child_process` API, namely the `spawn`, `exec`, `execFile`, and `fork` methods.\n\n## Installing learnyouchildprocess\n\n1. Install [Node.js](http://nodejs.org/)\n2. Run `npm install -g learnyouchildprocess` (this installs the learnyouchildprocess Node.js package globally).\n3. Test that learnyouchildprocess has been installed successfully by running the command `learnyouchildprocess` in your terminal. This will start the learnyouchildprocess application, and you should see a blue screen similar to the one in the screenshot above.\n\n## Completing your first exercise\n\n1. **Start up learnyouchildprocess** in your terminal by running the command `learnyouchildprocess` (you should see a blue screen similar to the one in the screenshot above).\n2. **Start a learnyouchildprocess exercise** by using the arrow keys to navigate, and the enter key to select a lesson. For this example, scroll to the \"SPAWN\" lesson and press enter. This will result in three things happening:\n   1. The instructions for the \"SPAWN\" lesson will now be printed out to your terminal .\n   2. The `learnyouchildprocess verify` command will now be set to verify any script that you pass into it with the expected output of the lesson that you selected (in the case of the \"SPAWN\" lesson, the command `learnyouchildprocess verify` will now check that the script file you pass in satisfies the expected outcomes of the \"SPAWN\" lesson by making sure the script prints the text \"SPAWN\" to stdout).\n   3. The learnyouchildprocess application will exit, allowing you to use your terminal again.\n3. **Create your solution for the exercise** by creating a new script file named \"program.js\" and following the instructions and hints that were printed out above for the lesson. For the \"SPAWN\" lesson, your script \"program.js\" should have code in it that prints the text \"SPAWN\" to stdout when run with Node.js (you can test your script file with Node.js by using the command: `node program.js`).\n4. **Verify that your solution to the lesson is correct** by running the command `learnyouchildprocess verify program.js` (note: if you named your script file something other than \"program.js\", replace \"program.js\" with the correct filename). If your solution is not correct, you will see a FAIL message along with some information about why your solution didn't pass the tests. In the case of a FAIL message, rework your solution until running the verify command passes. If your solution passes the tests, you should see a \"PASS\" message. Congratulations! :)\n5. **Move on to the next lesson** if you have verified that your solution is correct. Repeat these instructions from step 1 and select the next lesson that you would like to do (it is suggested to do the lessons in order from top to bottom).\n\n## License\n\n**learnyouchildprocess** is Copyright (c) 2021 learnyouchildprocess and licenced under the BSD 3-Clause licence. All rights not explicitly granted in the BSD license are reserved. See the included LICENSE.md file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam-parsons%2Flearnyouchildprocess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsam-parsons%2Flearnyouchildprocess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam-parsons%2Flearnyouchildprocess/lists"}