Before You Begin
Terra is a monorepo containing hundreds of packages for Fedora. We welcome contributions from everyone, whether you’re fixing bugs, adding new packages, or improving existing ones.If you have any questions about contributing, please join our chats.
Code of Conduct
The Terra Community is committed to being inclusive to contributors with the most varied and diverse backgrounds possible. We expect all community members to:- Participate in an authentic and active way
- Exercise consideration and respect in speech and actions
- Attempt collaboration before conflict
- Refrain from demeaning, discriminatory, or harassing behavior
- Be mindful of surroundings and fellow participants
Understanding Terra’s Structure
Terra packages are organized in theanda/ directory by category:
tools/- Command-line tools and utilitiesapps/- Desktop applicationssystem/- System packages, drivers, and kernel modulesthemes/- Icon themes, GTK themes, and visual customizationsdesktops/- Desktop environments and window managersgames/- Gaming-related packagesfonts/- Font packagesmultimedia/- Media players and editorsdevs/- Development tools and IDEsterra/- Terra-specific packages (release configs, macros, etc.)
anda.hcl- Package configuration file*.spec- RPM spec fileupdate.rhai- Automated update script (optional)- Patches and additional files as needed
Development Environment Setup
Fork and Clone the Repository
Fork the Terra Packages repository on GitHub, then clone your fork:
Install Build Dependencies
Install Andaman (anda), the build tool for Terra packages:You’ll also need standard RPM build tools:
Set Up Mock Configuration
Terra uses Mock for isolated builds. Install the Terra mock configs:Add yourself to the mock group:
Making Your First Contribution
Finding Something to Work On
Good first contributions include:- Package Updates: Check for outdated packages and submit version bumps
- Bug Fixes: Browse open issues labeled “bug”
- Package Requests: Look for package requests you can fulfill
- Documentation: Improve package descriptions or fix spec file issues
Creating a Branch
Always create a new branch for your work:Testing Your Changes
Before submitting, always test your changes:Submitting a Pull Request
Open a Pull Request
Go to the Terra Packages repository and click “New Pull Request”. Select your branch and fill out the PR template:
- Describe what software is being packaged or changed
- Explain your motivation for the change
- Note any testing you’ve performed
- Link to any relevant issues
Automated CI/CD
When you submit a PR, GitHub Actions will automatically:- Generate Build Matrix: Determine which packages changed
- Build Packages: Build your packages in isolated containers
- Run Tests: Validate the build artifacts
- Generate AppStream: Create metadata for GUI applications
Getting Help
If you get stuck:- Documentation: Read our packaging guidelines and testing guide
- Community Chat: Join our chats to ask questions
- Issue Tracker: Search existing issues for similar problems
- Examples: Look at similar packages in the repository for reference
Next Steps
Adding Packages
Learn how to add new packages to Terra
Package Guidelines
Follow best practices for packaging
Testing Packages
Ensure your packages work correctly
FAQ
Common questions and answers