mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-21 18:33:36 +00:00
f8851ef7d6
New 500-line standards document covering: - Core principles (readability, type stability, zero allocations, explicit code) - Variable naming: NO Greek letters in code (critical rule - use u,v,w not ξ,η,ζ) - Type naming: PascalCase for types, snake_case for functions, Basis suffix pattern - Performance guidelines: type stability, zero allocations, tuple returns - Documentation style: docstrings with examples, theory, performance notes - Testing standards: test organization, floating point comparisons - Anti-patterns: Dict without types, abstract types in structs, globals, type piracy - Git commit style: Conventional Commits format with examples - Editor configuration: .editorconfig and JuliaFormatter.toml settings - Summary checklist for pre-submission verification Rationale for no Greek letters: keyboard accessibility, editor compatibility, copy-paste issues, search/replace problems, terminal rendering, git diffs, internationalization, and accessibility concerns.
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