Thank you for your interest in contributing to TechShoulders! This project aims to document the influential people, works, and institutions that shaped computing history.
- Add a Person - Tech pioneers, researchers, engineers
- Add a Work - Projects, papers, tools, systems
- Add an Institution - Universities, labs, companies
- Add Edges - Relationships between nodes
- Improve existing content - Fix errors, add details
- Report issues - Found a bug or inaccuracy?
- Fork the repository
- Create a branch for your changes
- Use the CLI tools to scaffold your content:
pnpm new:person ada-lovelace # Creates person template pnpm new:work analytical-engine # Creates work template pnpm new:institution bell-labs # Creates institution template
- Fill in the frontmatter (including required fields:
type,era,domains) - Add inline edges to connect your node to others
- Run
pnpm validateto check for errors - Submit a PR using the appropriate template
These scripts create properly formatted template files to speed up content creation:
| Command | Example | Description |
|---|---|---|
pnpm new:person <slug> |
pnpm new:person ada-lovelace |
Create a person profile |
pnpm new:work <slug> |
pnpm new:work analytical-engine |
Create a work entry |
pnpm new:institution <slug> |
pnpm new:institution bell-labs |
Create an institution |
pnpm validate |
pnpm validate |
Check all content for errors |
- Schema compliance: Required fields present, correct types
- Edge integrity: Both source and target nodes exist
- Reference integrity: signatureWorks and pack cards reference valid nodes
- Image attribution: All attribution fields present when image exists
- Orphaned nodes: Warns about nodes with no edges (disconnected from graph)
- ID matching: Node ID matches filename
- Accuracy first: All content should be factual and verifiable
- Notable impact: Focus on people/works that significantly influenced computing
- Proper attribution: Always credit image sources with license info
- No copyright violations: Use images from Wikimedia Commons or public domain
When making specific factual claims (statistics, dates, quotes), include inline citations that link to a Sources section. Use Wikipedia-style numbered references.
Inline citation format:
Powers the majority of web servers<sup><a href="#source-1">[1]</a></sup>Sources section format:
---
## Sources
1. <span id="source-1"></span>Author/Org. ["Article Title."](https://example.com) Brief description of what this source establishes.
2. <span id="source-2"></span>Author/Org. ["Article Title."](https://example.com) Brief description.Guidelines:
- Use
<sup><a href="#source-N">[N]</a></sup>for clickable superscript citations - Place
<span id="source-N"></span>at the start of each source entry as the anchor target - Number citations sequentially as they appear in the text
- Link to primary sources when possible (official reports, academic papers, reputable news)
- Not every sentence needs a citation—focus on specific claims that readers might want to verify
Use lowercase slugs with hyphens:
linus-torvalds.mdx(notLinus_Torvalds.mdx)linux-kernel.mdx(notLinuxKernel.mdx)
The id field must match the filename (without .mdx):
# File: src/content/people/ada-lovelace.mdx
id: ada-lovelace # Must match filenameAll nodes require type, era, and domains fields. Edges are defined inline within each node.
---
id: person-id # Required: lowercase, hyphens
type: person # Required
name: Full Name # Required
era: 1990s-present # Required: time period active
domains: # Required: at least one
- Operating Systems
- Programming Languages
title: Brief Title # Optional: "Creator of X"
signatureWorks: # Optional: array of work IDs
- work-id-1
- work-id-2
whyYouCare: # Optional: importance bullets
- Point about relevance
edges: # Inline relationships
- target: linux-kernel
kind: influence
label: created
- target: university-of-helsinki
kind: affiliation
label: studied at
links: # Optional
- label: Wikipedia
url: https://...
image: # Optional (but recommended)
file: ../../assets/images/entities/person-id.jpg
source: https://...
license: CC BY 2.0
author: Author Name
---
Biography content in MDX...---
id: work-id # Required
type: work # Required
name: Work Name # Required
kind: project # Required: project, paper, tool, etc.
year: 1991 # Optional: year created
era: 1990s-present # Required
domains: # Required: at least one
- Domain 1
edges: [] # Inline relationships (usually empty for works)
links: # Optional
- label: Official Site
url: https://...
image: # Optional
file: ../../assets/images/entities/work-id.jpg
source: https://...
license: License Type
author: Author Name
---
Description of the work in MDX...---
id: institution-id # Required
type: institution # Required
name: Institution Name # Required
kind: university # Required: university, lab, company, org
era: 1900s-present # Required
domains: # Required: at least one
- Research
- Education
location: City, Country # Optional
edges: [] # Inline relationships (usually empty for institutions)
links: # Optional
- label: Official Site
url: https://...
image: # Optional
file: ../../assets/images/entities/institution-id.jpg
source: https://...
license: License Type
author: Author Name
---
Description of the institution in MDX...Edges are defined inline within each node's frontmatter using the edges array:
edges:
- target: linux-kernel # Target node ID
kind: influence # influence or affiliation
label: created # Optional: relationship labelEdges flow from the node containing them to the target. For example, to show that Linus Torvalds created Linux, add an edge in linus-torvalds.mdx pointing to linux-kernel.
Images should be stored locally in src/assets/images/entities/ for reliability and optimization. Astro automatically converts them to optimized WebP format.
Steps to add an image:
- Download the image from Wikimedia Commons or another licensed source
- Save it to
src/assets/images/entities/<entity-id>.jpg - Reference it in your frontmatter with a relative path
When including an image, ALL fields are required:
image:
file: ../../assets/images/entities/person-id.jpg # Relative path to local image
source: https://commons.wikimedia.org/wiki/File:... # Source page for attribution
license: CC BY 2.0 # Exact license
author: Photographer Name # Creator attribution- Wikimedia Commons - Best option for licensed images
- Public domain - Historical images, US government works
- CC-licensed - Creative Commons with proper attribution
Common acceptable licenses:
Public DomainCC0(Public Domain Dedication)CC BY 2.0,CC BY 3.0,CC BY 4.0CC BY-SA 2.0,CC BY-SA 3.0,CC BY-SA 4.0GFDL(GNU Free Documentation License)
Use influence edges for direct, strong relationships:
- Person created a work
- Person invented something
- Person designed a system
- Person wrote a paper
Use affiliation edges for context/association:
- Person worked at an institution
- Person studied at a university
- Person founded a company
- Person was fellow at an organization
CI will verify:
- Target node IDs exist
kindis either "influence" or "affiliation"- Orphaned nodes are flagged (nodes with no edges)
# Install dependencies
pnpm install
# Start dev server
pnpm dev
# Build for production
pnpm build
# Preview production build
pnpm preview
# Create new content
pnpm new:person <slug>
pnpm new:work <slug>
pnpm new:institution <slug>
# Validate all content
pnpm validate- Choose the right template when creating your PR
- Fill out the checklist completely
- Wait for CI to pass (schema validation, edge checks)
- Address review feedback promptly
Your PR will be automatically validated for:
- Schema compliance (all required fields present, correct types)
- Edge integrity (target nodes exist)
- Image attribution (all fields present when image exists)
- Orphaned nodes (nodes with no connections)
- Open an issue for questions about content
- Check existing people/works as examples
- Review the PR templates for guidance
Thank you for helping document computing history!