Skip to content

Introduction to Contributing

Sahil edited this page Oct 8, 2019 · 3 revisions

Important: Please don't copy code from anywhere

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 your PR can be marked as invalid.

What to contribute?

Coding Part

  • Implementation of data structures and algorithms

Blog

  • 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:

  • Create an issue mentioning the Algorithms and Data Structures you wish to implement.

Creating Issues:

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

Taking up Issues:

  • Please comment on the issue that you wish to work on it. We will try to respond ASAP.
  • 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.
  • An issue may have some sub-tasks, each of which if independent, can be taken up by different 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.

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 Gitter channel.