Fork, Commit, Merge -logo

Welcome to Fork, Commit, Merge

Your one-stop resource hub for mastering GitHub contributions

HTMLHTMXCSSSASSTailwind CSSBootstrap CSSReScriptCoffeeScriptJavaScriptTypeScriptReactNextJSThreeJSViteVueAstroAngularEmber.jsGraphQLSvelteNodeJSNPMYarnNGINXApolloExpress.jsElectron.jsJestJasmineVitestCC++C#.NETBlazorDF#JavaKotlinScalaGroovyGamemakerPythonNumPyFlaskDjangoVyperSolidityRubyRuby on RailsElixirCrystalPHPLaravelGoDartFlutterSwiftReact NativeJuliaRustHaskellLuaClojureOCamlLaTeXLispFortranPascalCOBOLErlangSmalltalkZigRNimMATLABOctaveScratchSQLTLA+BashPerlMojoASMNixJSONYAMLTOMLXMLCSVMarkdownDockerKubernetesGit

Become a part of our thriving community of over 650 inspiring developers who have already contributed to this project!

Fork, Commit, Merge is your one-stop resource hub for mastering GitHub contributions! Whether you're a novice coder or an experienced developer, our comprehensive guides are designed to streamline your GitHub journey. We delve into everything from basic Git commands to intricate pull request processes, making collaboration seamless and efficient.

Learn the ins and outs of forking, committing, and merging with our easy-to-follow tutorials and expert advice. At Fork Commit Merge, we're passionate about empowering you to contribute confidently and effectively to the open-source world.

Let's code, collaborate, and create together!

About the Fork, Commit, Merge project

"Fork, Commit, Merge" is an educational and practical project aimed at helping developers - both newcomers and seasoned - improve their skills in open-source contribution, problem-solving, finding bugs, testing, and much more in 133 individual issues encompassing various programming languages, libraries and frameworks.

The project is open to everyone and anyone who wants to learn and improve their skills in open-source contribution. The issues are designed to be beginner-friendly and are accompanied by detailed guides and resources to help you solve them. You can find the issues in the Issues section of the repository. Issues are divided into three categories; Easy, Medium and Hard. Here is an example of an Easy level issue in TypeScript:

TypeScript - Easy issue example

Here, the task is to add the necessary return statement to the greet function so that it returns a greeting message. After you are done, you can simply make a pull request and wait for it to be reviewed and merged, or if there are some changes needed to be made, you will be asked to make the changes to fix the task.
After your pull request has been merged, bot will revert the changes made to the repository so the issue is ready for the next contributor. You will also be added to the list of contributors in both, the README of the repository, and this website.

If you have already made some contributions to our Fork, Commit, Merge repo, you can check out the Dashboard to see all of your contributions and which issues you have already solved. It makes it easier to keep track of your progress and see how you have improved your skills.

If you want, instead of the educational repository, you can also contribute to this actual website by adding new issues, fixing typos, or adding new features. Feel free to create a new issue or make a pull request here.

Here are some key aspects of the repository that make it unique and enriching for every developer:

Learn and Improve Problem Solving Skills

The repository hosts a range of tasks with varying difficulties (easy, medium, and hard) in different languages, libraries and frameworks.
Each task is a problem that needs to be solved, which helps you to sharpen your problem-solving abilities - a critical skill for every developer.

Learn and Practice Testing

Testing is an integral part of software development. Within the JavaScript/TypeScript issues of this project, contributors will find Jest, Jasmine and Vitest tests that need to pass for the solution to be accepted. This provides an opportunity to understand how testing works, how to write efficient tests, and how to debug them.

Learn and Work with Python

Python is a high-level, interpreted language known for its ease of use and simplicity. With Python issues in the repository, contributors can develop a solid understanding of Python, and improve their skills in writing cleaner, more efficient code.

Explore Ruby and Its Frameworks

Ruby is a dynamic, open-source programming language with a focus on simplicity. Ruby issues in this repository will help contributors understand the syntax, features, and powerful frameworks like Ruby on Rails.

Work with Tailwind CSS

Tailwind CSS is a highly customizable, low-level CSS framework that gives you all of the building blocks you need to build bespoke designs without any annoying opinionated styles you have to fight to override. Through the Tailwind CSS issues in this repository, contributors can practice and understand the utility-first principle in designing web applications.

Become Proficient with Markup


Markdown is a lightweight markup language used to create formatted text. Markdown issues in this repository allow contributors to practice and master the art of writing clean, readable, and well-structured documentation.


XML (eXtensible Markup Language) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. It is commonly used for data exchange, web services, and document storage.

Learn Functional Programming with Haskell, Lua, Clojure, and Lisp

Functional programming is a paradigm that treats computation as the evaluation of mathematical functions. Through issues related to Haskell, Lua, Clojure, and Lisp in this repository, contributors can delve into the world of functional programming, immutability, and declarative code writing.

Work with Legacy Languages: Fortran and Erlang

Fortran and Erlang are languages with rich histories and unique applications. Fortran is extensively used in scientific and numerical computations, while Erlang is known for its concurrent programming capabilities. Contributors can explore these languages and their applications through related issues in the repository.

Learn web development with React.js and Next.js


React.js is a popular JavaScript library for building user interfaces, particularly for single-page applications. Developed and maintained by Meta, React allows developers to create reusable UI components and manage the state of an application more efficiently.


Next.js is a React framework that enables functionalities such as server-side rendering and static site generation. Created by Vercel, Next.js aims to make the development of performant and SEO-friendly web applications easier and more streamlined.

Understand and Work with Types

TypeScript, a statically-typed superset of JavaScript, is quickly gaining popularity in the development community. This repository includes TypeScript issues that allow contributors to understand and appreciate the importance of types in programming, thus enhancing their TypeScript skills.

Polish Debugging Skills

Debugging is an art, and mastering it can save a lot of time and effort. This repository encourages contributors to find and fix bugs in the codebase, thus polishing their debugging skills.

Dive Into PHP, Laravel, Django, Flask and Web Development

PHP is a popular server-side scripting language especially suited to web development. Through the PHP issues in this repository, contributors can practice PHP concepts, its frameworks and get a grasp of web development intricacies.

Master Data Manipulation with SQL

SQL is a standard language for managing data held in relational databases. SQL issues within the repository offer contributors an opportunity to work with databases, write queries, and understand how data is manipulated and retrieved.

Understand and Use JSON

JSON (JavaScript Object Notation) is a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate. JSON issues in this repository allow contributors to understand how JSON works, how to generate JSON objects, and how to parse them.

Work with Data Serialization


YAML (YAML Ain't Markup Language) is a human-friendly data serialization standard for all programming languages. YAML issues in this repository allow contributors to understand how to write YAML files and use them for configuration and data sharing between languages with different data structures.


TOML (Tom's Obvious, Minimal Language) is a configuration file format that is easy to read due to its clear semantics. TOML files are often used for configuration files in various projects and can represent complex data structures in a comprehensible way.

Explore C and C++

C and C++ are foundational programming languages that provide a deep understanding of computer systems. Through the C and C++ issues in this repository, contributors can understand the core concepts of programming, memory management, and low-level access to computer memory.

Explore Modern Languages: Kotlin, Scala, Elixir, and Dart

This repository hosts challenges in modern languages like Kotlin, Scala, Elixir, and Dart. These languages provide powerful features and are widely used in industry applications. Contributors can get a grasp of functional programming and other advanced programming paradigms.

Explore Systems Programming with Rust and Go

Rust and Go are modern systems programming languages known for their performance and reliability. The Rust and Go issues in this repository allow contributors to understand memory safety, concurrency, and the principles of modern systems development.

Solidity and Vyper: A Dual Approach to Blockchain Development

Dive into the world of blockchain development with Solidity and Vyper. Learn to build smart contracts and DApps on diverse blockchain platforms, whether you're a pro or just starting out. Unleash the potential of these languages for secure and innovative solutions.

Love these "real world" scenario tasks to help new developers. Kudos on this project!!


I've tried contributing to open source since a year but could never successfully change the code and get my pull request merged in other projects. But this project actually made me understand how to contribute. I would suggest this to all my friends and juniors in the future.


Loved your repo. I m not a developer but started using GitHub to learn what this amazing website is and how can I be part of software community with over 100 million developers on it. I was quite taken aback when I discovered this.


Thank you for giving us this opportunity where beginners can start to contribute to open source.


You're doing a great work for beginners like me. I'll be spending some more time with your repo to get familiar with open source contributions.


Thank you, you are doing a great job. :-)


Great experiences.


Thanks for making this, such a lovely 1st time experience contributing.


Thank you for creating such a great way for new contributors to get used to making open source commits. I am a TS/React developer trying to relearn the Python I learned in college a while ago and this is such an easy and fun way to practice that! Kudos to you and everyone else involved in making this repo!


I'm getting interested into contributing to open source and this was a nice way of learning how to do so. I will keep trying to a few ones before getting into other open-source projects to make sure I do it well!


Starting my journey with Node.js and open source - gaining confidence, one contribution at a time. Thanks to this awesome community!


Thank you so much for such an accessible and easy way of getting into open source!


Thank you for the support! This is a great community.