mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-09 12:42:19 +00:00
1636e255fe
**Purpose:** Prepare documentation for publishing as blog posts or book **YAML Headers Include:** - title: Document title - subtitle: Optional subtitle for context - description: Brief summary for SEO/indexing - date: Creation date - updated: Last update date (for status docs) - author: Jukka Aho - categories: Taxonomic classification - keywords: Search/indexing keywords - audience: Target reader (users/contributors/researchers) - level: Difficulty level (beginner/intermediate/advanced/expert) - type: Document type (manual/guide/theory/benchmark/status) - series: Which manual it belongs to - chapter: Book structure (for The JuliaFEM Book) - status: Current state (completed/work in progress/active maintenance) - math: Whether document contains mathematical notation - prerequisites: Required background knowledge - tools: Software/packages used (for benchmarks) - context: Background information **Files Updated:** - docs/README.md (main index) - docs/user/README.md (user manual index) - docs/contributor/README.md (contributor manual index) - docs/book/README.md (book index) - docs/contributor/testing_philosophy.md - docs/contributor/status.md - docs/contributor/test_fixes_needed.md - docs/book/lagrange_basis_functions.md - docs/book/benchmarks/shape_function_derivatives_ad_vs_manual.md - scripts/README.md **Benefits:** - Ready for static site generators (Jekyll, Hugo, MkDocs) - Can generate book with proper metadata - SEO-friendly with descriptions and keywords - Clear audience/level targeting - Trackable with dates and status - Organized by series and chapters **Compatible With:** - Jekyll (GitHub Pages) - Hugo (fast static site generator) - MkDocs (Python-based documentation) - Jupyter Book (interactive books) - Docusaurus (React-based docs) - Custom publishing scripts
title, description, date, author, categories, keywords, audience, level, type
| title | description | date | author | categories | keywords | audience | level | type | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| JuliaFEM Contributor Manual | Technical guide for developers and contributors | 2025-11-09 | Jukka Aho |
|
|
developers | advanced | manual |
JuliaFEM Contributor Manual
Audience: Developers, contributors, advanced users who want to extend or modify JuliaFEM.
This manual is technical and detailed - it explains HOW the code works and WHY we made certain design choices.
What's Here
- Testing Philosophy: How and why we test
- Code Style: Conventions and best practices
- Architecture: Module structure, data flow, key abstractions
- Performance: Zero-allocation design, profiling, benchmarking
- Adding Elements: How to implement new element types
- CI/CD: Continuous integration, releases, versioning
- Git Workflow: Branching, commits, pull requests
What's NOT Here
- User tutorials (see
docs/user/for that) - Deep mathematical theory (see
docs/book/for that) - "How do I solve problem X?" (that's user docs)
Philosophy
"Show me the code AND tell me why."
We assume you:
- Know Julia reasonably well
- Understand FEM basics
- Want to add features or fix bugs
- Care about performance and correctness
- Need to understand design rationale
Before Contributing
- Read Testing Philosophy
- Understand Architecture
- Follow Code Style
- Check Performance Guidelines
- Review Git Workflow
Key Principles
- Type stability: No
Any, noDictwithout types - Zero allocations: Hot paths should allocate nothing
- Immutability: Prefer
structovermutable struct - Composition: Use tuples and free functions, not OOP hierarchies
- Explicit: No magic, user knows what happens
- Test first: Write tests before fixing bugs
Start here: Testing Philosophy | Architecture Overview