zarfld / LinuxCnc_PokeysLibComp

Pokeys comp for LinuxCnc using https://bitbucket.org/mbosnak/pokeyslib.git
MIT License
5 stars 0 forks source link

Improve Repository Structure #63

Open zarfld opened 1 day ago

zarfld commented 1 day ago

Improve Repository Structure

Description:

The current repository structure can be improved to enhance clarity, organization, and ease of navigation for developers and contributors. The goal is to structure the code in a way that is scalable and follows best practices for project management, particularly for projects integrating Python, C/C++, and real-time components.

Tasks:

  1. Organize Code by Functionality:

    • Create separate directories for different components of the project (e.g., pokeys_py, pokeys_rt, tests, docs, etc.).
    • Move all relevant Python scripts to a dedicated pokeys_py/ directory.
    • Move all real-time components to a pokeys_rt/ directory.
    • Ensure that peripheral-related components (Digital IO, Analog IO, PEv2, etc.) are grouped within subdirectories for better organization.
  2. Create a tests/ Directory:

    • Create a tests/ directory to house unit tests, integration tests, and other testing-related files.
    • Add subfolders for each module (pokeys_py, pokeys_rt, etc.) to organize tests accordingly.
  3. Create a docs/ Directory:

    • Add a docs/ directory to store all project-related documentation (README, user guides, API references).
    • Move any existing documentation (e.g., markdown files, diagrams) into this directory.
  4. Create a scripts/ Directory:

    • Move any scripts used for setup, configuration, or auxiliary tasks (like CI/CD configurations) into a scripts/ directory.
  5. Standardize README Files:

    • Ensure that each major directory (pokeys_py, pokeys_rt, tests, etc.) contains a README.md explaining the contents of the folder.
    • The main README.md file should contain a high-level overview of the repository, with clear instructions on how to set up, run, and contribute to the project.
  6. Add a LICENSE File:

    • Ensure the project has a LICENSE file in the root directory, specifying the project’s license.
  7. Configure .gitignore Properly:

    • Ensure the .gitignore file includes the necessary exclusions for Python, C/C++, LinuxCNC build files, and any other generated files.
  8. Improve Version Control:

    • Organize branches in a clear and consistent manner. Create branch naming conventions for features, bug fixes, and releases (e.g., feature/, bugfix/, release/).
    • Ensure the repository has a clear branching model (e.g., GitFlow or trunk-based development) for better team collaboration.
  9. Update setup.py or CMakeLists.txt for Easier Build and Install:

    • For Python, ensure the setup.py script is up to date for easy package installation.
    • For C/C++ components, update CMakeLists.txt or equivalent build configuration files to ensure proper builds of the real-time components.
  10. Add CONTRIBUTING Guidelines:

    • Create a CONTRIBUTING.md file that outlines the guidelines for contributing to the project, including code style, testing requirements, and how to submit pull requests.

Acceptance Criteria:

References: