Welcome to M&A R&D's GitHub organization! We are committed to driving innovation in both software development and embedded systems. Our projects span across a variety of cutting-edge technologies aimed at creating smart, autonomous solutions.
- About Us
- Team Structure
- Repository Structure
- Coding Standards
- Contribution Guidelines
- Repository Management
- Communication
- License
Microcontrollers and Autonomy Research And Development, commonly known as M&A R&D, is at the forefront of innovation. Our mission is to blend high-level software development with sophisticated embedded systems to deliver top-notch autonomous solutions.
- Software Development Team: Our high-level code ninjas.
- Sub-team: Project A - Building revolutionary software.
- Sub-team: Project B - Innovating the user experience.
- Embedded Systems Team: The hardware wizards.
- Sub-team: Project C - Crafting smart firmware.
- Sub-team: Project D - Integrating seamless hardware solutions.
- software-projectA: Repository for Project A under Software Development.
- embedded-projectC: Repository for Project C under Embedded Systems.
- common-libraries: Shared code and libraries.
- Consistency is Key: Adhere to the coding style guides for each programming language we use.
- Python: Follow PEP 8.
- C++: Follow the Google Style Guide.
- JavaScript: Use the Airbnb Style Guide.
- Code Reviews: All code changes must be peer-reviewed and approved before merging.
- Automated Linters and Formatters: Utilize tools like pylint for Python, clang-format for C++, and ESLint for JavaScript to enforce coding standards automatically.
- General Workflow:
- Fork the Repository (optional, may be skipped):
- Navigate to the repository you want to contribute to.
- Click the "Fork" button at the top right to create your own copy of the repository.
- Create a Branch:
- From your forked repository, create a new branch for your feature or bugfix.
- Naming convention for branches:
feature/<description>orbugfix/<description>.
- Write Meaningful Commits:
- Use semantic commit messages:
feat: A new feature.fix: A bug fix.docs: Documentation only changes.style: Changes that do not affect the meaning of the code (white-space, formatting, etc).refactor: A code change that neither fixes a bug nor adds a feature.test: Adding missing or correcting existing tests.chore: Changes to the build process or auxiliary tools and libraries such as documentation generation.
- Example:
feat: add user authentication module.
- Use semantic commit messages:
- Commit Regularly:
- Commit small, incremental changes. Avoid large, monolithic commits.
- Each commit should do one thing and do it well.
- Push and Create a Pull Request:
- Push your branch to your forked repository.
- Navigate to the original repository and create a pull request from your branch.
- Provide a clear and concise description of your changes in the pull request.
- Code Review:
- Your pull request will be reviewed by your peers.
- Address any feedback or requested changes.
- Once approved, your changes will be merged into the main branch.
- Fork the Repository (optional, may be skipped):
-
Repository Structure:
- Naming Conventions: Use clear and descriptive names for repositories, e.g.,
projectA-software,projectB-embedded. - README Files: Each repository should contain a README.md file with:
- Project description.
- Setup instructions.
- Contribution guidelines specific to the project.
- License information.
- Naming Conventions: Use clear and descriptive names for repositories, e.g.,
-
Branch Management:
- Main Branch: The stable production-ready code.
- Development Branch: Where all new features and fixes are merged before being released to the main branch.
- Feature Branches: Branches for individual features or bug fixes, named
feature/<description>orbugfix/<description>.
-
Pull Requests:
-
All changes must go through a pull request and be reviewed.
-
Use templates for pull requests to ensure consistency. Example template:
### Summary Provide a brief description of the changes. ### Related Issues List any related issues, e.g., `Closes #123`. ### Changes - [x] List of changes made. ### Checklist - [ ] Tests added or updated. - [ ] Documentation updated. - [ ] Code follows coding standards.
-
-
Automated Testing:
- Set up continuous integration (CI) to run automated tests on each pull request.
- Use services like GitHub Actions, Travis CI, or CircleCI.
- GitHub Issues:
- Use GitHub Issues for tracking bugs, feature requests, and tasks.
- Use labels to categorize issues (e.g.,
bug,enhancement,documentation).
- Team Meetings:
- Regular meetings every Thursday to discuss progress and roadblocks.
- Use meeting agendas and minutes to keep track of discussions and decisions.
- Daily Communication:
- Use Messenger or ClickUp for day-to-day communication.
- Create channels for different teams and projects to keep discussions organized.
- Documentation:
- Maintain thorough documentation for all projects.
- Use GitHub Wikis or a documentation generator like Sphinx for Python or Doxygen for C++.
- (GitHub&Git with SSH guide)[https://docs.github.com/en/authentication/connecting-to-github-with-ssh]
- (GitHub&Git documentation)[https://docs.github.com/en]
- All projects are proprietary unless otherwise specified.
Thank you for being a part of M&A R&D! Let's drive innovation together.
Created with 💡 and ☕ by the M&A R&D team.