[{"data":1,"prerenderedAt":198},["ShallowReactive",2],{"i-lucide:chevron-down":3,"i-lucide:arrow-up-right":8,"i-simple-icons:github":10,"i-simple-icons:x":12,"i-brand:linkedin":14,"i-simple-icons:medium":18,"i-lucide:mail":20,"i-lucide:sun":22,"article:\u002Farticles\u002Fsoftware-engineering\u002Fhow_to_contribute_to_open_source_projects":24,"article-more:\u002Farticles\u002Fsoftware-engineering\u002Fhow_to_contribute_to_open_source_projects":183,"i-simple-icons:javascript":194,"i-simple-icons:laravel":196},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M7 7h10v10M7 17L17 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"currentColor\" d=\"M14.234 10.162L22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299l-.929-1.329L3.076 1.56h3.182l5.965 8.532l.929 1.329l7.754 11.09h-3.182z\"\u002F>",{"left":4,"top":15,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":17},32,448,"\u003Cpath fill=\"currentColor\" d=\"M416 32L31.9 32C14.3 32 0 46.5 0 64.3L0 447.7C0 465.5 14.3 480 31.9 480L416 480c17.6 0 32-14.5 32-32.3l0-383.4C448 46.5 433.6 32 416 32zM135.4 416l-66.4 0 0-213.8 66.5 0 0 213.8-.1 0zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77zM384.3 416l-66.4 0 0-104c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9l0 105.8-66.4 0 0-213.8 63.7 0 0 29.2 .9 0c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9l0 117.2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"currentColor\" d=\"M4.21 0A4.2 4.2 0 0 0 0 4.21v15.58A4.2 4.2 0 0 0 4.21 24h15.58A4.2 4.2 0 0 0 24 19.79v-1.093a5 5 0 0 1-.422.02c-2.577 0-4.027-2.146-4.09-4.832a8 8 0 0 1 .022-.708c.093-1.186.475-2.241 1.105-3.022a3.9 3.9 0 0 1 1.395-1.1c.468-.237 1.127-.367 1.664-.367h.023q.151 0 .303.01V4.211A4.2 4.2 0 0 0 19.79 0Zm.198 5.583h4.165l3.588 8.435l3.59-8.435h3.864v.146l-.019.004c-.705.16-1.063.397-1.063 1.254h-.003l.003 10.274c.06.676.424.885 1.063 1.03l.02.004v.145h-4.923v-.145l.019-.005c.639-.144.994-.353 1.054-1.03V7.267l-4.745 11.15h-.261L6.15 7.569v9.445c0 .857.358 1.094 1.063 1.253l.02.004v.147H4.405v-.147l.019-.004c.705-.16 1.065-.397 1.065-1.253V6.987c0-.857-.358-1.094-1.064-1.254l-.018-.004zm19.25 3.668c-1.086.023-1.733 1.323-1.813 3.124H24V9.298a1.4 1.4 0 0 0-.342-.047m-1.862 3.632c-.1 1.756.86 3.239 2.204 3.634v-3.634z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":21},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":23},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"id":25,"title":26,"body":27,"category":167,"date":168,"description":169,"extension":170,"icon":171,"meta":172,"navigation":173,"path":174,"rawbody":175,"readingTime":176,"seo":177,"sitemap":178,"stem":181,"__hash__":182},"articles\u002Farticles\u002Fsoftware-engineering\u002Fhow_to_contribute_to_open_source_projects.md","How to contribute to open-source projects",{"type":28,"value":29,"toc":153},"minimark",[30,38,41,46,49,53,56,60,63,67,70,73,107,111,114,118,121,125,128,133,150],[31,32,33],"p",{},[34,35],"img",{"alt":36,"src":37},"Ways to contribute to open-source projects","\u002Farticles\u002Fhow_to_contribute_to_open_source_projects.png",[31,39,40],{},"Contributing to open-source projects is a fantastic way to give back and grow as a developer. Drawing from my experiences with six projects in 2023, let’s explore valuable ways to contribute, with examples.",[42,43,45],"h2",{"id":44},"_1-finding-a-project","1. Finding a Project:",[31,47,48],{},"Start by finding an open-source project that aligns with your interests and skills. GitHub, GitLab, and other code hosting platforms are excellent places to discover active projects.",[42,50,52],{"id":51},"_2-understanding-the-project-and-keeping-track-of-activity","2. Understanding the Project and Keeping Track of Activity:",[31,54,55],{},"Once you’ve selected a project, take some time to understand its codebase, structure, and the issues\u002Froadmap it has. Familiarize yourself with the contribution guidelines and code of conduct for the project.",[42,57,59],{"id":58},"_3-ways-of-contributing","3. Ways of Contributing:",[31,61,62],{},"There are various ways to contribute to open-source projects. Let’s dive into them:",[42,64,66],{"id":65},"_31-adding-a-new-feature-or-enhancement","3.1. Adding a New Feature or Enhancement:",[31,68,69],{},"One of the best ways to contribute is to review the issues and choose one that you understand and can work on, following the specific rules of each repository. Alternatively, if you come across a missing feature that you need and others might benefit from, you can suggest and implement it.",[31,71,72],{},"For example:",[74,75,76,93],"ol",{},[77,78,79,80,87,88],"li",{},"I used “",[81,82,86],"a",{"href":83,"rel":84},"https:\u002F\u002Fgithub.com\u002Flouislam\u002Fuptime-kuma",[85],"nofollow","Uptime Kuma","”, a tool for monitoring the status of servers and services and sending notifications through various channels like Telegram. As the number of servers grew, the Telegram notifications became overwhelming. I suggested and implemented the idea of organizing servers into specific Topics, and after understanding the project’s internals, I worked on the feature, submitted a pull request, and it was merged, making it available for everyone. ",[81,89,92],{"href":90,"rel":91},"https:\u002F\u002Fgithub.com\u002Flouislam\u002Fuptime-kuma\u002Fpull\u002F2716",[85],"PR2716",[77,94,95,96,101,102],{},"I recently started using the ",[81,97,100],{"href":98,"rel":99},"https:\u002F\u002Fgithub.com\u002Fxiaoluoboding\u002Fvue-sonner",[85],"Vue Sonner"," alerts package, which is a nice and lightweight library. However, I noticed that the icon color was inconsistent with the UI because the styles were not customizable through the available properties. Therefore, I submitted a pull request that allows users to define separate variables for icon and text colors, supporting both dark and light modes. ",[81,103,106],{"href":104,"rel":105},"https:\u002F\u002Fgithub.com\u002Fxiaoluoboding\u002Fvue-sonner\u002Fpull\u002F12",[85],"PR12",[42,108,110],{"id":109},"_32-improving-documentation-or-adding-missing-examples","3.2. Improving Documentation or Adding Missing Examples:",[31,112,113],{},"Contributing to documentation or adding examples can be one of the easiest and most satisfying PRs. They are often merged quickly after the maintainer confirms their value. I’ve experienced this with Nuxt.js and NuxtLabs.",[42,115,117],{"id":116},"_33-fixing-bugs-or-addressing-issues","3.3. Fixing Bugs or Addressing Issues:",[31,119,120],{},"Bugs, open issues, and unexpected behavior to fix can be found in the issues section. If the maintainer confirms it’s a valid bug, you can submit a PR to resolve it. Avoid issues with extensive discussions and ambiguity. (Note: I haven’t had personal experience with this type of contribution.)",[42,122,124],{"id":123},"_34-other-contributions-comments-reviews-and-discussions","3.4. Other Contributions: Comments, Reviews, and Discussions",[31,126,127],{},"Participating in discussions, reviewing PRs, suggesting improvements, and answering questions from others are valuable contributions. Even if they don’t appear in the contributors list, they are visible in your profile and are essential for project success.",[129,130,132],"h3",{"id":131},"remember-to-keep-the-following-in-mind-while-contributing","Remember to keep the following in mind while contributing:",[74,134,135,138,141,144,147],{},[77,136,137],{},"Respect the project’s established code style and guidelines.",[77,139,140],{},"Include Tests for Contributions: Writing tests for your contributions ensures that your code functions as intended and helps prevent regressions.",[77,142,143],{},"Be patient and open to feedback from maintainers and other contributors.",[77,145,146],{},"Stay Proactive and Consistent: Consistency is key to becoming a valued contributor. Regularly engage with the project, submit new contributions, and actively participate in discussions.",[77,148,149],{},"Learn from Rejections: If a contribution gets rejected, view it as an opportunity to learn and grow. Understand the reasons behind the rejection and use them to improve your skills and future contributions.",[31,151,152],{},"Contributing to open-source projects is a rewarding journey that empowers you to collaborate with a global community and make a positive impact. So, go ahead and dive into the world of open source! 🚀✨",{"title":154,"searchDepth":155,"depth":155,"links":156},"",2,[157,158,159,160,161,162,163],{"id":44,"depth":155,"text":45},{"id":51,"depth":155,"text":52},{"id":58,"depth":155,"text":59},{"id":65,"depth":155,"text":66},{"id":109,"depth":155,"text":110},{"id":116,"depth":155,"text":117},{"id":123,"depth":155,"text":124,"children":164},[165],{"id":131,"depth":166,"text":132},3,"Software engineering","2023-07-21","What I learned contributing to six projects in one year, with real examples of each way to help.","md","simple-icons:github",{},true,"\u002Farticles\u002Fsoftware-engineering\u002Fhow_to_contribute_to_open_source_projects","---\ntitle: 'How to contribute to open-source projects'\ndescription: 'What I learned contributing to six projects in one year, with real examples of each way to help.'\ndate: '2023-07-21'\ncategory: 'Software engineering'\nicon: 'simple-icons:github'\nreadingTime: '2 min read'\n---\n\n![Ways to contribute to open-source projects](\u002Farticles\u002Fhow_to_contribute_to_open_source_projects.png)\n\nContributing to open-source projects is a fantastic way to give back and grow as a developer. Drawing from my experiences with six projects in 2023, let’s explore valuable ways to contribute, with examples.\n\n## 1. Finding a Project:\nStart by finding an open-source project that aligns with your interests and skills. GitHub, GitLab, and other code hosting platforms are excellent places to discover active projects.\n\n## 2. Understanding the Project and Keeping Track of Activity:\nOnce you’ve selected a project, take some time to understand its codebase, structure, and the issues\u002Froadmap it has. Familiarize yourself with the contribution guidelines and code of conduct for the project.\n\n## 3. Ways of Contributing:\nThere are various ways to contribute to open-source projects. Let’s dive into them:\n\n## 3.1. Adding a New Feature or Enhancement:\n\nOne of the best ways to contribute is to review the issues and choose one that you understand and can work on, following the specific rules of each repository. Alternatively, if you come across a missing feature that you need and others might benefit from, you can suggest and implement it.\n\nFor example:\n\n\n1. I used “[Uptime Kuma](https:\u002F\u002Fgithub.com\u002Flouislam\u002Fuptime-kuma)”, a tool for monitoring the status of servers and services and sending notifications through various channels like Telegram. As the number of servers grew, the Telegram notifications became overwhelming. I suggested and implemented the idea of organizing servers into specific Topics, and after understanding the project’s internals, I worked on the feature, submitted a pull request, and it was merged, making it available for everyone. [PR2716](https:\u002F\u002Fgithub.com\u002Flouislam\u002Fuptime-kuma\u002Fpull\u002F2716)\n\n\n2. I recently started using the [Vue Sonner](https:\u002F\u002Fgithub.com\u002Fxiaoluoboding\u002Fvue-sonner) alerts package, which is a nice and lightweight library. However, I noticed that the icon color was inconsistent with the UI because the styles were not customizable through the available properties. Therefore, I submitted a pull request that allows users to define separate variables for icon and text colors, supporting both dark and light modes. [PR12](https:\u002F\u002Fgithub.com\u002Fxiaoluoboding\u002Fvue-sonner\u002Fpull\u002F12)\n\n## 3.2. Improving Documentation or Adding Missing Examples:\nContributing to documentation or adding examples can be one of the easiest and most satisfying PRs. They are often merged quickly after the maintainer confirms their value. I’ve experienced this with Nuxt.js and NuxtLabs.\n\n## 3.3. Fixing Bugs or Addressing Issues:\nBugs, open issues, and unexpected behavior to fix can be found in the issues section. If the maintainer confirms it’s a valid bug, you can submit a PR to resolve it. Avoid issues with extensive discussions and ambiguity. (Note: I haven’t had personal experience with this type of contribution.)\n\n## 3.4. Other Contributions: Comments, Reviews, and Discussions\nParticipating in discussions, reviewing PRs, suggesting improvements, and answering questions from others are valuable contributions. Even if they don’t appear in the contributors list, they are visible in your profile and are essential for project success.\n\n### Remember to keep the following in mind while contributing:\n\n1. Respect the project’s established code style and guidelines.\n\n2. Include Tests for Contributions: Writing tests for your contributions ensures that your code functions as intended and helps prevent regressions.\n\n3. Be patient and open to feedback from maintainers and other contributors.\n\n4. Stay Proactive and Consistent: Consistency is key to becoming a valued contributor. Regularly engage with the project, submit new contributions, and actively participate in discussions.\n\n5. Learn from Rejections: If a contribution gets rejected, view it as an opportunity to learn and grow. Understand the reasons behind the rejection and use them to improve your skills and future contributions.\n\nContributing to open-source projects is a rewarding journey that empowers you to collaborate with a global community and make a positive impact. So, go ahead and dive into the world of open source! 🚀✨\n","2 min read",{"title":26,"description":169},{"loc":174,"images":179,"lastmod":168},[180],{"loc":37},"articles\u002Fsoftware-engineering\u002Fhow_to_contribute_to_open_source_projects","RMSgRm_gDYWpqo6Ea5Kq48tsHF7T5uHs7q9lrdLhybg",[184,189],{"path":185,"title":186,"date":187,"icon":188},"\u002Farticles\u002Ffront-end\u002Fconfiguring-prettier-pre-commit-hook","Configuring a Prettier pre-commit hook","2023-01-16","simple-icons:javascript",{"path":190,"title":191,"date":192,"icon":193},"\u002Farticles\u002Flaravel\u002Fsetting_up_authentication_for_laravel_single_page_applications","Setting up authentication for Laravel single-page apps","2022-10-11","simple-icons:laravel",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":195},"\u003Cpath fill=\"currentColor\" d=\"M0 0h24v24H0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873c-.736-.345-1.554-.585-1.797-1.14c-.091-.33-.105-.51-.046-.705c.15-.646.915-.84 1.515-.66c.39.12.75.42.976.9c1.034-.676 1.034-.676 1.755-1.125c-.27-.42-.404-.601-.586-.78c-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005c-1.14 1.291-.811 3.541.569 4.471c1.365 1.02 3.361 1.244 3.616 2.205c.24 1.17-.87 1.545-1.966 1.41c-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109c1.74 1.756 6.09 1.666 6.871-1.004c.029-.09.24-.705.074-1.65zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805c0 1.232.063 2.363-.138 2.711c-.33.689-1.18.601-1.566.48c-.396-.196-.597-.466-.83-.855c-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517c.855.51 2.004.675 3.207.405c.783-.226 1.458-.691 1.811-1.411c.51-.93.402-2.07.397-3.346c.012-2.054 0-4.109 0-6.179z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":197},"\u003Cpath fill=\"currentColor\" d=\"M23.642 5.43a.4.4 0 0 1 .014.1v5.149c0 .135-.073.26-.189.326l-4.323 2.49v4.934a.38.38 0 0 1-.188.326L9.93 23.949a.3.3 0 0 1-.066.027l-.024.01a.35.35 0 0 1-.192 0q-.016-.005-.03-.012q-.031-.01-.062-.025L.533 18.755a.38.38 0 0 1-.189-.326V2.974q0-.05.014-.098c.003-.012.01-.02.014-.032a.4.4 0 0 1 .023-.058c.004-.013.015-.022.023-.033l.033-.045l.037-.027q.02-.018.041-.034H.53L5.043.05a.38.38 0 0 1 .375 0L9.93 2.647h.002q.021.015.04.033l.038.027c.013.014.02.03.033.045c.008.011.02.021.025.033q.014.029.024.058c.003.011.01.021.013.032q.014.047.014.098v9.652l3.76-2.164V5.527q0-.05.013-.098q.007-.014.013-.032l.024-.059c.007-.012.018-.02.025-.033l.033-.043q.019-.017.037-.028q.02-.017.041-.032h.001l4.513-2.598a.38.38 0 0 1 .375 0l4.513 2.598c.016.01.027.021.042.031l.036.028l.034.044c.008.012.019.021.024.033a.3.3 0 0 1 .024.06q.01.015.015.032m-.74 5.032V6.179l-1.578.908l-2.182 1.256v4.283zm-4.51 7.75v-4.287l-2.147 1.225l-6.126 3.498v4.325zM1.093 3.624v14.588l8.273 4.761v-4.325l-4.322-2.445l-.002-.003H5.04L5 16.169l-.035-.027l-.001-.002q-.018-.018-.031-.04q-.016-.016-.028-.036h-.002l-.02-.047c-.006-.016-.014-.027-.018-.043l-.008-.057q-.005-.02-.006-.041V5.789l-2.18-1.257zM5.23.81L1.47 2.974l3.76 2.164l3.758-2.164zm1.956 13.505l2.182-1.256V3.624l-1.58.91l-2.182 1.255v9.435zm11.581-10.95l-3.76 2.163l3.76 2.163l3.759-2.164zm-.376 4.978L16.21 7.087l-1.58-.907v4.283l2.182 1.256l1.58.908zm-8.65 9.654l5.514-3.148l2.756-1.572l-3.757-2.163l-4.323 2.489l-3.941 2.27z\"\u002F>",1792681039604]