--- title: "Contributing to JuliaFEM" description: "Quick start guide for new contributors" date: 2025-11-09 author: "Jukka Aho" categories: ["development", "contributing", "getting started"] keywords: ["juliafem", "contributing", "pull requests", "development"] audience: "contributors" level: "beginner" type: "guide" --- Thank you for considering contributing to JuliaFEM! πŸŽ‰ ## Quick Links - **[Contributor Manual](contributor/README.md)** - Start here for technical details - **[Coding Standards](contributor/coding_standards.md)** - **REQUIRED** reading for all contributors - **[Testing Philosophy](contributor/testing_philosophy.md)** - How we test and why ## Quick Start 1. **Fork the repository** on GitHub 2. **Clone your fork:** ```bash git clone https://github.com/YOUR_USERNAME/JuliaFEM.jl.git cd JuliaFEM.jl ``` 3. **Create a branch:** ```bash git checkout -b fix-issue-123 ``` 4. **Read the [Coding Standards](contributor/coding_standards.md)** - Critical rules like: - βœ… Use `u, v, w` for reference coordinates - ❌ Never use Greek letters (ΞΎ, Ξ·, ΞΆ) in code - βœ… Type-stable code required - βœ… Zero allocations in hot paths 5. **Make your changes** following the standards 6. **Run tests:** ```bash julia --project=. -e 'using Pkg; Pkg.test()' ``` 7. **Commit with good messages:** ```text feat(topology): Add Pyr5 pyramid element - Implement 5-node pyramid reference element - Zero-allocation tuple interface - Tests for reference coordinates Closes #123 ``` 8. **Push and create Pull Request** ## Code of Conduct - Be respectful and constructive - Focus on the code, not the person - Welcome newcomers and help them learn - Ask questions before making assumptions ## What We Look For βœ… **Type-stable code** - Performance depends on it βœ… **Tests included** - New features need tests βœ… **Documentation** - Docstrings for exported functions βœ… **Clean commits** - Logical, well-described changes βœ… **Follows standards** - Read [coding_standards.md](contributor/coding_standards.md) ❌ **Type-unstable code** - Will be rejected ❌ **No tests** - Cannot merge without tests ❌ **Greek letters in code** - Use u, v, w instead ❌ **Breaking changes** - Discuss in issue first ## Getting Help - **Questions?** Open a GitHub Discussion - **Bug report?** Open an issue with reproducible example - **Feature idea?** Open an issue to discuss before implementing - **Stuck?** Ask in the issue or PR - we're happy to help! ## License By contributing, you agree that your contributions will be licensed under the MIT License. --- **Ready to contribute?** β†’ Start with [Contributor Manual](contributor/README.md) and [Coding Standards](contributor/coding_standards.md)