+
Skip to content

Fork, Commit, Merge. A project designed to help you familiarize yourself with the open source contribution workflow on GitHub!

License

Notifications You must be signed in to change notification settings

fork-commit-merge/fork-commit-merge

Repository files navigation

Fork, Commit, Merge Version 1.2.0 LICENSE Issues Stars Forks PR:s Welcome First Contributors GitHub repo size


Welcome to "Fork, Commit, Merge"!
A project designed to help you familiarize yourself with the open source contribution workflow on GitHub, as well as to help you learn the basics of programming with different languages, libraries and frameworks.

More info about this project, contributing and open source resources, are available on our website at
forkcommitmerge.dev

HTML HTMX CSS SASS Tailwind CSS Bootstrap ReScript CoffeeScript JavaScript TypeScript React Next.js Three.js Vite Vue.js Svelte Astro Solid.js Angular Ember.js GraphQL Node.js NPM Yarn Nginx Apollo Express.js Electron.js Jest Jasmine Vitest C C++ C# .Net Blazor D F# Ada Java Kotlin Scala Groovy Python NumPy Flask Django Solidity Vyper Ruby Rails Elixir Crystal PHP Laravel Go Dart Flutter Swift React Native Julia Rust Haskell Lua Clojure OCaml LaTeX Lisp Fortran Pascal COBOL Erlang Smalltalk Zig R Nim MATLAB Octave SQL TLA+ Bash Perl Mojo ASM JSON YAML TOML XML CSV Markdown Docker Kubernetes Git

Find awesome badges for your project in this repository: markdown-badges

Table of Contents

line

Quick Start

  1. Go to Setup Instructions and follow the instructions about how to start working with the project.
  2. Go to Tasks and choose a task you want to work on. You can find instructions for installing the required tools for each task in Prerequisites.
  3. Go to Submitting Your Changes and follow the instructions about how to submit your changes.

line

Prerequisites

Before you start working on the project, you need to install the prerequisites for the task you want to work on.

You can find the prerequisites for each task in the PREREQUISITES.md file.

line

Setup Instructions

  1. Fork this repository by clicking on the "Fork" button at the top-right corner of this page. This creates a copy of the repository in your GitHub account.

Fork

  1. Clone your forked repository by clicking the "Code" button:

Code

That will open this small window:

Clone

After that you can copy and paste the URL the to your local machine with the command:

git clone https://github.com/<your-username>/fork-commit-merge.git
  1. Navigate to your project folder:
cd fork-commit-merge
  1. Add a reference to the original repository for future updates:
git remote add upstream https://github.com/fork-commit-merge/fork-commit-merge.git

(Remember to keep here the original repository URL, not your forked one, so the username in this needs to be fork-commit-merge, not your own username.)

  1. Check the remotes for this repository:
git remote -v

You should now see the origin and upstream remotes listed.

  1. Take a pull from the upstream repository to your main branch to keep it at par with the main project:
git pull upstream main
  1. Create a new branch with the command:
git switch -c fix-issue

Now you are ready to start working on the issues! Remember every once in a while to pull from the upstream repository to keep your local repository up to date with the main project.

If you are not familiar about the contribution process, you can check out some useful videos in our website's Resources section: forkcommitmerge.dev/resources.

Note: We recommend to always create new branch with each Issue you solve! Otherwise the pull requests will get too large and there could be possible merge conflicts.

Tasks

Note: These tasks will not count towards Hacktoberfest or any other similar "coding competitions", since this repository is an educational repository, hence against the Hacktoberfest guidelines.

We present over 130 several tasks for different languages, libraries and frameworks with varying difficulty. You can choose which task you want to work with and which difficulty you want to solve. You can also choose to solve multiple tasks if you want to. Just remember to create a new branch for each task you solve.

Firstly, in your forked/cloned repository, open the tasks directory and select which language you want to work with by opening one of the following directories:

  • HTML
  • HTMX
  • CSS
  • SASS
  • Tailwind CSS
  • Bootstrap CSS
  • ReScript
  • CoffeeScript
  • JavaScript
  • JavaScript/Jest
  • JavaScript/Jasmine
  • TypeScript
  • TypeScript/Vitest
  • React
  • Next.js
  • Three.js
  • Vue.js
  • Svelte
  • Astro
  • Angular
  • Solid.js
  • Ember.js
  • GraphQL
  • NGINX
  • Express.js
  • Electron.js
  • C
  • C++
  • C#
  • Blazor
  • D
  • F#
  • Ada
  • Java
  • Kotlin
  • Scala
  • Groovy
  • Python
  • Flask
  • Django
  • Solidity
  • Vyper
  • Ruby
  • Rails
  • Elixir
  • Crystal
  • PHP
  • Laravel
  • Go
  • Dart
  • Flutter
  • Swift
  • React Native
  • Julia
  • Rust
  • Haskell
  • Lua
  • Clojure
  • OCaml
  • LaTeX
  • Lisp
  • Fortran
  • Pascal
  • COBOL
  • Erlang
  • Smalltalk
  • Zig
  • R
  • Nim
  • MATLAB
  • Octave
  • SQL
  • TLA+
  • Bash
  • Perl
  • Mojo
  • ASM (Assembly)
  • JSON
  • YAML
  • TOML
  • XML
  • Markdown
  • Docker
  • Kubernetes

Then you can open one of these directories to choose between three difficulties:

  • Easy
  • Medium
  • Hard

After that you are ready to get solving!

In the GitHub page of the Fork Commit Merge repository, you can find a list of all tasks in the issues tab, which you can use to solve the tasks. You can search for the task you want to solve and then click on the issue to open it.

Note: You don't have to ask a permission to start solving the issue or get assigned, since these issues are supposed to always be open for new contributors. You can just simply start working with the issue right away! Remember that in real world issues you would usually need to ask permission to get assigned to certain issue to prevent multiple people to working on the same issue at the same time, which would result some contributors wasting their time.

line

Submitting Your Changes

Once you've made the necessary changes requested in the task, you're ready to submit your changes!

  1. Stage your changes with the command:
git add files-that-you-changed
  1. Commit your changes with the command:
git commit -m "Fixed issue"
  1. Push your changes to your forked repository with the command:
git push origin fix-issue

Once you've pushed your changes to GitHub, you're ready to create a pull request. Go to your forked repository on GitHub.

  • You should see text "fix-issue had recent pushes" (or whatever your branch name is) and button "Compare & pull request" next to it.

Compare & Pull request

  • Click the "Compare & pull request" button to proceed to the pull request page of the original fork-commit-merge repository.

  • Fill in the title and description boxes to inform what you did in the task and how you got it to work. You can also add some additional information such as screenshots, if you want or if they are required in the task description.

  • Finally, click "Create pull request" to finish creating the pull request.

Congratulations on making your first open source contribution on GitHub!

Sit back and wait for a response and feedback of the pull request. If everything is working fine, you should get the pull request merged. If not, you will be requested to do some changes to your code.

Remember to wait for us to review your pull request, do not close it yourself. If you are asked to make changes, you can do so by committing them to the same branch, there is no need to close the current Pull Request and open a new one. If you don't respond to the review and make the necessary changes within 4 days, the Pull Request will be closed automatically.

After the merge, actions-user bot will reset the files for the next contributor.

All the contributors of this project will also be added to the List of Contributors in our website.

line

Best Practices

Programming languages, despite their diverse syntax and underlying paradigms, universally emphasize the importance of adhering to best practices. These practices evolve over time, influenced by shared challenges faced by developers, innovations in the field, and the inherent features and limitations of the languages themselves. This section serves as a compass, guiding you through the idiomatic ways of coding in various languages, ensuring not only that your code works but also that it aligns with the conventions and norms of the community.

Why Follow Best Practices?

  • Readability: Code is read more often than it's written. Adopting best practices ensures your code remains accessible and comprehensible to other developers, or even to your future self!

  • Maintainability: Idiomatic code, by adhering to established patterns and standards, is easier to update, debug, and expand upon.

  • Performance: Often, best practices evolve in response to the understanding of a language's performance characteristics. Writing idiomatic code might also mean squeezing the best performance out of your programs.

  • Community Support: If you're writing code in the way that the broader community expects, you're more likely to receive help when you run into issues. Moreover, you can benefit from tools, linters, and extensions built with these practices in mind.

  • Reducing Errors: Many best practices are born from the lessons of countless debugged issues. By adhering to them, you’re sidestepping many pitfalls before they even occur.

In our Fork, Commit, Merge website, you'll find guides tailored to various languages, libraries and frameworks. Whether you're dabbling in a new language or revisiting a familiar one, these insights will help ensure your code is elegant, efficient, and effective.

line

Influences

This project was inspired by a number of fantastic resources designed to help newcomers make their first contributions to open source. In particular, we would like to acknowledge:

I highly recommend checking out these projects if you want to learn more about contributing to open source!

line

What's Next?

Congratulations on making your first open source contribution! If you're looking for more ways to contribute, you are also welcome to work with the Fork, Commit, Merge website repo, which is located here. The website is built with React.js, NextJS, TypeScript, TailwindCSS, MongoDB Atlas and Clerk. So if you are interested of those technologies, you can contribute to the website repo by creating new features, fixing bugs or improving the code quality.

You can also check out more information about how to make open source contributions in How to Contribute of our website.

Also i would really appreciate if you could leave a star, so more developers can find this project. I look forward to seeing your contributions!

line

Sponsors

You can sponsor this project by clicking the "Sponsor" button at the top of this page.

Sponsor

Your sponsorship will help me to keep this project alive and to continue developing it further. You will also get your name and/or logo listed in our website at forkcommitmerge.dev as well as in this repository.

You can also support me by buying me a coffee at buymeacoffee.com/nikohoffren or clicking the "Buy me a coffee" button at the header of our website.

line

Creating New Tasks

Feel free to contribute to this project also by creating new tasks for other contributors to tackle. To do so, please submit a pull request containing detailed information about the task, such as level of difficulty, language/library/framework or other technology, and relevant code examples. We encourage you to propose tasks across all different programming languages, libraries, frameworks and other technologies in the world.

line

Contact

For any queries, feel free to open an issue or reach out to me at niko.hoffren@gmail.com.

line

License

This project is licensed under the terms of the MIT License.

line

List of Contributors

Massive thanks to all of the these fine individuals who contributed to this project!

About

Fork, Commit, Merge. A project designed to help you familiarize yourself with the open source contribution workflow on GitHub!

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors 836

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载