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
Find awesome badges for your project in this repository: markdown-badges
An Integrated Development Environment (IDE) is a software application that consolidates basic tools required for software testing and development. An IDE typically consists of a source code editor, build automation tools, and a debugger. Some IDEs, like Android Studio or Visual Studio, even offer more advanced features such as version control, databases, cloud services, and more. Why use an IDE? Using an IDE can significantly speed up the development process by offering a variety of tools and features under one roof.
Here are a few reasons why developers use IDEs:
Efficiency: With everything in one place, developers can write, test, and debug code without needing to switch between different tools.
Code Assistance: Many IDEs offer features like autocompletion, syntax highlighting, and suggestions, making the code-writing process smoother.
Integrated Debugging: Integrated debuggers allow developers to test and debug their programs within the IDE, speeding up the development cycle.
Extensions & Plugins: Most modern IDEs support a wide range of extensions and plugins, enabling developers to customize their environment and add even more functionalities.
We recommend using VS Code as your IDE for this project. It's free, open-source, and supports a wide range of languages and extensions. You can download it from the VS Code - Official website. However, if you prefer to use another IDE, that's fine too!
Instructions on how to install an IDE that suits for you can be found on our website at forkcommitmerge.io/ide!
Git is a version control system that lets you manage and keep track of your source code history.
sudo pacman -S git
and in Ubuntu/Debian: sudo apt-get install git
brew install git
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine, and NPM is a package manager for Node.js.
For SASS related issues, you need to install Node.js and NPM.
For Tailwind CSS related issues, you need to install Node.js and NPM.
For ReScript related issues, you need to install Node.js and NPM.
CoffeeScript is a programming language that transcompiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python, and Haskell in an effort to enhance JavaScript's brevity and readability.
First you have to make sure you have Node.js and NPM installed.
Install CoffeeScript with this command:
npm install --global coffeescript
For JavaScript related issues, you need to install Node.js and NPM.
For TypeScript related issues, you need to install Node.js and NPM.
For React related issues, you need to install Node.js and NPM.
For Next.js related issues, you need to install Node.js and NPM.
For Three.js related issues, you need to install Node.js and NPM.
For Vue.js related issues, you need to install Node.js and NPM.
For Svelte related issues, you need to install Node.js and NPM.
For Astro related issues, you need to install Node.js and NPM.
For Angular related issues, you need to install Node.js and NPM.
For Ember.js related issues, you need to install Node.js and NPM.
For GraphQL related issues, you need to install Node.js and NPM.
Install Homebrew if you haven't:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Install NGINX:
brew install nginx
Install NGINX:
sudo apt install nginx
Follow this guide to install NGINX on Windows.
For Express.js related issues, you need to install Node.js and NPM.
For Electron.js related issues, you need to install Node.js and NPM.
For Jest related issues, you need to install Node.js and NPM.
For Jasmine related issues, you need to install Node.js and NPM.
For Vitest related issues, you need to install Node.js and NPM.
Setup the C environment in VS Code:
Set up a compiler:
sudo apt install gcc
for Debian-based distributions).If you are using VS Code, you can install the C++ extension: Launch VS Code, head to Extensions (or press Ctrl+Shift+X), and search for C++. Install the one by Microsoft called C/C++.
Install a C++ Compiler:
sudo apt-get install g++
.Using the Installer:
Using the Command Line with Chocolatey:
If you have Chocolatey installed, you can use it to install the .NET SDK:
choco install dotnet-sdk
The instructions can vary depending on the Linux distribution. Here's a general overview:
For example, for Ubuntu, the instructions at the time of writing are:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk
And for Arch Linux, you can just install the dotnet-sdk package from the official repositories:
sudo pacman -S dotnet-sdk
Please note that the version and specific commands can change, so always refer to the official documentation for the most up-to-date instructions.
Using the Installer:
Using Homebrew:
If you have Homebrew installed, you can use it to install the .NET SDK:
brew install --cask dotnet-sdk
After installation, you can test if it's installed correctly by running:
dotnet --version
Setting up C# in Visual Studio Code:
Look the instructions for C# (Dotnet-SDK) to install the .NET SDK.
For Windows and macOS, you can download the DMD (D Compiler) from the official website and follow the installation instructions.
For Linux you can use your package manager, for example in Arch Linux you can install DMD with sudo pacman -S dmd
.
VS Code Setup:
For Windows Users:
For macOS and Linux Users:
Visual Studio Code:
Windows:
macOS/Linux:
brew install gnat
or on Ubuntu: sudo apt install gnat
.gnatls --version
.Install Java Development Kit (JDK):
Before working with Java in VS Code, you must have the Java Development Kit (JDK) installed on your machine.
Install Java Extensions for VS Code:
Configure Java in VS Code:
java.home
setting in VS Code to point to your JDK location.brew install kotlin
sudo pacman -S kotlin
sudo snap install --classic kotlin
Install Kotlin Language Extension:
For VS Code you can install the Kotlin Language Extension like this:
Install Java Development Kit (JDK):
macOS:
brew install scala sbt
Linux:
Ubuntu/Debian:
sudo apt-get install scala sbt
Windows:
You can download and install from the official websites: Scala & SBT.
Install the Scala Language Extension for VS Code:
Install Java:
Install Groovy:
brew install groovy
.sudo apt-get install groovy
and on Arch Linux sudo pacman -S groovy
.Mac OS X should come pre-installed with Python, but in case it's not installed, here's how to install it:
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
You should have already installed Python before installing Flask. If you haven't, please do so first. You can check if you have Python installed by opening a terminal and typing python3 --version
.
In most operating systems, after you have Python installed, you can install Flask with the command:
pip install Flask
In Arch Linux you can run:
sudo pacman -S python-flask
pip install django
sudo pacman -S python-django
Before you can start writing Solidity code, you need to install Node.js and NPM. After installing Node.js and NPM, you can install the Truffle development environment for Ethereum with this command:
npm install -g truffle
If you are using VS Code, you can install the "Solidity" extension by Juan Blanco from the VS Code Marketplace.
It is highly recommended to use a Python virtual environment. If you don't have virtualenv installed, you can install it using pip:
pip install virtualenv
Create a new virtual environment:
virtualenv vyper-env
Activate the virtual environment:
On macOS and Linux:
source vyper-env/bin/activate
On Windows:
.\vyper-env\Scripts\activate
Install Vyper within the virtual environment:
pip install vyper
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.
Install Ruby if you haven't already.
MacOS:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install ruby
gem install rails
On Windows:
gem install rails
.On Linux:
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm install ruby
gem install rails
Install the ElixirLS extension for VS Code: Launch VS Code, head to Extensions (or press Ctrl+Shift+X), and search for ElixirLS. This extension provides Elixir language support and debugger.
Install Elixir:
sudo apt-get install elixir
brew install elixir
Linux (Ubuntu): sudo apt install crystal
Linux (Arch): sudo pacman -S crystal
macOS: brew install crystal
Windows: Official Installation Guide
VS Code Extension:
Windows:
Mac OS:
PHP comes pre-installed on Mac OS X. To upgrade or install a different version, consider using Homebrew:
brew install php
.Linux (Ubuntu/Debian):
sudo apt install php
.Install PHP:
Install Laravel:
composer global require laravel/installer
to install Laravel.C:\Users\<username>\AppData\Roaming\Composer\vendor\bin
to your PATH and in Linux export PATH=$PATH:~/.config/composer/vendor/bin
to your .bashrc
file.For macOS and Linux, you can use the terminal to install Go:
brew install go
.sudo apt-get install golang
.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:
brew install dart
.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.
Flutter installation includes several steps, so it's recommended to follow the official Flutter installation guide.
Installing Flutter requires also installing Dart, which you can either install separately here, but it can also be installed with Android Studio or XCode. You can use VS Code as your IDE if you like, but it is recommended to still install Android Studio for Windows and Linux or Xcode for MacOS, as they include the Android SDK and iOS SDK respectively. However, you can also install Flutter without installing Android Studio or Xcode, but you'll need to install the Android SDK and iOS SDK separately.
Install Flutter and Dart Plugins in VS Code:
Install Swift:
VS Code Setup:
Additional Resources:
Install React Native CLI:
npm install -g react-native-cli
Set up the Android development environment by following the React Native Environment Setup.
sudo pacman -S julia
, or download the binaries from the Official Julia website.Install the Julia extension for VS Code:
Windows:
rustc --version
.Mac and Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustc --version
.Install Haskell Platform:
The Haskell Platform provides everything needed to get started with Haskell.
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
in your Terminal and following the instructions.Install Haskell Extensions for VS Code:
brew install lua
sudo apt-get install lua5.3
sudo pacman -S lua
On macOS:
brew install clojure/tools/clojure
On Linux (using curl):
curl -O https://download.clojure.org/install/linux-install-1.10.3.967.sh
chmod +x linux-install-1.10.3.967.sh
sudo ./linux-install-1.10.3.967.sh
On Arch Linux:
sudo pacman -S clojure
On Windows:
Setting up Calva for VS Code:
Install Leiningen, a popular Clojure build tool:
On macOS:
brew install leiningen
On Arch Linux:
sudo pacman -S leiningen
You can use the OPAM (OCaml Package Manager) to install the OCaml compiler and tools.
On macOS:
brew install opam
opam init
opam switch create 4.13.1
eval $(opam env)
On Linux (Ubuntu/Debian):
sudo apt-get install opam
opam init
opam switch create 4.13.1
eval $(opam env)
On Windows:
Installation is a bit more involved. Consider using WSL (Windows Subsystem for Linux) or refer to the official OCaml for Windows instructions.
Depending on your operating system, you'll need a TeX distribution:
sudo apt-get install texlive
for Debian/Ubuntu distributions)While you can use any text editor (like VS Code) to write LaTeX, specialized LaTeX editors make the process smoother. You can download for example TeXstudio, TeXmaker, or Overleaf.
Install SBCL (Steel Bank Common Lisp):
Depending on your OS, you can follow the instructions on the Official SBCL website to install SBCL.
Install the Lisp Extension for VS Code:
Set Up Your Lisp Environment (Windows):
After installing the extension, you may need to set up your Lisp environment by pointing it to your SBCL installation. You need to adjust the configuration (settings.json) and set the lisp.sbcl.path to the path where SBCL is installed.
Depending on your OS, here's how you install the Fortran compiler:
Windows:
Linux:
Ubuntu/Debian:
sudo apt-get install gfortran
Arch Linux:
sudo pacman -S gcc-fortran
macOS:
If you have Homebrew:
brew install gcc
Setting up Visual Studio Code:
Windows:
Linux:
macOS:
Installing GnuCOBOL:
sudo apt install gnucobol
or equivalent for your distribution.brew install gnu-cobol
.Windows:
Linux: Ubuntu/Debian:
sudo apt-get install erlang
Arch Linux:
sudo pacman -S erlang
macOS:
Using Homebrew:
brew install erlang
Setting up VS Code extension:
If you're using Linux, you can install GNU Smalltalk through your package manager. For example, on Ubuntu:
sudo apt-get install gnu-smalltalk
In Arch Linux you can download Smalltalk packages from AUR repositories. For example, you can use Yay:
yay -S smalltalk
For other OS installations, you can visit GNU Smalltalk official website.
Windows and macOS:
Linux:
The command depends on your distribution.
For example, on Ubuntu/Debian, you can use:
sudo apt-get install zig
In Arch Linux:
sudo pacman -S zig
Setting up VS Code extension:
Windows:
macOS:
brew install R
.Linux:
sudo apt-get install r-base
and on Arch: sudo pacman -S r
.Setting up VS Code extension:
R
and install the R extension provided by "REditorSupport".On Windows:
On macOS:
brew install nim
.On Linux:
sudo apt-get install nim
or on Arch Linux sudo pacman -S nim
.Install MATLAB:
Install the MATLAB Extension for Visual Studio Code:
Configure the MATLAB Extension:
Install Octave:
Install the Octave extension for VS Code:
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:
sqlite-tools-win32-x86-xxxxxx.zip
file.sqlite-tools-win32-x86-xxxxxx
.C:\
(or another location if you prefer) and rename it to sqlite
.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.
The TLA Toolbox is an IDE (integrated development environment) for the TLA+ tools.
Install the TLA+ Toolbox: This is the standard IDE for TLA+. You can download it from here.
Install the TLA+ extension for Visual Studio Code from the VS Code marketplace.
Ensure you have a UNIX-like environment. If you're on Linux or MacOS, you're already set. Windows users might want to look into WSL (Windows Subsystem for Linux) or use Git Bash, which you should already have in your machine if you have installed Git.
sudo apt-get install perl
and in Arch Linux sudo pacman -S perl
.Setting up VS Code for Perl:
brew update
brew upgrade modular
modular install mojo
To install Mojo on Linux (Ubuntu/Debian), you need to install Modular first. Follow these steps:
sudo apt update
sudo apt install modular
modular install mojo
Using NASM with Cygwin:
Now you can use the Cygwin terminal to assemble and run your Assembly programs.
Open the terminal and run the following command to install GNU Assembler (GAS):
sudo apt update
sudo apt install build-essential
To install NASM, run:
sudo apt install nasm
Install NASM using Homebrew:
brew install nasm
Docker Desktop for Windows: You must have Hyper-V and Containers Windows features enabled.
Docker Toolbox: For older systems that do not meet the Docker Desktop for Windows requirements.
Update package index and install prerequisites:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Add Docker APT repository:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Update package index and install Docker:
sudo apt-get update
sudo apt-get install docker-ce
Start and enable Docker service:
sudo systemctl enable docker
sudo systemctl start docker
After installation on any of these platforms, you can verify the installation by running docker --version
in a terminal to see the installed Docker version.
Remember to consult the official documentation for the most up-to-date and detailed instructions:
That will open this small window:
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
Replace 'your-username' with your GitHub username.
cd fork-commit-merge
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.)
git remote -v
You should now see the origin and upstream remotes listed.
git pull upstream main
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.io/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.
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, open the tasks
directory and select which language you want to work with by opening one of the following directories:
Then you can open one of these directories to choose between three difficulties:
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! 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.
Once you've made the necessary changes requested in the task, you're ready to submit your changes!
git add files-that-you-changed
git commit -m "Fixed issue"
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.
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.
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.
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!
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!
You can sponsor this project by clicking the "Sponsor" button at the top of this page.
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.io 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.
You can find the leaderboard of the Top 20 contributors in our website at https://forkcommitmerge.io/leaderboard. You can also find all of your own contributions to this project in the Dashboard of our website when you log in.
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.
For any queries, feel free to open an issue or reach out to me at [email protected].
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!