Note
This document provides contribution guidelines for students working on their theses. Please follow these steps carefully to ensure smooth collaboration.
-
GitHub Username:
- Before starting your work, please create a GitHub account if you don’t have one already and send me your GitHub username. This will be necessary for setting up your branch and reflect your contributions to the code.
-
Branch Creation:
- Ahmad will create a branch for your work once your thesis starts. This branch will be linked to an issue that allows you to track your progress. Our meetings are reserved for content discussion. The discussions in the issue are only related to code errors.
- You do not create branches yourself. Also, do not work on other student branches.
-
Creating Issues:
- Once your thesis starts, create an issue to describe the feature, bug fix, or enhancement you plan to implement. This helps us track contributions and avoids duplicate work. Keep the description abstract and add a few checkboxes listing what you want to add. You do not need to explicitly mention the methods. Keep it abstract, mentioning the purpose or benefits gained.
- Go to the Issues tab in the TMIO repository.
- Click New Issue and provide a clear title and description.
- Label the issue appropriately as
featureand include call itfeature.... - Once you push commits, some of them should address the issue.
- You should regularly update the issue (at least every few weeks).
-
Development Workflow:
-
Work only on the branch assigned to you.
-
Regularly pull updates from the
developmentbranch and merge them into your branch to stay up-to-date (at least every two weeks). -
Build TMIO with the debug flag so that changes made in the directory are directly visible to the command line call without reinstalling TMIO. For that call:
cd <tmio_repo> cd build make
-
follow the best practice guidelines to ensure code compatibility and a smooth experience for all developers
-
-
Merging Restrictions:
- You are not allowed to merge into the
developmentormainbranches.
- You are not allowed to merge into the
-
Final Submission:
- When your thesis is complete, create a pull request (PR) to merge your branch into the
developmentbranch. - Include a summary of your work and link the pull request to your issue for reference.
-
Periodically update your branch with changes from
development:git checkout development git pull origin development git checkout your-branch # Either merge or rebase with development git merge development # Or rebase for a linear history git rebase development
-
Resolve any merge conflicts promptly and test your work.
-
Make frequent commits with clear and descriptive messages. Ideally, once you are finished working on an aspect, you create a commit for it. Example:
git commit -m "TMIO: Add feature X to improve performance"Afterwards, push your changes from your branch:
# You are on your-branch (check using git branch -a) git push
Note
Avoid using to short or undescriptive commit messages like 'update' or 'code cleaned'.
- Once your thesis is complete:
- Push all changes to your branch.
- Create a pull request targeting the
developmentbranch. - Write a description of your work, including any key contributions or challenges.
-
Appropriate Language:
- Use professional, respectful, and clear language in all commit messages, comments, and documentation.
- Avoid using slang, jokes, or informal phrases that could be misinterpreted or deemed inappropriate.
-
Avoid Bad Language:
- Refrain from using any offensive, vulgar, or discriminatory language in any form. This applies to commit messages, comments, documentation, or communication within the team.
-
Be Respectful:
- Show courtesy when discussing issues, asking questions, or providing feedback. Collaborative communication is key to the success of the project.
-
Constructive Feedback:
- Provide helpful suggestions or feedback without criticism that could discourage others.
-
Gender-Neutral and Inclusive Language:
- Ensure that all language used in the project, including commit messages, documentation, and communication, is gender-neutral and inclusive. Avoid using gendered pronouns or assumptions, and instead use terms that are respectful and inclusive of all genders. This helps create a welcoming environment for everyone involved in the project.
- Stay Updated: Regularly pull changes from
developmentto avoid large merge conflicts. Also, keep the issue updated. - Communicate: Reach out if you encounter issues or need clarification.
- Test Thoroughly: Ensure your work doesn’t break existing functionality. Do not rename or reformat entire documents, except if you created them from scratch. Regularly test your code with your test case.
- Document Changes: Write clear comments and update related documentation as needed.
To demonstrate how to use TMIO with you new feature, you should add a relevant example under the examples directory:
-
Create a new example script in the
examplesfolder. -
Ensure the example is clear, easy to understand, and includes proper usage of
TMIO. -
Push and commit your changes:
git add examples/your_example.py git commit -m "TMIO: Add example usage of feature XXX"
To add a test case for verifying your changes, follow these steps:
-
Write a new test script in the
testdirectory to check for the desired functionality ofTMIO. -
Ensure the test is clear and isolates the tested functionality.
-
Push and commit your changes:
git add test/test_example.py git commit -m "Add test case for TMIO read/write functionality" -
Regularly test your testcase:
cd <tmio_repo> make
Note
We need some tests to examine the functionality.
To ensure proper documentation for your work, follow these steps:
-
Write a new documentation file or update an existing one in the
docsdirectory. -
Include relevant details, such as how to use the example, the purpose of the test cases, and any other important information.
-
Push and commit your changes:
git add docs/example_usage.md git commit -m "TMIO: Add documentation for feature XXX" -
If you made changes to the command line arguments, please update the usage section in the readme.
Thanks a lot for your contribution! I look forward to seeing the progress we will make together. Let's make this a great experience! 🚀🚀