Welcome! We're glad you're interested in contributing to worlddriven. This project practices democratic governance—your contributions give you both voting power and responsibility for the project's direction.
- Fork the repository you want to contribute to
- Make your changes in a feature branch
- Submit a pull request to the main repository
- Participate in review - your vote counts!
The worlddriven organization itself is managed democratically. To propose infrastructure changes:
- Edit REPOSITORIES.md to add your repository:
## my-new-repo
- Description: Brief description of what this repository does
- Topics: topic1, topic2, topic3-
Create a pull request with your changes
-
Review the drift detection comment that automatically appears on your PR:
- Shows exactly what will be created
- Displays repository settings that will be applied
- Previews the sync plan
-
After democratic review and merge:
- Automation creates the repository on GitHub
- Standard worlddriven settings are applied
- Branch protection ruleset is configured
- Initial README.md is created
To update a repository's description or topics:
- Edit the repository's section in REPOSITORIES.md
- Submit a pull request - drift detection will show the changes
- After merge, automation updates GitHub metadata
Warning: Repository deletion is permanent. Ensure you have backups.
- Remove the repository section from REPOSITORIES.md
- Submit a pull request - drift detection will warn about deletion
- Protected repositories (documentation, core, webapp) will not be deleted
- After merge, unprotected repositories are deleted from GitHub
Areas to contribute:
- Improve documentation clarity
- Add examples and use cases
- Fix typos and formatting
- Enhance automation scripts
- Add tests for repository parsing
Development workflow:
# Clone the repository
git clone https://github.com/worlddriven/documentation.git
cd documentation
# Create a feature branch
git checkout -b feature/your-feature-name
# Make your changes
# ...
# Run tests
npm test
# Commit and push
git add .
git commit -m "feat: add your feature description"
git push origin feature/your-feature-nameLocated in scripts/ directory:
parse-repositories.js- Parse REPOSITORIES.md formatdetect-drift.js- Compare desired vs actual statesync-repositories.js- Apply changes to GitHubfetch-github-state.js- Fetch current organization state
Testing locally:
# Install dependencies
npm install
# Run unit tests
npm test
# Test drift detection (requires GitHub token)
export WORLDDRIVEN_GITHUB_TOKEN=your_token
node scripts/detect-drift.js
# Test sync in dry-run mode (safe, makes no changes)
node scripts/sync-repositories.jsAdding tests:
- Unit tests go in
tests/directory - Test repository parsing edge cases
- Validate drift detection logic
- Ensure sync plan generation is correct
Title: Use conventional commit format:
feat:- New featurefix:- Bug fixdocs:- Documentation changestest:- Add or improve testsrefactor:- Code refactoringchore:- Maintenance tasks
Description: Include:
- What changes you made
- Why you made them
- How to test them
- Related issues (if any)
Example:
## Summary
Add support for repository archival in REPOSITORIES.md
## Why
Users need ability to mark repositories as archived while keeping
them in the organization for historical reference.
## Changes
- Add optional `archived: true` field to repository format
- Update parser to handle archived flag
- Add archive action to sync script
## Testing
- Added unit tests for archived repository parsing
- Tested sync with archived repository in dry-run mode
Closes #42Your review carries weight based on your contribution history:
How to review:
- Understand the changes - Read the code and PR description
- Test locally if significant - Clone the branch and verify it works
- Provide constructive feedback - Suggest improvements clearly
- Vote with your review:
- ✅ Approve - Speeds up merge (if you have contribution history)
- 💬 Comment - Neutral feedback, doesn't affect timing
- ❌ Request changes - Blocks merge until addressed
Good review comments:
- Specific: "Line 42: This could cause X if Y happens"
- Constructive: "Consider using Z instead for better performance"
- Educational: "This pattern might be clearer: [example]"
Less helpful:
- Vague: "I don't like this"
- Non-actionable: "This seems wrong"
- Personal: Attacking the contributor rather than critiquing the code
Pull requests automatically merge after a default time period (10 days), but the community can influence this:
How votes work:
- Your voting power = your contribution weight to the project
- Approvals from contributors reduce merge time
- Change requests increase merge time or block entirely
- Coefficient shown in GitHub status indicates net community sentiment
- Transparent calculation - everyone sees exactly how decisions are made
What this means:
- Your first contribution immediately gives you voting rights
- More contributions = more influence in project direction
- Veterans guide through influence, not absolute authority
- True democracy where those who build decide
Understanding the automation helps you contribute effectively:
PR created/updated
↓
GitHub Actions triggered
↓
Parse REPOSITORIES.md (desired state)
↓
Fetch GitHub org (actual state)
↓
Detect differences
↓
Generate drift report
↓
Generate sync preview (dry-run)
↓
Post/update PR comment
PR merges to main
↓
GitHub Actions triggered
↓
Execute sync script (--apply mode)
↓
Create repositories
↓
Update descriptions/topics
↓
Apply standard settings
↓
Create branch protection
↓
Delete unprotected repos
↓
Post commit comment with results
↓
Create issue if failures
The WORLDDRIVEN_GITHUB_TOKEN secret requires:
repo- Full repository controladmin:org- Organization managementdelete_repo- Repository deletion
Never:
- Commit tokens to repository
- Share tokens publicly
- Use tokens with broader permissions than needed
- Forks: Automation doesn't run on forks (no access to secrets)
- Tests: Test workflow runs on forks safely
- Review: All PRs reviewed before merge to protected main branch
- Audit trail: All changes visible in git history
- Use ES modules (
import/export) - Clear variable names
- Add JSDoc comments for functions
- Follow existing code patterns
- Run tests before committing
- Use clear headings
- Include code examples
- Link to related documentation
- Keep line length reasonable
- Use lists for better readability
- Clear, concise, descriptive
- Use conventional commit format
- Reference issues when relevant
- Explain why, not just what
- Questions: Open an issue with the
questionlabel - Bugs: Open an issue with the
buglabel - Features: Open an issue with the
enhancementlabel - Discussion: Use GitHub Discussions for broader topics
Contributing to worlddriven means:
Gaining Power: Your contributions grant voting rights and influence
Accepting Responsibility: You become accountable for project direction
Building Together: Collective ownership through democratic process
Practicing Democracy: Infrastructure management mirrors code governance
Your contributions make worlddriven possible. By participating, you're not just submitting code—you're helping build a more democratic, sustainable model for open source governance.
Welcome to the community! 🌍