Welcome to "Fork, Commit, Merge"!
A project designed to help you familiarize yourself with the open source contribution workflow on GitHub.
More info about this project, contributing and open source resources, are available on our website at
forkcommitmerge.io
- Prerequisites
- Setup Instructions
- Tasks
- Submitting Your Changes
- Influences
- What's Next?
- Creating New Tasks
- Contact
- License
- List of Contibutors
Before you start, you'll need to install Git.
Also:
- If you are solving JavaScript or TypeScript related issues, you need to install Node.js and npm.
- If your are solving Python related issues, you need to install Python.
- If you are solving Ruby related issues, you need to install Ruby.
- If you are solving PHP related issues, you need to install PHP.
- If you are solving Go related issues, you need to install Golang.
- If you are solving Dart related issues, you need to install Dart.
- If you are solving SQL related issues, you need to install sqlite3.
- If you are solving only HTML, CSS, JSON, YAML or Markdown related issues, you don't need to install anything else.
Git is a version control system that lets you manage and keep track of your source code history.
- For Linux users, you can install Git via your distribution's package manager. For example, on Arch you would use the command:
sudo pacman -S git
and in Ubuntu/Debian:sudo apt-get install git
- For macOS users, you can install Git via Homebrew with the command:
brew install git
- For Windows users, download Git from Git for Windows and follow the installation instructions.
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine, and npm is a package manager for Node.js.
- You can download Node.js and npm from the official Node.js website. This will install both Node.js and npm on your machine. Follow the instructions on the website to install them.
- Visit the official Python website's download page.
- Click on the latest Python release.
- Scroll down to the Files section and download the Windows x86-64 executable installer for 64-bit version of Windows.
- Run the installer file and follow the instructions, making sure to tick the box that says "Add Python to PATH" before clicking Install Now.
Mac OS X should come pre-installed with Python, but in case it's not installed, here's how to install it:
- Visit the official Python website's download page.
- Click on the latest Python release.
- Download the macOS 64-bit installer.
- Open the downloaded .pkg file and follow the instructions to install Python.
Most Linux distributions come with Python pre-installed. To check if you have Python installed, open a terminal and type python3 --version
.
If you need to install or upgrade Python, you can do so with the package manager for your Linux distribution. For Ubuntu, you can use the following commands:
sudo apt update
sudo apt install python3
Download the RubyInstaller for Windows from the official website. Run the installer package and follow the on-screen instructions.
Ruby comes pre-installed on Mac OS X, but if you need to upgrade or install a different version, you can use Homebrew or RVM (Ruby Version Manager).
With Homebrew:
Open terminal and type brew install ruby
With RVM:
Open Terminal and type \curl -sSL https://get.rvm.io | bash -s stable
Then install Ruby with rvm install ruby
Ubuntu/Debian:
Open Terminal and type sudo apt-get install ruby-full
Arch Linux:
Open Terminal and type sudo pacman -S ruby
For other Linux distributions, the command may be different. Refer to the documentation specific to your package manager.
Windows:
- Download the PHP ZIP package from https://windows.php.net/download.
- Extract the ZIP file and rename the extracted directory to php.
- Move the php directory to C:.
- Add C:\php to your system's PATH environment variable.
Mac OS:
PHP comes pre-installed on Mac OS X. To upgrade or install a different version, consider using Homebrew:
- Open Terminal and type
brew install php
.
Linux (Ubuntu/Debian):
- Open Terminal and type
sudo apt install php
.
For macOS and Linux, you can use the terminal to install Go:
- On macOS, if you have Homebrew installed, type:
brew install go
. - On Linux, the command will depend on your distro's package manager. For example, on Ubuntu or Debian, you would type:
sudo apt-get install golang
. - On Windows, go to the official Go downloads page, and download the binary release suitable. Use the MSI installer and follow the prompts to install the Go tools. It is recommended to leave the default settings for when asked about installation directory or PATH variables.
To check your installation, open a terminal and type: go version
. This should return the installed version of Go.
For macOS and Linux, you can use the terminal to install Dart:
- On macOS, if you have Homebrew installed, type:
brew install dart
. - On Linux, the command will depend on your distro's package manager. For example, on Ubuntu or Debian, you would type:
sudo apt-get install dart
.
For Windows, go to the official Dart SDK Install page, and download the SDK suitable for your system. Use the Dart installer and follow the prompts to install the Dart SDK. It is recommended to leave the default settings for when asked about installation directory or PATH variables.
To check your installation, open a terminal and type: dart --version. This should return the installed version of Dart.
SQLite comes pre-installed on macOS and most Linux distributions. To verify if sqlite3 is installed, you can open a terminal and type:
sqlite3 --version
If SQLite is installed, this will output the version number.
To install SQLite on Windows:
- Visit the SQLite download page.
- In the "Precompiled Binaries for Windows" section, download the
sqlite-tools-win32-x86-xxxxxx.zip
file. - Unzip the downloaded file. It will create a directory named
sqlite-tools-win32-x86-xxxxxx
. - Move the directory to
C:\
(or another location if you prefer) and rename it tosqlite
. - Add
C:\sqlite
to your PATH environment variable.
To check whether SQLite has been installed successfully, open Terminal window and run:
sqlite3 --version
This should output the version number if SQLite is installed correctly.
Note that the terminal in Visual Studio Code (VS Code) uses your system's PATH, so once you've added SQLite to your PATH as described above, you'll be able to use SQLite in the VS Code terminal.
- 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.
- Clone your forked repository to your local machine with the command:
git clone https://github.com/<your-username>/fork-commit-merge.git
Replace '' with your GitHub username.
- Navigate to your project folder and install the necessary dependencies. If you are solving other than JavaScript or TypeScript issues, you don't need to run
npm i
.
cd fork-commit-merge
npm i
- Create a new branch with the command:
git switch -c fix-issue
We present several tasks with different languages and varying difficulty.
Firstly, open the tasks
directory and select which language you want to work with by opening one of the following directories:
- HTML
- CSS
- JavaScript
- TypeScript
- Python
- Ruby
- PHP
- Go
- Dart
- SQL
- JSON
- YAML
- Markdown
Then you can open one of these directories to choose between three difficulties:
- Easy
- Medium
- Hard
After that you are ready to get solving!
Go to the task you selected to get more info about the issue by clicking one of the following:
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!
Once you've made the necessary changes and all the tests are passing, you're ready to submit your changes!
- Stage your changes with the command:
git add files-that-you-changed
- Commit your changes with the command:
git commit -m "Fixed issue"
- 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 "fork-commit-merge had recent pushes" and button "Compare & Pull request" next to it.
-
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 to make all of the tests pass successfully.
-
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.
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!
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:
- First Contributions: A hands-on guide to making your first open source contribution.
- Contribute To This Project: A project that encourages contributors to add their own profile information.
- Contribute to Open Source: A project that simulates the GitHub workflow to help beginners get their first taste of open source.
I highly recommend checking out these projects if you want to learn more about contributing to open source!
Congratulations on making your first open source contribution! If you're looking for more ways to contribute, I invite you to check out my other projects. Just click here to find more. These projects contain real issues that you can help resolve. 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!
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, including relevant code examples. We encourage you to propose tasks across the programming languages already represented in our project, as this helps broaden its versatility and accessibility for developers worldwide.
For any queries, feel free to open an issue or reach out to me at niko.hoffren@gmail.com.
This project is licensed under the terms of the MIT License.
Massive thanks to all of the these fine individuals who contributed to this project!