├── CODE_OF_CONDUCT.md ├── LEARN.md ├── LICENSE ├── README.md └── gsoc.md /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | mahadtxt@gmail.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /LEARN.md: -------------------------------------------------------------------------------- 1 | You can learn all the required skills using these resources. 2 | 3 | ## Do I have the right skills? 4 | One of the myth that people have is that they need to be an expert in order to contribute to open source. This is not true. You don't need to be an expert to contribute to open source. You just need to have the right skills. 5 | 6 | ### Soft Skills 7 | - You know where to find help. 8 | - You learn from the feedback and respond well to it. 9 | - You can work in a team or independently. 10 | - You know when to ask questions. 11 | - You can communicate effectively. 12 | - Respect other people's opinions. 13 | 14 | > Note: If you are not interested in Developer side, then you can also look for Google Summer Of Docs program, which are specifically tailored for technical writing people. 15 | 16 | ### Technical Skills 17 | - You know the basics of a specific programming language. 18 | - You can fix common issues which are related to the project. 19 | - You have basic experience of a project workflow. 20 | - Knowledge of Git and GitHub is a plus. 21 | 22 | ## Learning the right skills 23 | The right skills depend on the project that you want to contribute. For example, if you want to contribute to a Python project then you should know the basics of Python. First identify your project and then learn the skills that are required for that project. 24 | 25 | - Use class central [website](https://www.classcentral.com/) 26 | - Use edX [website](https://www.edx.org/) 27 | - Use Coursera [website](https://www.coursera.org/) 28 | - Use Udemy [website](https://www.udemy.com/) 29 | - Use Udacity [website](https://www.udacity.com/) 30 | - Use Khan Academy [website](https://www.khanacademy.org/) 31 | - Use Codecademy [website](https://www.codecademy.com/) 32 | - Use freeCodeCamp [website](https://www.freecodecamp.org/) 33 | - Use YouTube [website](https://www.youtube.com/) 34 | 35 | - For learning more best universities, use this: https://csdiy.wiki/en/ 36 | 37 | Learning how to use search engine is also a great skill to have, which you can learn from here: 38 | - [Google: Power Searching with Google](https://www.edx.org/learn/google-power-searching/google-power-searching-with-google) 39 | - [Google: Advanced Power Searching With Google](https://www.edx.org/learn/google-power-searching/google-advanced-power-searching-with-google) 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Muhammad Mahad 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FirstContributions 2 | 3 | > A step-by-step guide for everyone to get started on their open-source journey. 4 | 5 | Many beginners (developers or non-developers) find it challenging to contribute to open source projects. They may feel that they are not skilled enough or that they don't know how to get involved. However, this is not true. Anyone can contribute to open source, regardless of their level of expertise. The key is to have a learning and helping others mindset, follow the best practices, and follow the specific guidelines of each project. 6 | 7 | This repository provides a basic roadmap for anyone who wants to start their open source journey from scratch. It covers the essential steps and tools that you need to become a successful open source contributor. 8 | 9 | ## Table of Contents 10 | 11 | - [What is Open Source?](#what-is-open-source) 12 | - [Main philosophy of Open Source](#main-philosophy-of-open-source) 13 | - [Benefits of Contributing to Open Source](#benefits-of-contributing-to-open-source) 14 | - [Find your Passion](#find-your-passion) 15 | - [Find a project to contribute](#find-a-project-to-contribute) 16 | - [Do I have the right skills?](#do-i-have-the-right-skills) 17 | - [Soft Skills](#soft-skills) 18 | - [Technical Skills](#technical-skills) 19 | - [Learning the right skills](#learning-the-right-skills) 20 | - [Learning Git and GitHub](#learning-git-and-github) 21 | - [Make your first contact](#make-your-first-contact) 22 | - [Communicate Effectively and ask smart questions](#communicate-effectively-and-ask-smart-questions) 23 | - [How to understand Large and Complex Codebases](#how-to-understand-large-and-complex-codebases) 24 | - [Don't hesitate to help others](#dont-hesitate-to-help-others) 25 | - [Document your journey](#document-your-journey) 26 | - [Slides](#slides) 27 | 28 | ## What is Open Source? 29 | 30 | The term [open source](https://opensource.org/osd/) means that anyone can see, understand, learn, modify, or distribute (depending upon the [license](https://opensource.org/licenses/)) the source code of the software. The amazing technology that we use nowadays became possible due to the rise of the open source movement. 31 | 32 | The source code of: 33 | 34 | - [Linux](https://github.com/torvalds/linux) 35 | - [Blender](https://github.com/blender/blender) 36 | - [Android](https://cs.android.com/android/platform/superproject/main) 37 | - [Firefox](https://searchfox.org/mozilla-central/source) 38 | - [Chromium](https://chromium.googlesource.com/chromium/src.git) 39 | - [Apache HTTP Server](https://github.com/apache/httpd) 40 | - [MySQL](https://github.com/mysql/mysql-server) 41 | - [Git](https://github.com/git/git) 42 | - [TensorFlow](https://github.com/tensorflow/tensorflow) 43 | - [PyTorch](https://github.com/pytorch/pytorch) 44 | - [VsCodium](https://github.com/VSCodium/vscodium) 45 | - [GIMP](https://www.gimp.org/source/) 46 | - [VLC](https://github.com/videolan/vlc) 47 | - [InkScape](https://gitlab.com/inkscape/inkscape) 48 | - [FFmpeg](https://git.ffmpeg.org/ffmpeg.git) 49 | - [Kubernetes](https://github.com/kubernetes/kubernetes) 50 | - [Docker](https://github.com/moby/moby) 51 | - [MongoDB](https://github.com/mongodb/mongo) 52 | - [Godot](https://github.com/godotengine/godot) 53 | - [Krita](https://github.com/KDE/krita) 54 | - Almost all the programming languages 55 | 56 | And even many machine learning models like [Meta LLAMA 2](https://ai.meta.com/llama) and OpenAi's general-purpose speech recognition model [Whisper](https://github.com/openai/whisper) are open source. Also, there are some open source [games](https://en.wikipedia.org/wiki/List_of_open-source_video_games) like [Doom](https://github.com/id-Software/DOOM). All of these are open source projects. You can see their source code, learn from them, modify them, and even contribute to them. You can also use them in your own projects. This is the power of open source. 57 | 58 | ### Main philosophy of Open Source 59 | 60 | The main philosophy of open-source products is the freedom to think, create, learn, and share. It is a collaborative effort of many developers who are working together to create something amazing. In the early phases of technology, open source helps the technology to not become handicapped by some big entities and is developed by people who really have the passion to make that piece of technology better. 61 | 62 | ## Benefits of Contributing to Open Source 63 | 64 | As a complete beginner in technology, we face a common problem that we are unable to make our hands dirty on the products or software that we use in our daily life and the software that powers the whole world. Here, open source solves the problem. 65 | 66 | By working on an open source project you: 67 | 68 | - Understand the magic behind the amazing technology. 69 | - Improve your skills by working with other developers. 70 | - Work and learn from the best developers and technology. 71 | - Make an impact on the world by contributing to the projects that are used by millions. 72 | - Open your door to the world of opportunities. 73 | - Learn people skills like communication, teamwork, leadership, etc. 74 | - Work on the thing that you are passionate about. 75 | - Get paid (as a job or through some programs) 76 | 77 | If you want to know if open source is for you or not, then ask these questions to yourself: 78 | 79 | - Do you want to become a technology maker? 80 | - Do you want to grow your network? 81 | - Do you like improving the technology that you use in your daily life? 82 | - Building a community? 83 | 84 | ## Find your Passion 85 | 86 | You will be much more successful if you work on your passion. Therefore, the first step is to find your passion. 87 | 88 | - The thing which you like to do in your free time. 89 | - Which thing excites you the most? 90 | - The thing which you do without any external or monetary motivation. 91 | - Where do you see yourself in the next 2-3 years? 92 | - Find the intersection of your passion and your technology. 93 | 94 | For some people, it's like gaming or art, or poetry which they love to do in their free time. For example, if you like art then you can contribute to artistic software like Blender, Inkscape, GIMP, Openshot, Krita. This way you can improve your skills, learn from the best developers and make an impact on the world. 95 | 96 | ## Find a project to contribute 97 | 98 | Now, you have identified your passion. The next step is to find a project to contribute to. Selecting a project is one of the crucial steps in your open source journey. 99 | 100 | > Identify the project that you use in your daily life. This is the best way to find a project to contribute to. As you have the passion for that project and you know the pain points or features that you want to add or improve in that project. 101 | 102 | - One of the easiest ways to find the project and the welcoming community is using the Google Summer Of Code [website](https://summerofcode.withgoogle.com/programs/2023/organizations). 103 | - Just go there, and search for the term that you are passionate about and you will find organizations that work on that technology. 104 | - Use GitHub [Explore](https://github.com/explore/) 105 | - See GitHub [trending repositories](https://github.com/trending) 106 | - See GitHub [choosing a project](https://github.com/collections/choosing-projects) 107 | - [Open Source Friday](https://opensourcefriday.com/) 108 | - [First Timers Only](https://www.firsttimersonly.com/) 109 | - [CodeTriage](https://www.codetriage.com/) 110 | - [24 Pull Requests](https://24pullrequests.com/) 111 | - [Up For Grabs](https://up-for-grabs.net/) 112 | - [First Contributions](https://firstcontributions.github.io) 113 | - [SourceSort](https://web.archive.org/web/20201111233803/https://www.sourcesort.com/) 114 | - [OpenSauced](https://opensauced.pizza/) 115 | - [Ovio](https://ovio.org) 116 | - For finding good first issues on this platform use this search [powerful issue search tool](https://ovio.org/issues) 117 | - [Contribute-To-This-Project](https://github.com/Syknapse/Contribute-To-This-Project) 118 | - [Open Source Welcome Committee](https://www.oswc.is/) 119 | 120 | > See [freeCodeCamp/how-to-contribute-to-open-source](https://github.com/freeCodeCamp/how-to-contribute-to-open-source?tab=readme-ov-file#open-source-contribution-initiatives) for more resources. 121 | 122 | ## Do I have the right skills? 123 | 124 | One of the myths that people have is that they need to be an expert in order to contribute to open source. This is not true. You don't need to be an expert to contribute to open source. You just need to have the right skills. 125 | 126 | ### Soft Skills 127 | 128 | - You know where to find help. 129 | - You learn from the feedback and respond well to it. 130 | - You can work in a team or independently. 131 | - You know when to ask questions. 132 | - You can communicate effectively. 133 | - Respect other people's opinions. 134 | 135 | > Note: If you are not interested in the developer side, then you can also look for the Google Summer Of Docs program, which is specifically tailored for technical writing people. 136 | 137 | ### Technical Skills 138 | 139 | - You know the basics of a specific programming language. 140 | - You can fix common issues that are related to the project. 141 | - You have basic experience with a project workflow. 142 | - Knowledge of Git and GitHub is a plus. 143 | 144 | ## Learning the right skills 145 | 146 | The right skills depend on the project that you want to contribute to. For example, if you want to contribute to a Python project then you should know the basics of Python. First, identify your project and then learn the skills that are required for that project. 147 | 148 | - Use class central [website](https://www.classcentral.com/) 149 | - Use edX [website](https://www.edx.org/) 150 | - Use Coursera [website](https://www.coursera.org/) 151 | - Use Udemy [website](https://www.udemy.com/) 152 | - Use Udacity [website](https://www.udacity.com/) 153 | - Use Khan Academy [website](https://www.khanacademy.org/) 154 | - Use Codecademy [website](https://www.codecademy.com/) 155 | - Use freeCodeCamp [website](https://www.freecodecamp.org/) 156 | - Use YouTube [website](https://www.youtube.com/) 157 | 158 | - For learning from the best universities, use this: https://csdiy.wiki/en/ 159 | 160 | Learning how to use a search engine is also a great skill to have, which you can learn from here: 161 | 162 | - [Google: Power Searching with Google](https://www.edx.org/learn/google-power-searching/google-power-searching-with-google) 163 | - [Google: Advanced Power Searching With Google](https://www.edx.org/learn/google-power-searching/google-advanced-power-searching-with-google) 164 | 165 | ### Learning Git and GitHub 166 | 167 | See [GitHub Flow](https://docs.github.com/en/get-started) for learning Git and GitHub. 168 | A more detailed guide is [freeCodeCamp/how-to-contribute-to-open-source](https://github.com/freeCodeCamp/how-to-contribute-to-open-source?tab=readme-ov-file#using-version-control) 169 | 170 | ## Make your first contact 171 | 172 | Now, you have the right skills and you have identified the project that you want to contribute to. The next step is to make your first contact with the community. 173 | 174 | - See the CONTRIBUTING.md or building instructions of that project. 175 | - Read the documentation of that project. 176 | - Build the project on your local machine. 177 | - Run the tests. 178 | - In this process, if you find any issue then try to fix it, introduce yourself to the community, raise a PR or an issue. 179 | - This is the best way to make your first contact with the community. 180 | - If you don't find any good-first-issue then you can also introduce yourself to the community, ask for help, or ask for a good first issue. 181 | 182 | ## Communicate Effectively and ask smart questions 183 | 184 | - Try to find the answer yourself. 185 | - Search the archives of the forum or mailing list. 186 | - Search the web. 187 | - Read the documentation. 188 | - Ask a skilled friend. 189 | - Make it easy to reply. 190 | - Don’t spam. 191 | - Don’t dm mentors or org admins. 192 | - Be Precise & Informative about your Problems 193 | 194 | > Read this interesting guide http://www.catb.org/~esr/faqs/smart-questions.html for more information. 195 | 196 | ## How to understand Large and Complex Codebases 197 | 198 | Understanding the code which was developed by experienced developers over a long period of time is a challenging task. Therefore, don't expect to understand the code by just looking at it. You have to understand the codebase in a systematic way. These are the steps that you can follow to understand the codebase. 199 | 200 | - Read the documentation. 201 | - Don't dive into the codebase without any purpose. 202 | - At least know the basics of the programming language. 203 | - Read the theoretical aspect of the project. 204 | - Find a specific task that you want to do and then ask or find which part of the codebase is responsible for that task. 205 | - Use the debugger to understand the codebase. 206 | - Use the search feature of the codebase to find the specific code. 207 | - Use `git blame` to find the author or context of the code. 208 | 209 | ## Don't hesitate to help others 210 | 211 | - Open source is all about learning and helping others. If you find a beginner who is struggling with the same problem that you have faced in the past then don't hesitate to help them. Motivate and refer them to the right resources. This way you can also improve your skills and build a network. 212 | 213 | ## Document your journey 214 | 215 | Documenting your journey is the best way to help others or maybe your future self in understanding the process that you have followed. You can document your journey in the form of a blog, video, or a GitHub repository. Documenting your journey through a blog is the easiest way to get started. You can use 216 | 217 | - [Medium](https://medium.com/) 218 | - [Hashnode](https://hashnode.com/) 219 | - [Dev.to](https://dev.to/) 220 | - [Substack](https://substack.com/) 221 | - [Ghost](https://ghost.org/) 222 | - [WordPress](https://wordpress.com/) 223 | - [Blogger](https://www.blogger.com/) 224 | - [Tumblr](https://www.tumblr.com/) 225 | - [GitBook](https://www.gitbook.com/) 226 | - [Notion](https://www.notion.so/) 227 | 228 | For writing blogs, or if you want to host your personal site you can use these static site generators: 229 | 230 | - [Jekyll](https://jekyllrb.com/) 231 | - [Hugo](https://gohugo.io/) 232 | - [Gatsby](https://www.gatsbyjs.com/) 233 | - [Next.js](https://nextjs.org/) 234 | - [Docusaurus](https://docusaurus.io/) 235 | - [Docsy](https://www.docsy.dev/) 236 | - [MdBook](https://rust-lang.github.io/mdBook/) 237 | - [Doxygen](https://www.doxygen.org/) 238 | - [Sphinx](https://www.sphinx-doc.org/) 239 | - [MkDocs](https://www.mkdocs.org/) 240 | - [BookStack](https://www.bookstackapp.com/) 241 | - [FoamBubble](https://foambubble.github.io/) 242 | - [VuePress](https://vuepress.vuejs.org/) 243 | - [Docz](https://www.docz.site/) 244 | 245 | ## Slides 246 | 247 | - [Google Summer Of Code Slides](https://docs.google.com/presentation/d/e/2PACX-1vTzjZ6Zwj-F51Hdu5cTai-G503oi0NOFVvbSuItI1JMJcyZUGQ2uf7GNiRXgCd_Aw/pub?start=false&loop=false&delayms=3000) 248 | - [GitHub Seekho Slides](https://docs.google.com/presentation/d/e/2PACX-1vTvKx8Xh4k1bmUTot7hwTkvsbC9oyrbhs6W0swhCh4uEp9aSao4ddsyms0gaWkcfQ/pub?start=false&loop=false&delayms=3000) 249 | -------------------------------------------------------------------------------- /gsoc.md: -------------------------------------------------------------------------------- 1 | ![gsoc image](https://developers.google.com/open-source/gsoc/resources/downloads/GSoC-Horizontal.png) 2 | 3 | # Google Summer of Code (GSoC) Mentorship Program 4 | 5 | Do you have a passion for working on open-source projects that power the whole world and a desire to learn from cutting-edge technologies? Do you want to work on these amazing projects while sitting at home and receiving a stipend between $1500 and $3000? If your answer is a resounding “yes,” then Google Summer of Code (GSoC) might just be the perfect journey for you! 6 | 7 | In the past, Google Summer of Code was available only to students enrolled in educational institutions. Now, it's open to anyone with a passion for understanding how technologies used in our daily lives work. 8 | 9 | Before you start reading, here’s a little about me. I was a Google Summer of Code (GSoC) student for the GNU Compiler Collection (GCC) in both 2023 and 2024. Everything I share in this blog comes from my own experience and helped me get selected — so I’m confident it can help you too. If you need any guidance or want to see my accepted proposals, feel free to reach out to me on 10 | 11 | ## What is GSoC? 12 | 13 | Google Summer of Code (GSoC) is an online program by Google that connects contributors with open-source organizations. Participants can apply to work on specific projects with organizations during the program period. They receive guidance and feedback from experienced mentors, as well as a stipend and certification from Google. There are three project sizes—small (90 hours), medium (175 hours), and large (350 hours)—depending on your skills and the project's complexity. 14 | 15 | Some well-known organizations that take part in Google Summer Of Code are: GNU GCC, GNOME, Git, Wikimedia Foundation, Ruby, CNCF, Eclipse Foundation, Blender Foundation, Chromium, Django Software Foundation, R Language, Python Foundation, Apache Software Foundation, and TensorFlow, etc. 16 | 17 | One of the important tips that really helps in cracking GSoC is **"start as early as you can"**. 18 | 19 | ## How GSoC Works? 20 | 21 | We'll understand this by looking at the GSoC'25 timeline: 22 | 23 | 1. Open source software projects apply to be mentor organizations. 24 | 1. Google chooses the organizations to participate (195 in 2024). 25 | 1. Contributors submit project proposals to mentor organizations. 26 | 1. Mentor organizations choose the contributors they’d like to accept. 27 | 1. Coding begins! Contributors work on their project under the guidance of their mentor over 12 weeks (possible extensions available). 28 | 1. Contributors are paired with a mentor to help them throughout their project. 29 | - Community bonding period with orgs. 30 | - Midterm evaluation deadline (standard coding period). 31 | - Mentors submit final GSoC contributor evaluations (standard coding period). 32 | 33 | ## Eligibility Criteria 34 | 35 | - Over 18 at the time of registration. 36 | - Beginner open-source contributor or a student. 37 | - Eligible to work in the country where you will reside during the coding period. 38 | - Not a resident of a US-embargoed country. 39 | - Not previously accepted into GSoC more than once (a person can be a GSoC contributor only twice). 40 | 41 | ## Benefits & Why Should I Apply 42 | 43 | GSoC is a place where you not only apply your skills but also acquire many new ones. The learning is not limited to technical knowledge; GSoC introduces you to a new paradigm of collaborative coding. It is a platform to build on your current skills and hone them. There is a project for all skill levels at GSoC! 44 | 45 | Here are some of the interesting benefits: 46 | 47 | - Getting an edge when applying for a job at Google. 48 | - An amazing stipend (between $1500 and $3000) and increased confidence. 49 | - Being mentored by highly experienced developers. 50 | - Your springboard to the open-source world. 51 | - Building your network and getting involved. 52 | - A sense of achievement. 53 | - Enhancing your developer skills. 54 | - Lastly, an absolutely amazing learning experience. 55 | 56 | ## Skills Required 57 | 58 | Do you have some programming experience and are comfortable in at least one or two programming languages? Then, yes, you are good enough! No, you don’t need to be a Computer Science or IT major or have been coding for 5 years. Have work experience programming but spend your time studying philosophy? Yes, you are good enough to be a GSoC contributor! 59 | 60 | Every project has different criteria for selecting GSoC contributors and subsequently different skill level requirements. If you meet the below list of general skills you are likely to find a GSoC project to which you can feel comfortable applying. 61 | 62 | ### The soft skills 63 | 64 | - You find out where to go for help with technical questions. 65 | - You take and respond well to feedback. 66 | - You can work independently. 67 | - You know when to ask questions. 68 | - You can communicate effectively. 69 | 70 | > Note: If you are not interested in the developer side, then you can also look for the Google Summer Of Docs program, which is specifically tailored for technical writing people. 71 | 72 | ### The Technical skills 73 | 74 | - You can install and configure software packages on your own. 75 | - You have access to a functioning computer. 76 | - You’ve got experience using the programming language and operating system of the project. 77 | 78 | **Pro Tip:** Read the organization’s requirements or skills they are looking for in potential GSoC Contributors. 79 | 80 | # Let's Start the Journey 81 | 82 | ## Making First Contact 83 | 84 | Interacting with an open-source group is sort of like walking in on a party where it seems like everyone else knows each other. People are discussing topics you may be interested in, or sometimes they could be discussing topics you neither know nor care about. 85 | 86 | If you’re the type of person that would walk right up and introduce yourself at a party, then the best approach to getting started is to do what you’d do in real life. Contact the project, introduce yourself and ask questions related to your project. 87 | 88 | - Join both the development and user mailing lists and spend a few days just reading the conversations. 89 | - Read the mailing list archives. 90 | - Introduce yourself! If you are new to the community you need to let people know who you are and why you are interested in contributing to the project. 91 | - Ask questions. You should be able to come up with at least a few legitimate questions before offering your opinion on the right way to do things. 92 | - Be humble. 93 | - Don’t be intimidated. Don’t let a bad experience stop you from getting involved. Just relax and think about why you were snubbed and if there’s anything that you should be careful about before participating in another conversation. 94 | 95 | ## Choosing an Organization 96 | 97 | For choosing an organization you need to find your passion. 98 | 99 | Ask yourself: 100 | 101 | - What skills do you currently possess or wish to acquire? 102 | - Which open-source organizations align with your interests or curiosity? 103 | - What type of project excites you the most? 104 | 105 | You can explore keywords or topics that pique your curiosity on the internet or social media platforms. Additionally, joining online forums or chat groups related to open source or specific technologies can provide valuable insights from fellow enthusiasts. 106 | 107 | Once you’ve pinpointed your interests, it’s time to find open-source organizations that resonate with you. Search the specific technologies on the GSoC page, here: 108 | 109 | ## Writing a Proposal 110 | 111 | Some tips for writing the proposal: 112 | 113 | - See previous accepted proposals. 114 | - Contact the relevant organization before writing the proposal. 115 | - Some organizations have a proposal template, which you can follow to add your information. 116 | - Communicate with the mentors for help in writing and reviewing the proposal. 117 | 118 | ### Sample Outline for Writing Proposal 119 | 120 | - Name and Contact Information 121 | - Title 122 | - Synopsis 123 | - If the format allows, start your proposal with a short summary, designed to convince the reviewer to read the rest of the proposal. 124 | - Benefits to Community 125 | - Deliverables 126 | - Related Work 127 | - Biographical Information 128 | - Follow the rules defined by that organization. 129 | 130 | You can reach out to me if you want to see my proposal and need guidance for writing your proposal. 131 | 132 | ## Being Turned Down 133 | 134 | You’ve done your homework, found an exciting project, and you’ve written the best proposal you could. And you didn’t get into GSoC. 135 | 136 | ### What to do now? 137 | 138 | First, don’t take it personally. Just like when you apply for a job, there are reasons why you might not get in, some that have nothing to do with you. Mentors may not be available, the organization may not have enough space for your project or it may just not be the right time for your proposal. 139 | 140 | - Stay connected. 141 | - Try a new organization. 142 | 143 | #### Ask for feedback on your proposal 144 | 145 | Some example questions to politely ask if your proposal is turned down include: 146 | 147 | - Was there a mismatch with my skills and the project requirements? If so, what skill areas can I work on to be better qualified next year? 148 | - Did I engage enough with the community during the application process? 149 | - Do you have any suggestions on how to improve my pre-application communication? 150 | - Was my project plan clear? Do you have any suggestions on how I can better communicate my ideas via the project plan next year? 151 | 152 | #### Approach an organization about doing the project anyway 153 | 154 | For those GSoC contributors with the drive to forge ahead without GSoC financial support, you may find that a community really is interested in your project anyway. Don’t be afraid to approach your community, GSoC org admin or mentors you communicated with about future contributions. 155 | 156 | Perhaps you can work on a smaller portion of your idea over a longer period of time on your own, or find another project better suited. 157 | 158 | #### Keep trying 159 | 160 | Just keep trying. The next proposal just might be accepted… 161 | 162 | “Never give up. It took me 3 years and 12 proposals to finally get into the program. If none of your proposals gets accepted, sit back and relax. You have a whole year ahead to improve your role with the open-source community by writing more code.” 163 | 164 | Kamran Khan, Ubuntu, GSoC Student 165 | 166 | ### Important links 167 | 168 | - 169 | - 170 | - 171 | 172 | ### Contact me 173 | 174 | - [linkedin.com/in/mmahad/](https://www.linkedin.com/in/mmahad/) 175 | - [github.com/mahadMuhammad/](https://github.com/mahadMuhammad/) 176 | --------------------------------------------------------------------------------