diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..4d1d6d4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,18 @@ +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Run '...' + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..3318de7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,12 @@ +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement + +**Is your feature request related to a problem? Please describe.** + +**Describe the solution you'd like** + +**Describe alternatives you've considered** + +**Additional context** diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..f26de1c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ + + +## Summary + +- What does this change do? +- Why is this change needed? + +## Checklist + +- [ ] My changes follow the contribution guidelines in `CONTRIBUTING.md`. +- [ ] I have updated `THIRD_PARTY_NOTICES.md` for any new dependency. +- [ ] I have signed `CONTRIBUTOR_LICENSE_AGREEMENT.md` (if applicable). diff --git a/.gitignore b/.gitignore index dfcfd56..6609277 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,14 @@ +/.vscode/ +# Keep general .vscode ignored, but allow committing the launch configuration +.vscode/* +!.vscode/launch.json +node_modules/ +dist/ +build/ +*.log +gcp-key.json +*.pyc +__pycache__/ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..344c848 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,36 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + // Chrome debugger (use `pwa-chrome` in newer VS Code versions if available) + "type": "chrome", + "request": "launch", + "name": "Launch Chrome (pwa) against localhost", + "url": "http://networkbuster.net", + "webRoot": "${workspaceFolder}/networkbuster.net", + // Uncomment and set if you want VS Code to start a specific Chrome binary + // "runtimeExecutable": "/usr/bin/google-chrome-stable", + // Additional flags useful for debugging in containers or remote envs: + // "runtimeArgs": ["--remote-debugging-port=9222","--no-first-run","--no-default-browser-check"] + }, + { + // Attach to an existing Chrome instance with --remote-debugging-port=9222 + "type": "chrome", + "request": "attach", + "name": "Attach to Chrome (remote) on port 9222", + "port": 9222, + "webRoot": "${workspaceFolder}/networkbuster.net" + }, + { + // Use this to launch Microsoft Edge (Chromium) if preferred + "type": "msedge", + "request": "launch", + "name": "Launch Edge against localhost", + "url": "http://networkbuster.net", + "webRoot": "${workspaceFolder}/networkbuster.net", + } + ] +} \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS index f9ed0b9..ba70f9f 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1,4 @@ +# Owner: Andrew T. Middleton (unverified) +# GitHub: @cleanskiier27 * @devcontainers/maintainers +* @cleanskiier27 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f9ba8cf..9208fac 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,12 @@ +# Code of Conduct + +This project adopts the Contributor Covenant v2.1 as its Code of Conduct. + +Be respectful, inclusive, and professional in all discussions and contributions. + +If you experience or witness unacceptable behavior, please contact the repository owner: andrew@networkbuster.net. + +Full text and enforcement policy should be considered part of this repository's governance. # Microsoft Open Source Code of Conduct This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 540c675..7fc5e11 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,23 @@ +# Contributing + +Thanks for your interest in contributing to NetworkBuster's entry for the NASA Luna Recycle Challenge. + +Before contributing please: + +1. Read the `CODE_OF_CONDUCT.md` and abide by it. +2. Confirm you are willing to license your contributions under the project's license (Apache-2.0). +3. If making a non-trivial contribution, sign the `CONTRIBUTOR_LICENSE_AGREEMENT.md` and submit it to the repository owner (see contact in `README.md`). +4. Update `THIRD_PARTY_NOTICES.md` for any new dependency you add and include upstream license text under `docs/third-party/` as necessary. + +Submitting changes + +- Fork the repository and open a pull request against `main`. +- For large or design-affecting changes, open an Issue first to discuss. +- Include tests or a reproducible demo when possible. + +CLA / Contributor Agreement + +We ask contributors to sign a simple contributor license agreement. A template is provided in `CONTRIBUTOR_LICENSE_AGREEMENT.md`. Signing helps simplify redistribution and compliance when submitting code that might be included in public releases. # How to Contribute to the Dev Container Specification We're excited for your contributions to the dev container specification! This document outlines how you can get involved. diff --git a/CONTRIBUTOR_LICENSE_AGREEMENT.md b/CONTRIBUTOR_LICENSE_AGREEMENT.md new file mode 100644 index 0000000..bf1b18e --- /dev/null +++ b/CONTRIBUTOR_LICENSE_AGREEMENT.md @@ -0,0 +1,17 @@ +# Contributor License Agreement (Template) + +By signing this document you (the "Contributor") certify that you are entitled to contribute the code, documentation or other materials you submit to this repository and that you license them under the repository license (Apache License 2.0). + +Please fill in the details below, sign and submit a copy to the project owner (see `README.md`). + +- Contributor name: ___________________________ +- Email: ___________________________ +- Organization (if any): ______________________ +- Date: ___________________________ + +I hereby grant NetworkBuster a perpetual, worldwide, non-exclusive, royalty-free license to use, reproduce, prepare derivative works of, publicly display, publicly perform and distribute my contribution under the terms of the Apache License 2.0. + +Signature: ___________________________ + +Notes: +- This template is provided for convenience and is not legal advice. If you require a different form of agreement, consult legal counsel. diff --git a/LICENSE b/LICENSE index a2c95fc..3d7c2b3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,109 @@ -Attribution 4.0 International + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses). + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + Copyright 2025 NetworkBuster / Andrew T. Middleton + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + +Attribution 4.0 International ======================================================================= diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..f759e33 --- /dev/null +++ b/NOTICE @@ -0,0 +1,6 @@ +NetworkBuster / Andrew T. Middleton + +This project is distributed under the Apache License, Version 2.0. + +If third-party components require attribution, their notices will be added +to this file and to `THIRD_PARTY_NOTICES.md` prior to release. diff --git a/README.md b/README.md index 3099cb6..962a9a3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,40 @@ -# Development Containers +# NASA Luna Recycle Challenge — NetworkBuster + +Authors: Andrew T. Middleton (NetworkBuster) + +Project for the NASA Luna Recycle Challenge. This repository contains the source, documentation and contributor materials for NetworkBuster's submission to the challenge. + +## About + +This project is a prototype system and research effort to help meet the goals of the NASA Luna Recycle Challenge. It contains design notes, code samples, integration guidance and the legal/third-party notices necessary to distribute the software. + +## Status + +- Draft / Initial repository scaffold +- License: Apache License 2.0 (see `LICENSE`) + +## Repository layout + +- `src/` — source code and prototypes +- `docs/` — design notes and supporting documentation +- `THIRD_PARTY_NOTICES.md` — third-party dependencies & license information +- `CONTRIBUTING.md` — contribution guide and CLA information +- `CONTRIBUTOR_LICENSE_AGREEMENT.md` — contributor agreement template +- `.github/` — issue and PR templates + +## How to contribute + +See `CONTRIBUTING.md` for contribution process, code of conduct, and CLA instructions. Major contributions should include an updated `THIRD_PARTY_NOTICES.md` entry for any new dependency and explicit license verification. + +## Contact + +Andrew T. Middleton — NetworkBuster + +Email: andrew@networkbuster.net + +## License + +This project is licensed under the Apache License, Version 2.0. See `LICENSE` for details.# Development Containers This repository is for the Development Container Specification. You can check out the spec on our website https://containers.dev/ too. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..d7ef548 --- /dev/null +++ b/THIRD_PARTY_NOTICES.md @@ -0,0 +1,65 @@ +# Third-Party Notices + +This file records third-party software included in this repository and the licenses that apply. + +Before any public release or distribution, ensure this file is complete and accurate. + +## How to maintain + +- Add one line per dependency including package name, version, license, and a short justification for inclusion. +- For compiled/bundled artifacts include the upstream license text or a pointer if required. + +## Example entry + +| Component | Version | License | Notes | +| --- | --- | --- | --- | +| example-lib | 1.2.3 | MIT | Used for data formatting; include MIT text in `docs/third-party/` if required. | + +## Current status + +No third-party runtime dependencies recorded yet in this repository. + +### Automated scan (repo scan performed) + +- Scanned for common manifest files: `package.json`, `package-lock.json`, `yarn.lock`, `requirements.txt`, `Pipfile`, `pyproject.toml`, `setup.py`, `Cargo.toml`. +- Result: No dependency manifest files were found in the repository at the time of the scan. + +If your project uses a package manager, add the relevant manifest files (for example `package.json`, `requirements.txt`, or `pyproject.toml`) to the repository and I can re-run the scan and populate this file with detected dependencies and their license fields. + +## How to produce a dependency inventory locally + +Run one of the following in your project workspace and paste the output here, or commit the manifest files to the repo and I will scan them automatically: + +- Node.js (npm): + +```bash +npm ls --all --json > dependency-tree-npm.json +``` + +- Python (pip): + +```bash +pipdeptree --json-tree > dependency-tree-pip.json +``` + +- Python (requirements): + +```bash +pip freeze > requirements.txt +``` + +- Rust (cargo): + +```bash +cargo tree --prefix none --format json > dependency-tree-cargo.json +``` + +After generating inventories, update this file with the dependency list and include license information for each entry. If you prefer, commit the generated manifests and I will update `THIRD_PARTY_NOTICES.md` automatically. + +## Required steps before release + +1. Run dependency inventory (e.g., `npm ls --all`, `pipdeptree`, `cargo tree`) and add every direct dependency. +2. For each dependency, confirm license compatibility with Apache-2.0. +3. For any dependency requiring attribution or NOTICE entries, add them to `NOTICE`. +4. If any dependency requires a contributor agreement or special redistribution permission, do not ship until the obligation is satisfied. + diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..863875e --- /dev/null +++ b/src/README.md @@ -0,0 +1,3 @@ +This `src/` folder contains prototypes and code for the NASA Luna Recycle Challenge submission by NetworkBuster. + +Add your code under language-specific subfolders (e.g. `src/python/`, `src/js/`) and update `THIRD_PARTY_NOTICES.md` when adding dependencies.