Skip to content

Latest commit

 

History

History
304 lines (242 loc) · 11.4 KB

SPECIFICATIONS.md

File metadata and controls

304 lines (242 loc) · 11.4 KB

Specification for the OpenWorkDocs Repository

Overview

The OpenWorkDocs repository is an open-source GitHub project designed to provide reusable, customizable company document templates, including policies, Standard Operating Procedures (SOPs), how-tos, and more. Initially tailored for US-based tech firms, it is built to scale globally and across various industries. The repository leverages a modular structure, a configuration-driven customization process, and a generation script to produce tailored documents without requiring users to fork the repository. Community contributions via pull requests (PRs) ensure continuous improvement and adaptability. This is a specification document and not all of this may have been implemented or even be in progress.


1. Repository Structure

The repository is structured for clarity, modularity, and scalability, with well-defined naming conventions and categorization.

1.1 Directory Layout

openworkdocs/
├── modules/
│   ├── code_of_conduct/
│   │   ├── base.md
│   │   ├── tech_company.md
│       └── us_specific.md
│   ├── time_off_policy/
│   │   ├── base.md
│   │   ├── remote_workers.md
│       └── us_specific.md
│   ├── dress_code/
│   │   ├── base.md
│   │   ├── sales_staff.md
│       └── software_developer.md
│   ├── recruitment/
│   │   ├── base.md
│   │   ├── job_posting_templates.md
│   │   ├── interview_process.md
│       ├── background_checks.md
│       └── offer_letters.md
│   ├── performance_management/
│   │   ├── base.md
│   │   ├── goal_setting.md
│   │   ├── performance_reviews.md
│       ├── development_plans.md
│       └── performance_improvement.md
│   └── industries/
│       └── law/
│           ├── client_intake_procedures.md
│           ├── attorney_ethics_compliance.md
│           ├── billing_time_tracking.md
│           ├── document_management.md
│           ├── case_management.md
│           ├── client_communication.md
│           └── risk_management.md
├── templates/
│   ├── company_config.yaml
│   └── generate.py
├── docs/
│   ├── getting_started.md
│   ├── contributing.md
│   ├── faq.md
│   └── module_organization.md
├── tests/
│   ├── test_generate.py
│   └── sample_config.yaml
├── integrations/
│   ├── confluence.py
│   ├── mediawiki.py
│   └── notion.py
├── LICENSE
└── README.md
  • modules/: Contains document-specific subdirectories with modular Markdown files:
    • base.md: Generic content applicable to most companies.
    • Industry-specific files (e.g., tech_company.md, healthcare.md).
    • Region-specific files (e.g., us_specific.md, eu_compliant.md).
  • templates/: Includes a sample company_config.yaml and the generate.py script.
  • docs/: Houses user guides, contribution instructions, FAQs, and a module_organization.md detailing naming conventions.
  • tests/: Provides automated tests for the generation script and sample configurations.
  • integrations/: Offers scripts for importing generated documents into platforms like Confluence, MediaWiki or Notion.
  • LICENSE: Uses the MIT License for maximum flexibility.
  • README.md: Features a project overview, setup instructions, and a call-to-action for contributions.

1.2 Module Organization and Naming Conventions

  • Document Categories: Each document type (e.g., code_of_conduct, time_off_policy) resides in its own subdirectory.
  • Module Types:
    • base.md: Core content suitable for most companies.
    • Industry-specific: Named by industry (e.g., tech_company.md, healthcare.md).
    • Role-specific: Tailored to employee types (e.g., clinical_staff.md, software_developer.md).
    • Region-specific: Ensures legal compliance (e.g., us_specific.md, eu_gdpr.md).
  • Naming Conventions:
    • Use lowercase with underscores (e.g., remote_workers.md).
    • Avoid special characters to ensure system compatibility.
  • Extensibility: New categories or modules can be proposed via PRs, adhering to the established naming conventions.

2. Customization Process

Companies can customize documents using a configuration file and a generation script, eliminating the need to fork the repository.

2.1 Configuration File (company_config.yaml)

  • Purpose: Defines the base commit, variables, and selected modules for customization.
  • Example:
    base_commit: "a1b2c3d4e5f6"  # Locks to a specific commit
    variables:
      company_name: "Acme Corp"
      logo_url: "https://acme.com/logo.png"
      industry: "Technology"
      region: "US"
    policies:
      code_of_conduct:
        - base
        - tech_company
      time_off_policy:
        - base
        - us_specific
      dress_code:
        - base
        - software_developer
  • Usage: Stored locally or in a company’s own repository and passed to generate.py.

2.2 Generation Script (generate.py)

  • Purpose: Combines selected modules, applies variable substitutions, and outputs customized documents.
  • Features:
    • Clones the repository at the specified commit.
    • Uses Jinja2 to render templates with variables from company_config.yaml.
    • Outputs Markdown files to a designated directory (e.g., output/).
  • Command:
    python generate.py --config company_config.yaml --output output/
  • Example Output:
    • output/code_of_conduct.md:
      # Acme Corp Code of Conduct
      
      Welcome to Acme Corp! We value respect and integrity.
      
      Innovation and collaboration are core to our tech culture.
      

2.3 Templating

  • Engine: Jinja2 for dynamic content rendering.
  • Example Module (code_of_conduct/base.md):
    # {{ company_name }} Code of Conduct
    
    Welcome to {{ company_name }}! We value respect and integrity.
    
    {% if industry == "Technology" %}
    Innovation and collaboration are core to our tech culture.
    {% endif %}

2.4 Customization Without Forking

  • Companies maintain their company_config.yaml externally and regenerate documents as needed.
  • To update documents, they adjust the base_commit and rerun generate.py.

3. Contribution Process

The repository fosters community contributions through GitHub PRs, supported by detailed guidelines and governance.

3.1 How to Contribute

  1. Fork the Repo: Create a personal fork on GitHub.
  2. Add or Edit Modules: Adhere to naming conventions in modules/.
  3. Test Changes: Validate using generate.py with a sample config.
  4. Submit a PR:
    • Follow the PR template in docs/contributing.md.
    • Reference relevant issues (e.g., #123).
  5. Review Process: Maintainers and community reviewers evaluate PRs.

3.2 Contribution Guidelines (docs/contributing.md)

  • Module Standards:
    • Use Markdown with Jinja2 for variable integration.
    • Write generic, reusable content.
    • Include a brief PR description.
  • Conflict Resolution:
    • Overlapping PRs are resolved through community feedback.
    • Maintainers hold final decision-making authority.
  • Governance:
    • A steering committee of active contributors oversees major changes.

4. Mitigation Strategies

To encourage adoption, the repository addresses common concerns with practical solutions.

4.1 Complexity of Setup

  • Pre-built Configs: Offers industry-specific starter packs (e.g., "Tech Starter Pack").
  • Guided Setup: Provides an interactive CLI or web tool for config creation.
  • Documentation: Includes step-by-step guides with screenshots and videos.

4.2 Loss of Control

  • Export Options: Supports PDF, Word, or HTML outputs for final adjustments.
  • Version Control: Companies can manage configs in their own repositories.

4.3 Trust and Quality

  • Expert Reviews: Modules are vetted by volunteer HR and legal professionals.
  • Compliance Tags: Labels such as "US Labor Law" or "EU GDPR".
  • Changelogs: Per-module history in modules/<policy>/CHANGELOG.md.

4.4 Security

  • Local Generation: No external data sharing required.
  • Encryption Guidance: Best practices for securing configs.

4.5 Maintenance

  • Automated Notifications: GitHub releases trigger update alerts.
  • Backward Compatibility: Modules remain compatible across versions.

4.6 Cultural Fit

  • Branding: Variables for logos, colors, and tone customization.
  • Community Modules: Industry or culture-specific add-ons.

4.7 Cost-Benefit

  • Case Studies: Success stories documented in docs/faq.md.
  • ROI Calculator: Estimates time savings on the project website.

4.8 Resistance to Change

  • Community Forum: GitHub Discussions for support and Q&A.
  • Transition Guides: Step-by-step migration plans.

5. Expansion Plan with Timeline

The repository will expand in phases, with defined milestones.

5.1 Phase 1: US Tech Firms (Months 1-6)

  • Focus: Remote work, DEI, and open-source policies.
  • Milestones:
    • Launch with 5 core documents.
    • Onboard 10 beta companies.
    • Publish 3 case studies.

5.2 Phase 2: Other Industries (Months 7-12)

  • Focus: Healthcare, finance, and manufacturing.
  • Milestones:
    • Add 5 new industry-specific modules.
    • Partner with 2 industry associations.
    • Reach 50 active companies.

5.3 Phase 3: Global Reach (Months 13-18)

  • Focus: Region-specific compliance (e.g., EU, Asia).
  • Milestones:
    • Translate core modules into 3 languages.
    • Add 10 region-specific modules.
    • Host a global contributor summit.

6. Additional Features

These enhancements improve usability, integration, and overall value.

6.1 Web-Based Config Tool

  • A browser-based UI for creating and previewing company_config.yaml.
  • Features:
    • Drag-and-drop module selection.
    • Real-time document preview.
    • Export options for config and generated documents.

6.2 Knowledge Base Integration

  • Scripts in integrations/ for platforms like Confluence, Notion, or SharePoint.
  • Example: confluence.py uploads documents via API.

6.3 Compliance Checker

  • A linter to identify missing compliance clauses (e.g., "No anti-harassment policy detected").
  • Extensible with custom rules.

6.4 Module Marketplace

  • A curated list of premium or specialized modules via GitHub Sponsors.
  • Revenue shared with contributors.

6.5 Usage Analytics

  • Tracks popular modules using GitHub traffic data.
  • Publishes insights to inform development priorities.

6.6 Document Versioning Dashboard

  • A web tool to compare module versions and visualize differences.
  • Assists companies in deciding when to update their base_commit.

6.7 Community Engagement

  • Forum: GitHub Discussions for Q&A and feature requests.
  • Monthly Newsletter: Updates on new modules and contributors.
  • Contributor Spotlights: Profiles of active community members.

7. Integration with Existing Systems

To ensure seamless adoption, the repository supports integration with popular tools:

  • HR Software: Export documents as JSON for import into systems like BambooHR or Workday.
  • Document Management: Scripts for uploading to Google Drive, Dropbox, or SharePoint.
  • Example Integration:
    • integrations/notion.py: Uploads documents to a Notion workspace via API.