This project aims to develop a code optimization tool utilizing artificial intelligence. The tool will be designed to identify potential areas for code optimization, detect bugs, and suggest improvements. It will be designed to function as a standalone application, a VS Code extension, or a GitHub Action, contributing towards enhancing the developer experience. In addition to AI-driven functionalities, the tool will also have a suite of features that can be used independently, such as linting instructions.
This internship offers an opportunity for aspiring developers to contribute to an open-source project and gain real-world development experience. Interns will have the opportunity to work on various aspects of the project, with a focus on their areas of interest. Evaluation will be based on the quantity and quality of their contributions, quantified through a point-based system. Those accumulating 100 points will be accepted for Internship, and interns accumulating 5000 points will be considered for a full-time position.
Each contribution you make towards the project earns you points. This includes, but is not limited to:
- Raising issues regarding bugs or potential improvements.
- Suggesting new features.
- Proposing solutions or enhancements to existing features.
- Resolving issues raised by other contributors.
The point values for each task will be determined based on its complexity and significance to the project. The points leaderboard will be updated daily and can be viewed in the Points.md file.
Weekly mentoring sessions will be held every Saturday, starting from 11 AM. These sessions will serve as a platform for interns to ask questions, seek guidance, and gain feedback on their contributions. It's a great opportunity to clear doubts and understand more about the project's roadmap and the impact of your contributions.
The project follows a standard fork-and-pull model for contributions via GitHub. Here's a step-by-step guide:
- Fork the Repository: Start by forking the main project repository to your GitHub account.
- Clone the Repository: Once forked, clone the repository to your local machine.
- Set Up the Project: Follow the setup instructions to get the project running locally.
- Create a Branch: Create a new branch for each issue you work on. This keeps your work organized and prevents conflicts.
- Make Changes: Implement your feature or bug fix on the branch you created.
- Commit and Push Changes: Once your changes are ready, commit them with a meaningful commit message, and push the branch to your forked repository.
- Submit a Pull Request: From your repository, submit a pull request to the main repository. In the PR description, include a detailed explanation of your changes and link the PR to the corresponding issue in the main repository.
We are committed to fostering a community that’s inclusive, respectful, and productive. All participants in the project are expected to adhere to our Code of Conduct, which includes:
- Respect: Treat everyone with kindness and respect. No forms of harassment, discrimination, or inappropriate behavior are tolerated.
- Collaboration: Be open to feedback and be respectful when providing it. Strive to help others when you can and recognize everyone's contributions.
- Inclusivity: Foster an environment that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to, members of any race, ethnicity, culture, national origin, color, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.
Breaching this Code of Conduct may lead to consequences including, but not limited to, removal from the project and forfeiture of accumulated points.
Q: How do I earn points?
A: Points are earned by performing tasks such as raising issues for bugs, adding features, making suggestions, or providing solutions. The points assigned to each task will be determined by the project lead, based on the complexity and significance of the task.
Q: What happens if I encounter a problem while setting up the project?
A: You can raise an issue on GitHub detailing the problem you're encountering. Additionally, you can bring up these issues during the weekend feedback and mentoring sessions.
Q: How do I advance to a higher access level?
A: Advancement to a higher access level is based on your accumulated points and the quality of your contributions. The decision to elevate your access level will be made by the project lead.
Q: What should I do if I feel that the Code of Conduct has been violated?
A: If you believe there has been a violation of the Code of Conduct, please raise the issue with the project lead immediately. All reports will be handled with the utmost discretion and seriousness.
We operate on a point system to fairly and transparently evaluate your contributions. The point system works as follows:
-
Task Creation: Whenever you encounter a problem, have a new idea, or believe there's an area for improvement, create a new Issue on the GitHub repository. Describe the problem or feature and, if possible, propose a solution or implementation in the issue description. Creating and properly documenting an issue is valued and earns you 20% of the total points assigned to that issue. If you propose an issue or feature with a clear and correct potential solution overview, that issue will be assigned to you. Once you are assigned to the issue only your PR will be accepted for that issue. If you fail to submit a PR within feasible timeframe the issue will open for everyone.
-
Task Classification: The project lead will review each Issue and assign Labels to it that correspond to point values. These can range from
1 Point
to5 Points
, and we have2x
,3x
, and4x
Badges as point multipliers for issues requiring innovative or critical thinking. The more complex and valuable the task, the higher the points it will be assigned. If the issue is not up to the mark, it will be rejected. You get 20% of the points for an issue once it's approved, labeled, and closed after merging the solution PR. -
Task Completion: To complete a task, submit a Pull Request (PR) that addresses an Issue. Remember to link the PR to the corresponding Issue. Once your PR is reviewed and merged, you'll receive the remaining 80% of the points associated with the task's label. Anyone can submit a PR to solve an issue, but only the first PR that's merged will be considered for points.
-
Point Tracking: The project lead updates the Points.md file in the repository at the end of each day, showing the updated points tally. This gives everyone a clear view of their contribution progress.
The point system is designed to be flexible, allowing for adjustments based on the actual effort required for tasks. Please ensure you understand how the system works, as it's the basis for how we evaluate your contributions.
When submitting an issue, it's important to ensure your issue report is as detailed as possible. To make the process smoother and more effective, please follow these guidelines:
-
Check Existing Issues: Before you submit a new issue, please do a quick search to see if the issue or feature request has already been posted. If it has, you can contribute to the discussion there.
-
Stay Up-to-Date: Make sure you're running the latest version of the code. Some issues may have been resolved in more recent updates.
-
Be Detailed: Include as much information as possible about the issue or feature. The more details you provide, the easier it will be to address. You get 20% of the points for an issue once it's approved, labeled and closed after merging the soluton PR.
-
Steps to Reproduce: If you're reporting a bug, include clear steps to reproduce the issue, and any error messages or screenshots that might help.
-
Feature Requests: If you're requesting a feature, provide a detailed description of the feature, explain why you think it would be a valuable addition, and if you can, suggest possible ways to implement it. You get 20% of the points for a feature request once it's approved, labeled and closed after merging the soluton PR.
-
Checklist: Before submitting your issue, make sure you've checked the following as required:
- I have checked if the issue has already been reported.
- I have updated to the latest version.
- I have read the guidelines for creating an issue.
- I have provided as much detail as possible.
- I have included steps to reproduce the issue (for bugs).
- I have included a detailed description of the feature (for feature requests).
- I have suggested possible ways to implement the feature (for feature requests).
- I have included any other information or screenshots that might help.
-
Relevance: Please ensure your issue is relevant to the project. We want to keep the issue tracker as clean and organized as possible, so please refrain from posting issues that are unrelated to the project. Or issues that don't contribute to the project in any significant way. We don't accept issues that are too trivial or too complex. For example - "Add a comma here" or "Add AI to the project". These issues will be closed without any points. As a rule of thumb, try to find bugs that break main functionality or suggest features that will add significant value to the project. An issue, bug or feature might be too trivial if it takes only a few minutes to fix or implement(apart from critical bugs that are caused by small mistakes). An issue, bug or feature might be too complex if it takes more than a few hours to fix or implement. Make sure the issue can be solved in a modular way and the issue focuses on one problem only. If you have any doubts regarding the relevance of your issue, please feel free to ask during the feedback sessions.
By following these guidelines, you help to ensure your issue will be understood and addressed more effectively.
Before you start, please take a moment to review the qualities.md file. This document contains an overview of the qualities and skills we're looking for in a contributor. Understanding these qualities will not only help you become a better contributor but also help you understand how we evaluate and assign points for tasks.
GitHub Discussions is our chosen platform for building a community around our project. Here, you'll not only find vibrant conversations around the project's development but also get to observe first-hand how the project evolves and progresses.
While Issues are meant to be more formal and are usually tied to specific tasks or problems, Discussions serve as a less structured platform for questions, ideas, and collaborative problem-solving. They offer a more communal approach to contributing to the project, allowing for brainstorming sessions, polls, Q&As, and even casual conversations around the project's domain.
Active participation in discussions is crucial to maintaining a clear understanding of the project's trajectory. The conversations, especially the polls, could influence major decisions regarding the project's direction. Hence, contributing to discussions is compulsory for all project members.
To recognize the importance of active discussion participation, we are planning to implement a points system for discussions. Details on the criteria and allocation will be released soon, so stay tuned!
Reviewing discussions regularly ensures you are kept abreast of the latest updates, decisions, and the overall direction of the project. It's not just about contributing to the conversations; it's about understanding the evolving context of the project.
Please note that we are in the 'Scoping' phase of the project until July 31st. During this time, we are actively participating in discussions to decide the project's scope and to choose an existing code repository. While there may not be many opportunities to find bugs in code yet, we encourage you to review the project's documentation (like the README and other files) for any inconsistencies or errors. We appreciate your patience and look forward to more active code contributions starting August 1st.
This project is in a state of active development and is constantly evolving. Rules and guidelines can change from time to time. To ensure you're always up to speed, we strongly recommend regularly reviewing the README and its change history. Checking the commit history of the README file can give you an idea of when the last changes were made. Staying updated will ensure you're always following the latest guidelines and requirements of the project. Remember, knowledge is power!