Skip to content
Sahil edited this page Apr 8, 2019 · 1 revision

GSSoC 2018

What to contribute?

Coding Part

  • Implementation of data structures and algorithms

Blog [not finalized]

  • Write explanations to the problems solved including some analysis and approach to ultimately reach a better algorithm
  • Explain the implementations of the data structures/algorithms
  • Share your experience with taking part in online contests
  • Animations to understand some of the data structures/algorithms

How to contribute?

Issues:

  • There will be separate issues for various Data structure and Algorithm implementations.
  • Problem solutions are no longer a part of GSSoC. You can contribute for them, but it would not count towards your score.

If an issue for the DS/Algo you wish to contribute to is not yet created, please write about it in Slack channel. We will create an issue for that ASAP or even you can create an issue for it yourself. We will review it and add appropriate labels.

Choosing Issues:

  • The sole purpose of the contribution should be that you understand, learn and implement those Data structures and algorithms which you have not implemented before.
  • So, rather than choosing issues to get more points, please focus on the learning part and choose issues wisely.

Creating Issues:

  • Create issues with appropriate description.
  • If there can be sub-tasks possible, add Task lists in the description.

Taking up Issues:

  • If there are other persons who have already claimed the issue, don't worry, there is so much to contribute to in this repository. Please don't spam in that issue.
  • If no one is working on it, please comment on the issue that I am working on this issue.
  • If you have taken up one issue, you cannot take up another issue unless you send a pull request for the previous issue since in some cases it might take longer sometimes for the previous issue to be approved by 3 mentors. This would make sure that things are normalized for everyone.
  • An issue may have some sub-tasks, each of which if independent, can be taken up by different participants.
  • If you claim an issue, you will get 2 days to send a PR. In case you fail to do so, that particular issue can be taken by any other participants.

More clarity on Sub-tasks:

  • Multiple people can take up different sub-tasks on an issue.
  • One person can also take up multiple sub-tasks provided they are related to each other or they are dependent on each other.
  • If you are working on some sub-tasks, kindly update the issue description by mentioning yourself in those sub-tasks (e.g. - [ ] Subtask1 (working: @xyz) )
  • Thus, the sub-task list will mention who is working on which sub-task. If you find that one of the sub-task is not taken, you can ask to take it up, provided you are not working on any other issue.
  • If you have sent a PR for any of the sub-tasks, just check(✅) those in the task list on that issue.

Working on Issues:

  • We really want you to work on the issues yourself, rather than taking up the code from somewhere and pasting it here. So, please DON'T PLAGIARIZE, if we find out, then you can be disqualified from this project.
  • After you are done, please send a pull request mentioning the issue in the description.

Acceptance of Pull request:

  • Your code would be reviewed for the following points:
    • It should work well.
    • It should have proper indentation.
    • It should be well commented.
  • An issue will be merged only when it will have approvals from at-least 2 mentors. Participants can tag mentors in the comment section if any PR is missed out by some mentors.
  • You can start working on another issue as soon as you send a PR for the previous issue you claimed.

General guidelines / Expectations from you:

  • Do follow the Coding Standards as given in the Wiki page. It is very likely that your PR won’t get merged until you do that.
  • Always take input from user and via appropriate prompts (like “Please enter the numbers in sorted order:“) provided to the user so that we can test your programs whether they run properly.
  • Provide a brief and precise information about the time and space complexities of your operations involved in the program. The explanation you provide should answer the question why is this the time complexity? Again, very likely that if you have not done so, we will request you to make changes.
  • We have noticed that some of you copied the code/explanation from geeksforgeeks or some other site, please make sure that you don’t do so, since we can also get the entire code from there, but the purpose of this is that you write code and explanation in your own words so that you understand it better and your code can help some one else.
  • Do not add any extra files via commit, only the required code files. If some binary files are generated, either delete them manually or include them in .gitignore file.
  • Do name the files properly. Also, if the folder where this file should be kept, already exists, then use that, otherwise create a new folder in the right directory (Algorithms or Data Structures).

Github workflow:

  • Some of you, who are not much familiar with the Fork and Pull Request workflow and/or if you are sending PR’s directly from your master branch and/or if you are facing issues while updating the master branch of your fork from upstream, please read the README of this repo.
  • Also, reference the issue number in the PR’s description.

If there is anything you think can be improved, let us discuss over it in the Slack channel.