{"id":42168699,"url":"https://github.com/wemush/open-standard","last_synced_at":"2026-01-26T21:21:37.403Z","repository":{"id":329308073,"uuid":"1117717523","full_name":"wemush/open-standard","owner":"wemush","description":"WeMush Open Labeling Standard","archived":false,"fork":false,"pushed_at":"2025-12-18T17:39:41.000Z","size":48,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-21T20:37:04.054Z","etag":null,"topics":["labeling","labels","mushroom","mushrooms","mycology","open-standard","research","science","science-research","wemush"],"latest_commit_sha":null,"homepage":"https://www.wemush.com/open-standard","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wemush.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-16T18:00:24.000Z","updated_at":"2025-12-20T03:00:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wemush/open-standard","commit_stats":null,"previous_names":["wemush/open-standard"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/wemush/open-standard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemush%2Fopen-standard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemush%2Fopen-standard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemush%2Fopen-standard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemush%2Fopen-standard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wemush","download_url":"https://codeload.github.com/wemush/open-standard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemush%2Fopen-standard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28788368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:13:08.818Z","status":"ssl_error","status_checked_at":"2026-01-26T21:13:08.448Z","response_time":59,"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":["labeling","labels","mushroom","mushrooms","mycology","open-standard","research","science","science-research","wemush"],"created_at":"2026-01-26T21:21:36.755Z","updated_at":"2026-01-26T21:21:37.391Z","avatar_url":"https://github.com/wemush.png","language":null,"funding_links":["https://github.com/sponsors/wemush"],"categories":[],"sub_categories":[],"readme":"# WeMush Open Labeling Standard (WOLS)\n\n[![Version](https://img.shields.io/badge/version-1.2.0-blue.svg)](https://github.com/wemush/open-standard/releases)\n[![License](https://img.shields.io/badge/license-CC%20BY%204.0-green.svg)](LICENSE)\n[![Discussions](https://img.shields.io/github/discussions/wemush/open-standard)](https://github.com/wemush/open-standard/discussions)\n[![Stars](https://img.shields.io/github/stars/wemush/open-standard?style=social)](https://github.com/wemush/open-standard/stargazers)\n\nAn open-source specification for encoding cultivation specimen data in machine-readable QR codes. **Vendor-agnostic. Privacy-preserving. Research-grade.**\n\n🍄 [Read the Full Specification](./SPECIFICATION.md) | 📖 [View Online](https://wemush.com/open-standard) | 🌐 [WeMush Platform](https://www.wemush.com) | 💬 [Join the Discussion](https://github.com/wemush/open-standard/discussions)\n\n---\n\n## Why WOLS?\n\nThe global mushroom industry is worth **$50 billion** but operates on spreadsheets and paper notebooks. There's no standardization, no interoperability, and no way to share cultivation insights across organizations.\n\n**WOLS fixes this.**\n\n```bash\n┌─────────────────┐\n│  QR Code Label  │  ←  Scan with any device\n└────────┬────────┘\n         │\n         ↓\n┌─────────────────────────────────────────┐\n│  Complete Specimen History:             │\n│  • Species \u0026 strain                     │\n│  • Growth stage \u0026 timeline              │\n│  • Environmental conditions             │\n│  • Substrate composition                │\n│  • Harvest yields                       │\n│  • Lineage \u0026 genetics                   │\n└─────────────────────────────────────────┘\n```\n\n### Use Cases\n\n- 🏭 **Commercial Farms**: Regulatory compliance and traceability\n- 🔬 **Research Labs**: Reproducible experiments and data sharing\n- 🏠 **Home Cultivators**: Track what works and optimize yields\n- ♻️ **Circular Economy**: Prove sustainability claims with verifiable data\n- 🤝 **Equipment Manufacturers**: Integrate tracking into products\n\n---\n\n## Quick Start\n\n### Generate a Label (JavaScript/TypeScript)\n\n```bash\nnpm install @wemush/wols\n```\n\n```typescript\nimport { generateLabel } from '@wemush/wols';\n\nconst label = await generateLabel({\n  species: \"Pleurotus ostreatus\",\n  strain: \"Blue Oyster PoHu\",\n  type: \"SUBSTRATE\",\n  stage: \"COLONIZATION\",\n  created: new Date().toISOString(),\n});\n\n// label.qrDataUrl → QR code as PNG data URL\n// label.json → Full specimen data\n```\n\n### Scan and Parse (Python)\n\n```bash\npip install wols\n```\n\n```python\nfrom wols import parse_label, scan_qr_code\n\n# Scan QR code from image\nspecimen_data = scan_qr_code(\"path/to/qr_code.png\")\n\n# Or parse raw data\nspecimen = parse_label(qr_code_data)\n\nprint(f\"Species: {specimen.species}\")\nprint(f\"Stage: {specimen.stage}\")\nprint(f\"Created: {specimen.created}\")\n```\n\n---\n\n## Features\n\n### 🔓 Open by Default\n\n- **No licensing fees** - Free forever\n- **No vendor lock-in** - Works with any platform\n- **Community-driven** - Governance by steering committee\n\n### 🔐 Privacy-Preserving\n\n- **Public data option**: Share openly for research\n- **Encrypted data option**: Protect proprietary strains\n- **Cryptographic signatures**: Verify authenticity\n\n### 📈 Research-Grade\n\n- **Complete lineage tracking**: Parent → child relationships\n- **Environmental data**: Temp, humidity, CO₂, light\n- **Substrate composition**: Reproducible formulations\n- **Statistical analysis ready**: Export to CSV, JSON, or SQL\n\n### 🔌 Extensible\n\n- **Custom namespaces**: Add organization-specific fields\n- **Multiple encoding formats**: Compact, embedded, or encrypted\n- **API-first design**: Integrate with IoT sensors, equipment, or software\n\n---\n\n## Implementations\n\n### Official Libraries\n\n| Language | Package | Repository | Status |\n| -------- | -------- | --------- | ------ |\n| **JavaScript/TypeScript** | `npm install @wemush/wols` | [specimen-labels-js](https://github.com/wemush/specimen-labels-js) | ✅ Released |\n| **Python** | `pip install wols` | [specimen-labels-py](https://github.com/wemush/specimen-labels-py) | ✅ Released |\n| **Container/CLI** | `docker pull ghcr.io/wemush/specimen-labels-py:latest` | [ghcr.io/wemush/specimen-labels-py](https://ghcr.io/wemush/specimen-labels-py) | ✅ Released |\n| **Go** | — | [specimen-labels-go](https://github.com/wemush/specimen-labels-go) | 📋 Planned |\n| **Rust** | — | [specimen-labels-rs](https://github.com/wemush/specimen-labels-rs) | 📋 Planned |\n\n### Platform Support\n\n| Platform | WOLS Support | Link |\n| -------- | ------------ | ---- |\n| **WeMush** | ✅ Native | [wemush.com](https://wemush.com) |\n| **[Your Platform?]** | [Submit PR] | [Your link] |\n\n*Want to add your platform/library? [See Contributing Guide](#contributing)*\n\n---\n\n## Specification Highlights\n\n### Core Data Model\n\n```typescript\ninterface SpecimenLabel {\n  // JSON-LD Context (Required)\n  \"@context\": string;            // Schema URL: \"https://wemush.com/wols/v1\"\n  \"@type\": string;               // Entity type: \"Specimen\"\n\n  // Required Fields\n  id: string;                    // Unique identifier with wemush: prefix\n  version: string;               // Spec version (e.g., \"1.2.0\")\n  type: SpecimenType;            // CULTURE | SPAWN | SUBSTRATE | FRUITING | HARVEST\n  species: string;               // Scientific name\n\n  // Taxonomy \u0026 Genetics\n  strain?: {\n    name: string;                // Strain name or identifier\n    generation?: string;         // Filial generation (e.g., \"F1\", \"F2\", \"P\")\n    clonalGeneration?: number;   // Subculture/clone count\n    lineage?: string;            // Parent specimen ID reference\n    source?: string;             // \"spore\", \"tissue\", \"agar\", \"liquid\"\n  };\n\n  // Lifecycle Tracking\n  stage: GrowthStage;            // Current growth stage (7 stages in v1.2.0)\n  created: string;               // ISO 8601 timestamp\n  batch?: string;                // Associated batch identifier\n\n  // Attribution \u0026 Extensibility\n  organization?: string;         // Organization ID\n  custom?: Record\u003cstring, any\u003e;  // Extensible fields\n  _meta?: Record\u003cstring, any\u003e;   // Implementation metadata (v1.2.0)\n  signature?: string;            // Cryptographic signature\n}\n```\n\n### Encoding Formats\n\n**Compact** (for small labels):\n\n```bash\nwemush://v1/clx1a2b3c4?s=POSTR\u0026st=COLONIZATION\u0026t=1734307200\n```\n\n**Embedded** (most common):\n\n```json\n{\n  \"@context\": \"https://wemush.com/wols/v1\",\n  \"@type\": \"Specimen\",\n  \"id\": \"wemush:clx1a2b3c4d5e6f7g8\",\n  \"version\": \"1.2.0\",\n  \"type\": \"SUBSTRATE\",\n  \"species\": \"Pleurotus ostreatus\",\n  \"strain\": {\n    \"name\": \"Blue Oyster PoHu\",\n    \"generation\": \"F2\"\n  },\n  \"stage\": \"COLONIZATION\",\n  \"created\": \"2025-12-16T10:30:00Z\"\n}\n```\n\n**Encrypted** (proprietary strains):\n\n```bash\nwemush://v1/encrypted/clx1a2b3c4?e={payload}\u0026sig={signature}\n```\n\n[📖 Read Full Specification →](./SPECIFICATION.md)\n\n## Relationship to WeMush Platform\n\n**WOLS is open source. WeMush Platform is proprietary.**\n\nThis specification and all reference implementations are open source\nand free to use. You can:\n\n✅ Build your own platform using WOLS\n✅ Generate labels using the libraries\n✅ Integrate WOLS into your products\n✅ Fork and modify as needed\n\n**The WeMush Platform** (\u003chttps://wemush.com\u003e) is a proprietary\nimplementation of WOLS that offers:\n\n- Free tier with unlimited specimen tracking\n- Premium features (ML, IoT, API, etc.)\n- Professional support\n- Hosted infrastructure\n\n**Why this model?**\n\nOpen standards drive adoption. Proprietary platforms drive\nsustainability. This model ensures WOLS succeeds long-term\nwhile WeMush can continue investing in advanced features.\n\nOther companies are welcome to build competing platforms.\nWe believe the best implementation wins, and we're confident\nWeMush will be that implementation.\n\n---\n\n## Real-World Examples\n\n### Example 1: Home Cultivator Tracking\n\n**Problem**: \"Which substrate gives me the best yields?\"\n\n**Solution**:\n\n1. Print WOLS labels for each substrate bag\n2. Scan to log growth observations\n3. Compare yields across different recipes\n4. Reproduce the winner\n\n[See full example →](./examples/home-cultivator.md)\n\n### Example 2: Commercial Traceability\n\n**Problem**: \"Food safety audit requires complete cultivation history\"\n\n**Solution**:\n\n1. QR code on retail packaging\n2. Customer scans → sees full history\n3. Proves organic, local, or sustainable claims\n4. Regulatory compliance in one scan\n\n[See full example →](./examples/commercial-traceability.md)\n\n### Example 3: Research Reproducibility\n\n**Problem**: \"Can't replicate experimental results from published paper\"\n\n**Solution**:\n\n1. WOLS label encodes exact parameters\n2. QR code in research paper\n3. Other labs scan → perfect replication\n4. Accelerates scientific progress\n\n[See full example →](./examples/research-reproducibility.md)\n\n---\n\n## Documentation\n\n- 📘 [Full Specification](./SPECIFICATION.md) ([View Online](https://wemush.com/open-standard/specification))\n- 🚀 [Getting Started Guide](./docs/getting-started.md)\n- 🔧 [Implementation Guide](./docs/implementation.md)\n- 🔐 [Privacy \u0026 Security](./docs/security.md)\n- 🎨 [Design Principles](./docs/design-principles.md)\n- 💡 [Use Cases](./docs/use-cases.md)\n- ❓ [FAQ](./docs/faq.md)\n\n### API Reference\n\n- [JavaScript/TypeScript API](./docs/api/javascript.md)\n- [Python API](./docs/api/python.md)\n- [REST API Endpoints](./docs/api/rest.md)\n\n---\n\n## Contributing\n\nWe welcome contributions from:\n\n- 🌾 **Growers**: Use cases, feedback, testing\n- 💻 **Developers**: Code, documentation, bug fixes\n- 🔬 **Researchers**: Academic input, validation\n- 🏭 **Industry**: Equipment integration, standards alignment\n\n### How to Contribute\n\n1. **Join the Discussion**: [GitHub Discussions](https://github.com/wemush/open-standard/discussions)\n2. **Report Issues**: [GitHub Issues](https://github.com/wemush/open-standard/issues)\n3. **Submit Changes**: [Pull Request Guide](./CONTRIBUTING.md)\n4. **Improve Docs**: Every page has an \"Edit\" button\n\n### Contribution Types\n\n| Type | Description | Examples |\n| ---- | ----------- | -------- |\n| 🐛 **Bug Fix** | Fix errors in spec or code | Typos, broken links, incorrect examples |\n| ✨ **Enhancement** | Improve existing features | Better examples, clearer docs |\n| 🎉 **New Feature** | Propose spec additions | New fields, encoding formats |\n| 📚 **Documentation** | Write guides or tutorials | How-to articles, translations |\n| 💬 **Discussion** | Start conversations | Use cases, design questions |\n\n[📋 Read Full Contributing Guide →](./CONTRIBUTING.md)\n\n---\n\n## Governance\n\n### Steering Committee\n\nThe WOLS specification is governed by a steering committee that reviews proposals and manages releases.\n\n**Current Members**:\n\n- **Mark Beacom** (Chair) - WeMush Foundation\n- [Open seat] - Industry Representative\n- [Open seat] - Academic Representative\n- [Open seat] - Community Representative\n\n**Want to join?** [Apply here](https://github.com/wemush/open-standard/discussions/1)\n\n### Proposal Process\n\n1. Submit issue describing proposed change\n2. Community discussion (14 days)\n3. Steering committee review\n4. RFC (Request for Comments) draft\n5. Final review and vote\n6. Merge and release\n\n[📋 Read Full Governance →](./GOVERNANCE.md)\n\n---\n\n## Adoption\n\n### Organizations Using WOLS\n\n| Organization | Type | Use Case | Since |\n| ------------- | ------ | ---------- | ------- |\n| **Mush Ohio** | Commercial Farm | Production tracking | 2025 |\n| [Your org?] | [Type] | [Use case] | [Year] |\n\n**Using WOLS?** [Add your organization →](https://github.com/wemush/open-standard/edit/main/ADOPTION.md)\n\n### Academic Citations\n\nIf you use WOLS in research, please cite:\n\n```bibtex\n@techreport{beacom2025wols,\n  title={WeMush Open Labeling Standard: A Vendor-Agnostic Specification for Cultivation Specimen Tracking},\n  author={Beacom, Mark},\n  year={2025},\n  institution={WeMush Foundation},\n  url={https://github.com/wemush/open-standard}\n}\n```\n\n---\n\n## Community\n\n### Get Help\n\n- 💬 [GitHub Discussions](https://github.com/wemush/open-standard/discussions) - Ask questions\n- 🐛 [GitHub Issues](https://github.com/wemush/open-standard/issues) - Report bugs\n- 📧 [Email](mailto:opensource@wemush.com) - Direct contact\n- 🐦 [Twitter](https://twitter.com/wemush) - Announcements\n\n### Stay Updated\n\n- ⭐ **Star this repo** to follow updates\n- 👀 **Watch releases** for version announcements\n- 📧 **Join mailing list** for monthly updates\n- 🔔 **Enable notifications** for important discussions\n\n---\n\n## License\n\n**Specification \u0026 Documentation**: [Creative Commons Attribution 4.0 International (CC BY 4.0)](LICENSE)\n\nYou are free to:\n\n- ✅ Share — copy and redistribute\n- ✅ Adapt — remix, transform, build upon\n- ✅ Commercial use — use in commercial products\n\n**Code Examples**: Code snippets in this documentation may also be used under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) for easy integration into your projects.\n\n**Reference Implementations**: Official client libraries (in separate repositories) are licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n\n---\n\n## Acknowledgments\n\nWOLS was created by **Mark Beacom** (Veteran, 2025 FVC Fellow, 2025 TSTI Fellow) and is supported by:\n\n- **Farmer Veteran Coalition** - Supporting veteran agriculture\n- **Transatlantic Sustainability Transition Initiative** - EU-US innovation collaboration\n- **Open-source community** - Contributors worldwide\n\nSpecial thanks to early adopters, beta testers, and everyone providing feedback.\n\n---\n\n## Roadmap\n\n### Version History\n\n#### Version 1.0.0 (Dec 2025)\n\n- ✅ Core specification released\n- ✅ Basic specimen types (CULTURE, SPAWN, SUBSTRATE, FRUITING)\n- ✅ 4 growth stages (INOCULATION, COLONIZATION, FRUITING, HARVEST)\n- ✅ Compact and embedded encoding formats\n- ✅ Basic strain tracking (string format)\n- ✅ Environmental data support\n\n#### Version 1.1.0 (Jan 2026)\n\n- ✅ JSON-LD format with `@context` and `@type` fields\n- ✅ Enhanced strain object (name, generation, lineage, source)\n- ✅ Structured ID format with `wemush:` prefix\n- ✅ Added HARVEST specimen type (5 types total)\n- ✅ JavaScript/TypeScript library released\n- ✅ Python library released\n- ✅ Field renames for clarity (`batchId`→`batch`, `organizationId`→`organization`)\n\n#### Version 1.2.0 (Jan 2026) — Current\n\n- ✅ Extended growth stages (7 stages: added INCUBATION, PRIMORDIA, SENESCENCE)\n- ✅ Type aliases and generation flexibility (clonalGeneration support)\n- ✅ `_meta` namespace for implementation metadata\n- ✅ Reference implementation (WeMush platform)\n- ✅ Comprehensive documentation and examples\n\n### Next: Version 1.3.0 (Q2 2026)\n\n- 🚧 IoT sensor integration spec\n- 🚧 Blockchain verification option\n- 🚧 Image metadata standard\n- 🚧 Multi-language translations\n\n### Future: Version 2.0.0 (Q3-Q4 2026)\n\n- 📋 Extended field data support\n- 📋 Advanced genetic encoding\n- 📋 Supply chain integration\n- 📋 Carbon tracking standard\n\n[📋 View Full Roadmap →](./ROADMAP.md)\n\n---\n\n## FAQ\n\n**Q: Do I need to pay to use WOLS?**\nA: No. WOLS is free forever. CC BY 4.0 license means zero licensing fees.\n\n**Q: Can I use WOLS with my existing software?**\nA: Yes. WOLS is vendor-agnostic and designed for interoperability.\n\n**Q: What if I want to add custom fields?**\nA: Use the `custom` namespace. All implementations support extensibility.\n\n**Q: Is this only for mushrooms?**\nA: No. WOLS works for any biological specimen tracking. Cannabis, hemp, plants, etc.\n\n**Q: Who owns the data encoded in WOLS labels?**\nA: The cultivator who generated it. WOLS is just a format specification.\n\n**Q: How do I report security issues?**\nA: Email \u003csecurity@wemush.com\u003e (PGP key available)\n\n**Q: If the standard is open, can competitors copy WeMush?**\nA: They can support the WOLS standard, but not copy our platform. Think Android (open) vs Google Pixel (proprietary but best implementation).\n\n**Q: Do I have to buy WeMush consumables to use the platform?**\nA: No. The free tier works with any WOLS-compliant labels, including ones you generate yourself.\n\n**Q: Why not fully open-source everything?**\nA: Sustainability. Open-source projects need funding. By keeping the platform proprietary while open-sourcing the standard, we ensure long-term investment in both.\n\n**Q: What if WeMush goes out of business?**\nA: The standard lives on. Your data is exportable. Other platforms can continue supporting WOLS. That's the power of open standards.\n\n**Q: Can I use WOLS without the WeMush platform?**\nA: Yes! Use the open-source libraries to generate labels, store data however you want, build your own tools. WOLS is completely independent.\n\n[📋 Read Full FAQ →](./docs/faq.md)\n\n---\n\n## Support This Project\n\n### How You Can Help\n\n- ⭐ **Star this repository** - Increases visibility\n- 🐛 **Report bugs** - Help improve quality\n- 💻 **Contribute code** - Build the future\n- 📢 **Spread the word** - Share with your network\n- 💬 **Join discussions** - Shape the roadmap\n\n### Sponsors\n\nWOLS development is supported by:\n\n- Individual contributors\n- Open-source community\n- [Your company? Sponsor us →](https://github.com/sponsors/wemush)\n\n---\n\n## Contact\n\n**Project Lead**: Mark Beacom\n**Email**: \u003copensource@wemush.com\u003e\n**Website**: \u003chttps://wemush.com\u003e\n**GitHub**: [@wemush](https://github.com/wemush)\n**LinkedIn**: [Mark Beacom](https://linkedin.com/in/markbeacom)\n**Twitter**: [@wemush](https://twitter.com/wemush)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nBuilt with 🍄 by cultivators, for cultivators\n\n[⭐ Star this repo](https://github.com/wemush/open-standard) • [📖 Read the spec](https://wemush.com/open-standard/specification) • [💬 Join the discussion](https://github.com/wemush/open-standard/discussions) • [🚀 Use the platform](https://wemush.com)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwemush%2Fopen-standard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwemush%2Fopen-standard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwemush%2Fopen-standard/lists"}