Skip to content

Latest commit

 

History

History
66 lines (40 loc) · 4.67 KB

CONTRIBUTING.md

File metadata and controls

66 lines (40 loc) · 4.67 KB

Anatomy of an open source project:

Every open source community is different.

Spending years on one open source project means you’ve gotten to know one open source project. Move to a different project, and you might find the vocabulary, norms, and communication styles are completely different.

That said, many open source projects follow a similar organizational structure. Understanding the different community roles and overall process will help you get quickly oriented to any new project.

A typical open source project has the following types of people:

Author: The person/s or organization that created the project.

Owner: The person/s who has administrative ownership over the organization or repository (not always the same as the original author).

Maintainers: Contributors who are responsible for driving the vision and managing the organizational aspects of the project (may also be authors or owners of the project).

Contributors: Everyone who has contributed something back to the project.

Community Members: People who use the project. They might be active in conversations or express their opinion on the project’s direction.

Bigger projects may also have subcommittees or working groups focused on different tasks, such as tooling, triage, community moderation, and event organizing. Look on a project’s website for a “team” page, or in the repository for governance documentation, to find this information.

A project also has documentation. These files are usually listed in the top level of a repository.

LICENSE: By definition, every open source project must have an open source license. If the project does not have a license, it is not open source.

README: The README is the instruction manual that welcomes new community members to the project. It explains why the project is useful and how to get started.

CONTRIBUTING: Whereas READMEs help people use the project, contributing docs help people contribute to the project. It explains what types of contributions are needed and how the process works. While not every project has a CONTRIBUTING file, its presence signals that this is a welcoming project to contribute to.

CODE_OF_CONDUCT: The code of conduct sets ground rules for participants’ behavior associated and helps to facilitate a friendly, welcoming environment. While not every project has a CODE_OF_CONDUCT file, its presence signals that this is a welcoming project to contribute to.

Other documentation: There might be additional documentation, such as tutorials, walkthroughs, or governance policies, especially on bigger projects.

Finally, open source projects use the following tools to organize discussion. Reading through the archives will give you a good picture of how the community thinks and works.

Issue tracker: Where people discuss issues related to the project.

Pull requests: Where people discuss and review changes that are in progress.

Discussion forums or mailing lists: Some projects may use these channels for conversational topics (for example, “How do I…“ or “What do you think about…“ instead of bug reports or feature requests). Others use the issue tracker for all conversations.

Synchronous chat channel: Some projects use chat channels (such as Discord or IRC) for casual conversation, collaboration, and quick exchanges.

Adding your solution to the repository by creating A Pull Request

If you want to add something awesome to contribute to the repository, this is how you do it.

You'll need a GitHub account!

  1. Go to given file where you could see the problem.
  2. See the constraints, input and output formats of the problem and write your function accordingly. (Would help you to write a clean code.)
  3. Run your solution on local machines and check for some test cases.
  4. Click on create new file in that folder only.
  5. Copy your code there and with SolutionByA.cpp [ A would be Your Name - Like SolutionByShoaib.cpp ]
  6. After copying, click on propose new file.[ At the Bottom]
  7. Then You'd be redirected to new page, where you need to click on create pull request.
  8. Add your comments or anything you want to tell abour you solution.
  9. Then Click on create pull request and write one line description in box above the button.
  10. Your solution is pushed in the repository.
  11. If you want to add a new problem, then add a readMe.md together to explain the problem and choose appropriate sections such as Dynamaic Programming, Greedy Algorithms, Data Structure, etc to push your readMe and solution file. For example - If you are adding Tim Sort solution, go to Array or Vector folder inside Data Structure Section and then create a folder Tim Sort and then add both of your files there.