We love your input! 🎉 We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug 🐛
- Discussing the current state of the code 🗣️
- Submitting a fix 🩹
- Proposing new features 🚀
- Becoming a maintainer 👑
There are many ways you can contribute! Here are some pointers to get you started:
- Reporting Bugs: Found a bug? 😰 Please open an issue and describe it thoroughly. Include steps to reproduce, expected behavior, and your environment (OS, Qt version, compiler, etc.).
- Suggesting Enhancements: Got an idea for a new feature or an improvement? 🚀 We'd love to hear it! Open an issue and let us know your thoughts.
- Submitting Code Changes: Ready to contribute code? 🧑💻 Great! Fork the repository, make your changes, and submit a pull request (PR). Please ensure your code adheres to the project's style and includes tests if applicable.
Before you start contributing, ensure your development environment is ready.
- A C++ compiler supporting C++17 or later (e.g., GCC, Clang, MSVC).
- CMake (version 3.16 or higher).
- Qt 6.x (preferably 6.10.2 or compatible).
- A compatible build system (e.g., Ninja, GNU Make, MSBuild) or an IDE like Qt Creator.
git clone https://github.com/valeksan/CoreTemplate.git # Note: The repo name might differ slightly
cd CoreTemplate # Or the actual folder name after cloningThis project uses CMake. Here are two common ways to build the example application located in the example/ directory:
- Navigate to the example directory:
cd example - Create a build directory:
mkdir build && cd build
- Configure the project using CMake. Choose a generator that matches your system (e.g.,
"Ninja","Unix Makefiles","Visual Studio 17 2022").(Replace <Your_Generator> with your choice)cmake .. -G "<Your_Generator>" -DCMAKE_BUILD_TYPE=Release - Build the project:
cmake --build .
- Launch Qt Creator.
- Open the
example/CMakeLists.txtfile directly from the project root. - Qt Creator will automatically detect the CMake project. Select a suitable Kit (compiler/Qt version).
- Use the Build menu or the hammer icon to build the project.
Your PRs are essential! 🙌 Please follow these guidelines to keep things smooth:
- Discuss First (if significant): For large or significant changes, consider opening an issue first to discuss the proposed approach.
- One PR, One Topic: Keep pull requests focused on a single subject. If you have multiple unrelated changes, submit them separately.
- Follow the Style: Ensure your code aligns with the project's coding style.
- Update Documentation: If you add or modify features, update the corresponding documentation (README, comments, this file, etc.).
- Include Tests: Add tests for new functionality or bug fixes if possible.
- Test Locally: Verify that your changes build correctly and pass any existing tests on your local machine before submitting.
- Clear Descriptions: Provide a clear and descriptive title and description for your pull request explaining the changes made.
Consistent code style keeps the project readable and maintainable! 🧼
- Follow Best Practices: Adhere to common C++ and Qt best practices (e.g., RAII, smart pointers, Qt's signal-slot mechanism).
- Naming Conventions:
- Use
camelCasefor functions and variables (e.g.,registerTask,m_taskHash). - Use
PascalCasefor classes and structs (e.g.,Core,TaskInfo). - Use
UPPER_SNAKE_CASEfor constants defined via#define(e.g.,DEFAULT_STOP_TIMEOUT).
- Use
- Comments: Add comments to clarify complex logic or non-obvious design decisions. Document public APIs clearly.
- Header File (
core.h): Ensure it remains self-contained and well-documented. Avoid unnecessary includes.
Still have questions or need clarification? 😕 Don't hesitate to open an issue or start a discussion in the repository. We're here to help!
Thank you again for your interest in contributing! 🙏 Your efforts help make CoreTaskManager better for everyone.