Thank you for your interest in contributing to CppLabEngine! This document provides guidelines for contributing to the project.
- Python 3.13+
- PyQt6
- Git
- MinGW toolchains (for testing)
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/CppLabEngine.git cd CppLabEngine -
Install dependencies:
pip install -r requirements.txt
-
Run tests to verify setup:
python test_setup.py
-
Launch the IDE:
python -m cpplab.main
- Follow PEP 8 with the following modifications:
- Line length: 100 characters (not 79)
- Use 4 spaces for indentation
- No emojis in code or comments
We prefer minimal, clear comments:
# File-level comment: brief module description
class MyClass:
# Class-level: what this class does
def my_method(self):
# Inside: only where helpful
result = compute() # Brief inline note if needed- Classes:
PascalCase - Functions/Methods:
snake_case - Private methods:
_leading_underscore - Constants:
UPPER_SNAKE_CASE - Files:
snake_case.py
src/cpplab/
├── main.py # Entry point
├── app.py # Main window controller
├── dialogs.py # Dialog implementations
├── ui/ # Qt Designer .ui files
├── widgets/ # Custom Qt widgets
└── core/ # Business logic (no Qt)
├── project_config.py
├── toolchains.py
├── builder.py
└── docs.py
Important: Keep Qt code out of core/ modules. The core should be GUI-agnostic.
- Feature:
feature/short-description - Bug fix:
fix/issue-number-description - Documentation:
docs/what-you-changed
Examples:
feature/add-line-numbersfix/123-graphics-path-issuedocs/update-quickstart
Use conventional commits format:
type(scope): brief description
Longer explanation if needed.
Fixes #123
Types:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style changes (formatting)refactor: Code refactoringtest: Adding testschore: Maintenance tasks
Examples:
feat(editor): add line numbers to code editor
fix(builder): correct PATH handling for 32-bit toolchain
docs(readme): update installation instructions
-
Run the test script:
python test_setup.py
-
Manual testing checklist:
- Create new console project → builds and runs
- Create graphics project → builds and runs
- Create OpenMP project → builds and runs
- Open existing project → loads correctly
- Save and reload → no data loss
- UI is responsive, no crashes
-
If you added new features, test:
- Normal workflow
- Edge cases
- Error conditions
-
Update your fork:
git checkout main git pull upstream main git push origin main
-
Create a feature branch:
git checkout -b feature/my-feature
-
Make your changes following style guidelines
-
Commit your changes:
git add . git commit -m "feat(scope): description"
-
Push to your fork:
git push origin feature/my-feature
-
Create Pull Request on GitHub:
- Clear title and description
- Reference any related issues
- Explain what changed and why
- Include screenshots for UI changes
- Code follows style guidelines
- Comments are minimal and clear
- No unnecessary files included
- Tested manually
- No breaking changes (or clearly documented)
- Updated relevant documentation
Use the issue template with:
- Clear title
- Steps to reproduce
- Expected vs actual behavior
- System info (Windows version, Python version)
- Screenshots if applicable
Open an issue with:
- Problem you're trying to solve
- Proposed solution
- Alternative solutions considered
- Impact on existing features
Easy First Issues:
- Documentation improvements
- UI polish (colors, spacing, icons)
- Additional code templates
- Error message improvements
Medium Difficulty:
- New project templates
- Editor enhancements
- Build system improvements
- UI features from TODO.md
Advanced:
- Debugger integration
- Code intelligence
- Plugin system
- Cross-platform support
- Add docstrings to public classes and functions
- Keep docstrings concise
- Focus on "what" and "why", not "how"
def build_project(project_config: ProjectConfig) -> BuildResult:
"""
Compile the project using the appropriate toolchain.
Args:
project_config: Project configuration
Returns:
BuildResult with success status and output
"""- Update README.md for feature changes
- Update QUICKSTART.md for workflow changes
- Update DEVELOPMENT.md for architecture changes
- Add examples where helpful
- Maintainer reviews PR within 1 week
- Address review comments
- Once approved, maintainer merges
- PR is automatically closed
- Code quality and style
- Functionality and correctness
- Performance impact
- Documentation completeness
- Test coverage
- Constructive feedback only
- Assume good intentions
- Help newcomers
- Be patient with questions
- Discuss major changes before implementing
- Accept feedback gracefully
- Give credit where due
- Share knowledge
- No harassment or discrimination
- Keep discussions on-topic
- Respect maintainer decisions
- Follow code of conduct
- README.md - Project overview
- QUICKSTART.md - Getting started
- DEVELOPMENT.md - Architecture details
- TODO.md - Roadmap and tasks
- GitHub Issues - Bug reports and features
- GitHub Discussions - General questions
- Email - Private concerns
Contributors are recognized in:
- CONTRIBUTORS.md file
- GitHub contributors page
- Release notes
Thank you for contributing to CppLabEngine!