<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ayu's Notes On Blog]]></title><description><![CDATA[Self-taught frontend developer | Tech blogger | Open source contributor | Community enthusiast]]></description><link>https://adiati.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1631397645214/ssHBFls5U.png</url><title>Ayu&apos;s Notes On Blog</title><link>https://adiati.com</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 08:59:48 GMT</lastBuildDate><atom:link href="https://adiati.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[From Helping Out to Taking Ownership: The Art of Sticking Around]]></title><description><![CDATA[I frequently receive messages from enthusiastic contributors who have completed 2 or 3 high-quality pull requests (PRs) in just 1 month. They’re proactive, their work is top-tier, and they’ve handled ]]></description><link>https://adiati.com/from-helping-out-to-taking-ownership-the-art-of-sticking-around</link><guid isPermaLink="true">https://adiati.com/from-helping-out-to-taking-ownership-the-art-of-sticking-around</guid><category><![CDATA[Open Source]]></category><category><![CDATA[open source]]></category><category><![CDATA[community]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 08 Apr 2026 13:28:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/5fa476493e634314b517973c/96016a40-48b0-42fb-8708-983b9e82b668.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I frequently receive messages from enthusiastic contributors who have completed 2 or 3 high-quality pull requests (PRs) in just 1 month. They’re proactive, their work is top-tier, and they’ve handled feedback like pros. Then comes the question: "Hey, would you consider me to be a maintainer for this project?"</p>
<p>I love the energy, but here’s the candid truth: being a maintainer isn't just about finishing a few impressive tasks. It’s a marathon, not a sprint. If you want to move into a role with more responsibility in open source, you have to do more than drop a few contributions and leave. You have to be the person who sticks around, shows your commitment, and makes a real difference.</p>
<h2>The "Sprint" Mentality</h2>
<img src="https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExNGZleHdrNmhvYmg0dTA2NGJoMWliNjRqZ3Rlcjlkcm51YWEyN2VyOCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/yhRhIgnJIRD0I/giphy.gif" alt="road runner gif" style="display:block;margin:0 auto" />

<p>Most people start contributing because they want to practice their skills in a real-world environment. They want to strengthen their resumes, hit personal milestones, and have a concrete way to showcase their skills.</p>
<p>That is a great way to start. It feels good to say, "I created a PR to add a new feature!" or "I found a bug that was crucial for the UX (user experience)!" These are fantastic milestones and should be celebrated because they are moving the project forward. But a project doesn't survive on new features alone. It survives because someone is there to keep the lights on. When a contributor drops a massive piece of code and then disappears, they’ve actually just given the maintainers more work to do in the long run.</p>
<p>Maintenance is not about adding more; it’s about how much of the hard work you're willing to share. It's awesome to achieve personal goals, but a project really lives on because of the people who keep helping long after their first contributions.</p>
<h2>The "Invisible" Work That Really Matters</h2>
<p>The tasks that lead to maintainer or leadership roles are often the ones that don't get you a public mention or another green square on your GitHub profile. I call this the "invisible" work:</p>
<ul>
<li><p><strong>Answering questions:</strong> Helping someone on Slack, Discord, or GitHub who’s stuck.</p>
</li>
<li><p><strong>Onboarding:</strong> Being a welcoming presence for a new person making their first contribution.</p>
</li>
<li><p><strong>Triaging:</strong> Sorting through messy bug reports and figuring out which ones are real.</p>
</li>
<li><p><strong>Reviewing PRs:</strong> Checking others' work to make sure it aligns with the project's goals.</p>
</li>
</ul>
<p>This work is what keeps a community alive. If folks feel welcome when contributing and they get help if it's their first time, they are much more likely to stay longer. These are the fruits of those "invisible" contributions.</p>
<p>Not many folks want to do this stuff because it can feel lonely and unrecognized. It feels like you're doing the work, but it doesn't always come with a "good job" or kudos. But this is exactly what the core team looks for when recruiting new maintainers.</p>
<h2>My Story: I Just Lingered Longer Than Anyone Else</h2>
<img src="https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExcWczcDV3dnp6dWdjbndkMjR6bm5zYWdlMXltam8zaHp4OGJuOXc4cCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/zDmYR8FM8KWv3SohOK/giphy.gif" alt="I'm still here gif" style="display:block;margin:0 auto" />

<p>I didn't reach leadership roles because I created hundreds of issues and PRs. I got there by hanging around long enough to understand the project’s vision, architecture, and problems.</p>
<h3><strong>The Virtual Coffee Handbook</strong></h3>
<p>I became the <strong>Documentation Team Lead</strong> at <a href="https://virtualcoffee.io/">Virtual Coffee</a> because I listened to the community. I noticed people kept asking the same questions. So, I took the initiative to write down the pain points folks encountered and created a community handbook. It answered the common questions for new and existing members. I saw a gap, and I filled it.</p>
<h3><strong>The OpenSauced Connection</strong></h3>
<p>Because of my work at Virtual Coffee, the founder, Bekah — who was the team lead at OpenSauced at the time — asked me to be a <strong>Docs Maintainer</strong> there. It wasn't just a random offer. She saw what I was capable of as a lead at Virtual Coffee and knew I could bring that same value to the OpenSauced docs.</p>
<h3><strong>The Mautic Path</strong></h3>
<p>In 2024, I contributed to <a href="https://mautic.org/">Mautic</a> during Hacktoberfest. That whole month, I only made one PR. But I didn't leave when the event ended. I stayed. I took on more issues, but I also started reviewing other people’s PRs and sharing ideas to improve the documentation. I remember spending much more time reviewing others' work and brainstorming than writing my own. Doing this actually helped me see the "big picture." I began to understand how the project was built and where it was headed, which gave me the confidence to suggest better ways to shape the documentation.</p>
<p>Because I kept showing up frequently and didn't contribute sporadically, the team asked me to become the <strong>Assistant Team Lead of Education Team</strong> in June 2025. Fast forward to January 2026, and I stepped into the role of <strong>Education Team Lead</strong>.</p>
<h2>How You Can Move Toward Maintenance and Leadership</h2>
<p>If you want to take on a bigger role in a project, stop jumping from one repo to another. Don't just create a couple of great PRs and expect to be a maintainer. Here’s my advice on how to get noticed:</p>
<ul>
<li><p><strong>Pick one project and stick to it:</strong> It’s better to be a "regular" in one community than a stranger in ten.</p>
</li>
<li><p><strong>Review more, create less:</strong> Try to review two PRs for every one you write. It shows you care about the whole project, not just your own stats.</p>
</li>
<li><p><strong>Be the "friendly face":</strong> If you see someone struggling with a setup error, jump in and help. The core team loves people who make the community feel welcoming and help new folks get started.</p>
</li>
<li><p><strong>Fix the "low-glamor" stuff:</strong> Is the README confusing? Is a link directing to an incorrect website? Fixing these small, annoying things is often more helpful than adding a fancy new button.</p>
</li>
<li><p><strong>Understand the "why":</strong> Don't just look at the code. Learn the architecture and where the project is headed. When you understand the vision, your contributions become much more valuable.</p>
</li>
<li><p><strong>Take the initiative:</strong> Don't wait for someone to assign you a task. If you see a pain point — as I did with the handbook — write it down and propose a solution.</p>
</li>
<li><p><strong>Listen and learn:</strong> Every open source community is different. Instead of assuming that all projects have the same workflow and culture, take the time to learn how <em>this</em> one works. It’s the best way to grow from a contributor into a trusted partner.</p>
</li>
</ul>
<h2>Final Words</h2>
<p>Whether you want to be a maintainer or move into a leadership role, it's all about trust. You build that trust by being there when things aren't "exciting." It’s about being the person who is still around months and years after the big launch.</p>
<p>If you want to take on more ownership, stop looking for the next big milestone to hit and start looking for the next person who needs a hand. That’s how you truly become part of the heart of the project.</p>
]]></content:encoded></item><item><title><![CDATA[The Curated, Automated Open Source Portfolio: How It’s Going]]></title><description><![CDATA[A few months ago, I shared a story about building an automated open source portfolio using just my smartphone and an AI assistant while on vacation. My main goal was to stop the "spreadsheet struggle"]]></description><link>https://adiati.com/automated-open-source-portfolio</link><guid isPermaLink="true">https://adiati.com/automated-open-source-portfolio</guid><category><![CDATA[Open Source]]></category><category><![CDATA[open source]]></category><category><![CDATA[AI]]></category><category><![CDATA[vibe coding]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 01 Apr 2026 07:18:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/5fa476493e634314b517973c/36d323d2-f822-4072-8b0b-f8fb18f0377d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few months ago, I shared a <a href="https://adiati.com/how-i-built-a-curated-automated-open-source-portfolio">story about building an automated open source portfolio</a> using just my smartphone and an AI assistant while on vacation. My main goal was to stop the "spreadsheet struggle" for myself. However, as I mentioned in that first post, I also wanted to create something others could use to track their own open source progress.</p>
<p>Since then, the project has grown so much. I still use AI to build and refine the code, just as I did when I first started. I’ve added more features that capture the "invisible" work of open source. But as I kept building, I realized that to truly help other folks track their journeys, I needed to make a clear distinction between my personal needs and the core features that everyone can use.</p>
<p>This is the story of how the portfolio evolved, the new features I’ve added, and how I finally turned it into a template for everyone.</p>
<h2>Moving Beyond the Basics</h2>
<p>In my first post, I shared how I automated the tracking of my daily tasks — merged PRs, issues, and PR reviews. That system was a great "log," but a list of links only tells part of the story. Since then, I’ve shifted my focus from simply recording work to visualizing impact. I wanted to turn a list of links into a clearer picture of my work and make the tool adaptable for anyone's journey.</p>
<h3>The Value of Helping Others: Co-authored PRs</h3>
<p>One of the biggest updates was the addition of Co-authored PRs. Collaboration often happens through the tools we use every day, but it also happens in different ways depending on the situation.</p>
<p>As a maintainer, I frequently leave "code suggestions" on a contributor's PR. When they accept and commit those suggestions, GitHub credits both of us for that code. Sometimes, if a PR is nearly ready but needs a final push, I assist by committing locally to help them reach the finish line.</p>
<p>Before, my portfolio wouldn't show this specific kind of help. Now, the script is smart enough to find these co-authored commits. To ensure the most accurate report possible, I implemented a critical refactoring so that a single PR can now exist in multiple categories simultaneously — like being both reviewed and co-authored — without any data conflict. Giving direct, usable code feedback is a major part of being a maintainer, and now it’s finally visible.</p>
<h3>Making Data Scannable with Charts</h3>
<p>While a list of links is useful, it’s hard to see the "big picture" quickly. To solve this, I added bar charts. Now, you can see exactly what percentage of your work goes into code, how much is spent reviewing, and how much is dedicated to general collaboration. It turns a wall of text into a clear picture of your impact.</p>
<h3>Finding Your "Persona"</h3>
<p>I wanted to add personality to the data, so I built the Collaboration Profile. The script analyzes your contribution data and gives you a "Persona Title." For example, if you do a lot of reviews and give code suggestions, the system might call you a Community Mentor. If you focus on finding bugs and planning features, you might be called a Project Architect. It’s a simple way to show your unique style as a contributor.</p>
<h3>A Professional Website with Your Own Branding</h3>
<p>I also built an HTML version that you can host as a static website. To give you the freedom to make the portfolio truly yours, I made it easy to customize. By changing a few simple color codes in the settings, you can align the website — including the backgrounds, buttons, and even the browser icon — with your own personal brand.</p>
<h2>The Realization: Personal vs. Universal</h2>
<p>As I built these features, I started adding features specific to my own journey, like my leadership roles in the Mautic and Virtual Coffee communities and my articles on dev.to and freeCodeCamp.</p>
<p>I soon realized that not everyone has the same path. Someone who's starting their first contributions doesn't need a "Leadership" page, and a developer who only wants to code might find an "Articles" section distracting. If I kept my own personal needs in the main project, it would become too complicated for others to use.</p>
<p>I knew from the start that I wanted this tool to be for everyone. To stay true to that goal, I decided to split the project.</p>
<h2>Splitting the Path: The Template and the Workshop</h2>
<h3>1. The Core Template</h3>
<p>I created a <a href="https://github.com/adiati98/oss-portfolio-template">template of the project</a> for the community. This is the standard 'core' version, featuring all the essential features like automatic tracking, charts, and the persona profile, ready for anyone to use.</p>
<p>I also kept the Markdown version. Not everyone wants to host a static website or manage a deployment. For those users, they can simply point others to the generated Markdown files directly on GitHub.</p>
<h3>2. My Personal Workshop</h3>
<p>I kept my <a href="https://github.com/adiati98/oss-portfolio">original open source portfolio repository</a> as my personal workshop. This is where I experiment with features that fit my personal open source journey.</p>
<ul>
<li><p><strong>Articles Page:</strong> I built a custom fetcher script that uses an API to automatically pull my latest posts from dev.to. I even added a smart filter to make sure it only displays articles tagged with "open-source" or "github." For platforms like freeCodeCamp, I manually list the articles to ensure everything is sorted perfectly by date.</p>
</li>
<li><p><strong>Community &amp; Activity:</strong> This page shows my leadership roles and community awards. I'm also working on a live Workbench section. Though it's still a work in progress, the goal is to show what I'm working on right now as a maintainer, such as open PRs that still need my review. It helps me stay organized and shows others my current focus.</p>
</li>
</ul>
<p>You can see the final result of the project on my <a href="https://curated-oss-portfolio.netlify.app/">automated portfolio site</a>.</p>
<h2>Final Words</h2>
<p>I’m really excited to see where the template goes from here. I feel like splitting the project was the right move. It keeps the core tool simple for everyone to use, while giving me a "sandbox" to play with more complex features like my leadership and activity pages.</p>
<p>Ultimately, my goal for both versions is the same: to make the invisible work of open source visible. Whether you decide to try the template or fork my personal version, I hope these tools help you showcase the amazing work you’re doing.</p>
<p>What’s one part of your workflow that you wish were automated? Let’s chat in the comments!</p>
]]></content:encoded></item><item><title><![CDATA[Open Source Engagement: What's Working Now?]]></title><description><![CDATA[Recently, I read Bekah Hawrot Weigel’s blog post, "When 'Local' Went Global: The Pandemic Era of International Communities." As someone active in many online communities, I found it a bit sad, but I agree with her points and think they apply to open ...]]></description><link>https://adiati.com/open-source-engagement-whats-working-now</link><guid isPermaLink="true">https://adiati.com/open-source-engagement-whats-working-now</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Discuss]]></category><category><![CDATA[community]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 10 Dec 2025 16:24:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1765380328674/cf96ee8f-9c4b-4e2f-b88f-43cd47baedd8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recently, I read <a class="user-mention" href="https://hashnode.com/@BekahHW">Bekah Hawrot Weigel</a>’s blog post, "<a target="_blank" href="https://bekahhw.com/when-local-community-went-global">When 'Local' Went Global: The Pandemic Era of International Communities</a>." As someone active in many online communities, I found it a bit sad, but I agree with her points and think they apply to open source communities as well.</p>
<p>I work closely with several open source projects, and I’ve noticed a clear drop in regular engagement. Not long ago, online communities were very active. Folks had the bandwidth for constant virtual chats, discussions, and jumping into tasks. Now that most of them are busier offline, many regular contributors aren’t around as much. With fewer long-term contributors, it’s become harder to maintain projects.</p>
<p>So, I’ve been wondering, why are contributors fading away, and what strategies can we use to keep contributors coming back for the long run?</p>
<p>I’d like to hear from both contributors and maintainers. Please join the discussion and share your thoughts. Together, we can learn from each other, gather ideas, and make open source projects more welcoming for everyone.</p>
<h2 id="heading-for-contributors">For Contributors</h2>
<h3 id="heading-what-makes-you-stay-or-leave">What Makes You Stay (or Leave)?</h3>
<p>Contributing to an open source project takes time and effort. As a maintainer, I’m always curious about what motivates people to join a project. As a fellow contributor, I understand there must be a good reason!</p>
<p>If you contribute regularly, what motivates you the most?</p>
<ul>
<li><p>Is it because you love the product and use it daily?</p>
</li>
<li><p>Is it the community itself—the friendly atmosphere and the supportive people?</p>
</li>
<li><p>Is it a purely technical challenge you enjoy solving?</p>
</li>
<li><p>Or perhaps it's about career growth and building a recognized portfolio?</p>
</li>
</ul>
<p>On the other hand, many people contribute once or twice and then stop. If you wanted to keep contributing but didn't, what made you stop?</p>
<h3 id="heading-hows-your-onboarding-experience">How's Your Onboarding Experience?</h3>
<p>Think back to the first time you contributed to a project. It might feel intimidating, right? The "Good First Issue" label helps, but a great onboarding experience can help newcomers feel less intimidated and more confident.</p>
<p>I’d like to hear about your experiences. If you’re comfortable, feel free to mention the projects too:</p>
<ul>
<li><p>Can you share a story about a great onboarding process? Maybe someone quickly helped you set up your environment, or the documentation was so clear you didn’t need to ask any questions.</p>
</li>
<li><p>What about a poor experience? Did you spend hours struggling, only to give up? Did you feel maintainers ignored your questions?</p>
</li>
<li><p>In your opinion, what is one thing projects could change to make onboarding easier for newcomers?</p>
</li>
</ul>
<h2 id="heading-for-maintainers">For Maintainers</h2>
<h3 id="heading-efforts-in-retention-and-recognition">Efforts in Retention and Recognition</h3>
<p>If you’re a project maintainer, you’re the backbone of the community, and I know you have a lot to handle. As a maintainer myself, I’m interested in how you keep contributors engaged.</p>
<ul>
<li><p>What practical efforts do you find most successful in retaining contributors?</p>
</li>
<li><p>I believe recognition matters. How do you show appreciation or give rewards? Do you post a public note on social media, send a sticker, feature someone on your project website, or host a virtual celebration?</p>
</li>
<li><p>What approaches have you found most effective for building an onboarding process that not only helps people get started but also encourages them to return?</p>
</li>
</ul>
<h2 id="heading-final-words">Final Words</h2>
<p>Open source is built on sharing and collaboration. By talking about both our successes and frustrations, we can all get better at working together.</p>
<p>Please share your thoughts in the comments. Let’s help each other build stronger, friendlier, and more engaged open source communities!</p>
<p>I’m looking forward to reading your stories and ideas!</p>
]]></content:encoded></item><item><title><![CDATA[Beyond Hacktoberfest: Building a True Open Source Journey]]></title><description><![CDATA[Hacktoberfest is almost over. How has your contribution journey been so far? Are you confident about contributing to open source projects, or are you still struggling to find your way? If you're new to open source and still feel overwhelmed, that's c...]]></description><link>https://adiati.com/beyond-hacktoberfest-building-a-true-open-source-journey</link><guid isPermaLink="true">https://adiati.com/beyond-hacktoberfest-building-a-true-open-source-journey</guid><category><![CDATA[Open Source]]></category><category><![CDATA[#hacktoberfest ]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Mon, 27 Oct 2025 09:10:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1761512329179/803307ef-90e8-437e-8d48-065986aadff4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hacktoberfest is almost over. How has your contribution journey been so far? Are you confident about contributing to open source projects, or are you still struggling to find your way? If you're new to open source and still feel overwhelmed, that's completely normal.</p>
<p>I know the feeling because I was once a new contributor too. When I first started exploring open source, I didn't understand how to find issues, especially the beginner-friendly ones that aligned with my skills. The open source and Git workflows, the jargon like <code>branch</code>, <code>push</code>, <code>pull</code>, etc., and even creating Pull Requests (PRs) felt incredibly intimidating. I also remember it often took me a long time to click the "Create pull request" button because I was so afraid of breaking the whole project.</p>
<p>For a long time, I believed that grabbing an issue, working on it, and creating a PR was the only way to contribute — and the only thing that would be acknowledged. But I’m here to let you know that that's absolutely not the case. What if I told you the key to a meaningful open source journey is not searching for opportunities but creating them?</p>
<p>This post is based on my personal journey, and I want to share insights that can help you find and create your own unique path in open source.</p>
<h2 id="heading-the-excitement-of-hacktoberfest-and-what-comes-after">The Excitement of Hacktoberfest (and What Comes After)</h2>
<p>As a project maintainer, I’ve seen a clear trend, especially around events like Hacktoberfest. Everyone gets excited and ready to make their first open source contributions. It's always nice to see so many new faces! However, this excitement can sometimes make it harder for true beginners. "Good first issues"—those smaller, easier tasks perfect for new contributors—get picked up very quickly.</p>
<p>It’s important to remember what Hacktoberfest is about: it’s an event to appreciate, give back to, and support open source projects. It's not a competition to grab and work on as many issues as possible to get to the finish line.</p>
<p>I noticed some people submitted PRs for issues that already had an assigned person, as if they were racing to be the first to submit a PR that would get accepted. But honestly, creating a PR for an issue someone else is already working on wastes your valuable time because maintainers will likely reject it to respect contribution ethics and fairness.</p>
<p>The worst part is seeing that big energy fade away immediately after the event ends. I had this experience where I assigned someone an issue. When I checked in, they replied just as the event finished, "You can unassign me. I’ve already completed enough PRs for Hacktoberfest, so you can give this to someone who wants to work on it." This broke my heart. If they had let go of the issue sooner, someone else could have taken it on, and we could have made progress on our project. This behavior ignores the spirit of collaboration and giving back that open source values.</p>
<p>This experience highlights the difference between participating to gain a reward and making a genuine contribution. It shows that intention matters.</p>
<p>Several years ago, I chose to prioritize meaningful contribution. I focused on helping other contributors rather than hitting the challenge's PR count. In that year, I created a handful of beginner's issues and wrote more blog posts around open source. That's why I didn't complete the Hacktoberfest. But the funny thing is, I wasn't disappointed. Instead, I felt great that I could support many new contributors as they navigated open source.</p>
<p>Now, the question for you is this: are you participating just to complete a challenge, or are you looking to really give back and explore open source more? If you choose the latter, you'll discover that <strong>the real journey—the valuable experience and growth—happens when you stay around long after the event is over</strong>.</p>
<h2 id="heading-no-code-contributions-are-invaluable">No-Code Contributions are Invaluable</h2>
<p>If you love to write, design, test, translate, or even enjoy being part of a community, your skills are incredibly important! These "no-code" contributions are just as important as code. They can get you to the door of open source, help you engage with the project, and get you noticed by maintainers and potential employers. They are highly appreciated and show your commitment and engagement to the project.</p>
<p>You can read my previous blog post, "<a target="_blank" href="https://adiati.com/video-tutorials-contribution-for-hacktoberfest">My First Video Tutorials Contribution for Hacktoberfest</a>," if you want to contribute and know more about no-code contributions to open source.</p>
<h2 id="heading-create-your-own-path-by-spotting-and-making-opportunities">Create Your Own Path by Spotting and Making Opportunities</h2>
<p>You might be wondering how you can create your own opportunities in open source. The path may require patience and determination, but it doesn't always have to involve writing complex code.</p>
<ol>
<li><p><strong>Pick a Project You Like:</strong> Start by finding an open source project that genuinely interests you.</p>
</li>
<li><p><strong>Explore the Project and Documentation:</strong> Spend time exploring the project, its documentation, and contributing guidelines.</p>
</li>
<li><p><strong>Spot the Gaps, Create an Issue:</strong></p>
<ul>
<li><p><strong>Missing Information?</strong> As a beginner or a newcomer to the project, you have the advantage of a fresh pair of eyes! If you find any instructions that are unclear or missing from the documentation, that’s a perfect opportunity. Create an issue explaining how it could be improved. You can even ask to be assigned to fix it!</p>
</li>
<li><p><strong>Found a Bug or UI Error?</strong> Did you notice any issues with the project's functionality or UI? Create an issue describing the error. Be as clear as possible about how to reproduce it. Again, if you think you can fix it, ask to be assigned to it.</p>
</li>
<li><p><strong>Have a Feature or Enhancement Idea?</strong> Do you have a brilliant idea that could make the project even better? Don’t keep it to yourself! Propose it through an issue. Explain your idea and why you think it would be valuable. If you're confident you can build it, offer to take it on!</p>
</li>
</ul>
</li>
</ol>
<h3 id="heading-the-power-of-monitoring">The Power of Monitoring</h3>
<p>If you spot a problem but don't know how to solve it, that's totally fine—no one expects you to create an issue and solve it yourself. Create the issue anyway! Keeping track of it is a powerful learning experience that contributes to your growth. When a PR is opened to fix the issue you created, study it. Learn from the contributor's approach, code changes, and the conversations.</p>
<p>The biggest payoff often lies in defining the problem, not just writing the solution. Throughout my open source journey, I created more issues than PRs, and now, as a maintainer, I often review far more PRs than I make. Through this, I gained deep insight into the thought process and solutions that contributors used to fix the issues I reported, and more importantly, it showed that my most significant contribution wasn't in the code itself. It's gratifying to focus on contributions like problem definition and review. This approach perfectly aligns with the spirit of open source: collaboration and support.</p>
<h2 id="heading-stay-and-grow-in-open-source">Stay and Grow in Open Source</h2>
<p>Open source is a marathon, not a sprint. The more you stick with a project, the more you’ll learn how it works.</p>
<h3 id="heading-why-focus-is-key">Why Focus is Key</h3>
<p>It's tempting to jump from project to project, but sticking to 1 or 2 projects and contributing regularly to them is better than contributing sporadically to many.</p>
<p>Here’s why:</p>
<ul>
<li><p><strong>Deepen Your Expertise and Impact:</strong> By focusing on one project, you quickly learn its architecture, codebase, and community standards. This foundational knowledge allows you to move beyond simple beginner fixes and make more meaningful, impactful contributions. You become less likely to introduce bugs and are equipped to tackle important features, transitioning from a simple task-doer to a core part of the project's future.</p>
</li>
<li><p><strong>Trust and Recognition:</strong> Regular, consistent contributions build trust with maintainers and the community. They see you as a reliable, committed member, which opens the door to taking on greater responsibilities within the project.</p>
</li>
</ul>
<h3 id="heading-finding-long-term-opportunities">Finding Long-Term Opportunities</h3>
<p>Here are some tips on how to find existing opportunities and build that long-term connection:</p>
<ul>
<li><p><strong>Search for Labeled Issues:</strong> You can find existing beginner-friendly issues tagged with labels like <code>good first issue</code>, <code>help wanted</code>, or <code>beginner-friendly</code>. You can also use the GitHub search bar like this: <code>is:issue is:open label:"good first issue" language:javascript</code> (replace <code>javascript</code> with your preferred language).</p>
</li>
<li><p><strong>Move Beyond "Good First Issues":</strong> If you already take a "good first issue" on a project, consider challenging yourself with a more advanced issue the next time. This not only gives beginners opportunities to take on simple tasks, but also lets you improve your skills.</p>
</li>
<li><p><strong>Connect with the Wider Tech Community:</strong> Tech communities are valuable resources. Maintainers and active members often share issues that need attention or information about other open source projects actively seeking new contributors.</p>
</li>
<li><p><strong>Observe Pain Points in Project Chats:</strong> When you join a project's dedicated community chat (Discord, Slack, etc.), observe the recurring questions and pain points that most folks encounter. For example, if multiple people ask the same question about project setup, it's a clear indication to update the documentation—a great chance to contribute!</p>
</li>
</ul>
<p>Sticking with projects I cared about is how I eventually <a target="_blank" href="https://adiati.com/from-contributor-to-maintainer-my-journey-in-open-source">became an open source maintainer myself</a>. The key lesson was that the path forward isn't defined by how quickly you grab issues or how many PRs you create, but by how consistent and engaged you are.</p>
<p>Go deep into the project and build a strong relationship with its community. You might be surprised at the bigger opportunities that come your way, such as:</p>
<ul>
<li><p>Becoming a <strong>maintainer</strong> yourself, guiding the project's future.</p>
</li>
<li><p>Landing a <strong>job</strong> because your contributions and expertise stood out.</p>
</li>
<li><p>Gaining <strong>experience</strong> that opens doors to other tech roles.</p>
</li>
</ul>
<h2 id="heading-final-words">Final Words</h2>
<p>Forget about hunting for the perfect “good first issue” and start where you are! Let your interest guide your early steps, and focus on consistent contributions. Whether you're coding, fixing docs, reporting bugs, offering some feature ideas, or helping out with no-code contributions, your path is yours to build. Every contribution you make—no matter how small—creates a lasting impact.</p>
<p>Happy collaborating, and enjoy the ride ahead! 🚀</p>
]]></content:encoded></item><item><title><![CDATA[My First Video Tutorials Contribution for Hacktoberfest]]></title><description><![CDATA[If you’ve followed me for a while, you know that I'm a firm believer that everyone has a place in open source, even if you're not technical or lack knowledge in programming.
Recently, I made no-code contributions to the Mautic project, and in this bl...]]></description><link>https://adiati.com/video-tutorials-contribution-for-hacktoberfest</link><guid isPermaLink="true">https://adiati.com/video-tutorials-contribution-for-hacktoberfest</guid><category><![CDATA[opensource]]></category><category><![CDATA[#hacktoberfest ]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[nocode]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 22 Oct 2025 07:33:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1761072084819/7a857e5b-a4f7-40a3-8d6e-d9055f54afeb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you’ve followed me for a while, you know that I'm a firm believer that everyone has a place in open source, even if you're not technical or lack knowledge in programming.</p>
<p>Recently, I made no-code contributions to the Mautic project, and in this blog post, I want to share this experience with you.</p>
<h2 id="heading-the-big-picture-of-open-source-contributions">The Big Picture of Open Source Contributions</h2>
<p>Open source projects need all kinds of support. Sure, developers are super important, but there are also plenty of people who pitch in without ever touching any code, and they make a big difference, too.</p>
<p>Think of these roles and their contributions:</p>
<ul>
<li><p><strong>Designers:</strong> Creating mockups for website designs, improving user experience (UX) flows, and designing promotional graphics.</p>
</li>
<li><p><strong>Testers:</strong> Running manual tests of the software and providing feedback on functionality.</p>
</li>
<li><p><strong>Marketers &amp; Communicators:</strong> Promoting the project, managing social media accounts, and writing informative blog posts.</p>
</li>
<li><p><strong>Translators:</strong> Providing localized language using dedicated translation platforms.</p>
</li>
<li><p><strong>Event Organizers:</strong> Planning meetups and contributor sprints.</p>
</li>
<li><p><strong>PR Reviewers &amp; Content Editors:</strong> Reviewing incoming PRs, checking grammar, and improving clarity on documentation or blog posts before they are published.</p>
</li>
</ul>
<p>Can you imagine a project without those amazing no-code contributors? They tremendously help a project get recognized, keep things running smoothly, and make everything user-friendly for everyone. Plus, they help bring the whole community together, and that’s what open source is all about—awesome projects with solid community and collaborators!</p>
<p>The good news is that since last year, Hacktoberfest has started to encourage no-code contributions. But there’s still a bit of a problem. The official Hacktoberfest count is based on the total number of merged Pull Requests (PRs). This makes it tough for organizations to give credit for the amazing contributions that happen outside of coding and make sure they count for Hacktoberfest. That's why, although many people have the willingness and skills to contribute in various ways, they tend to focus on finding issues that allow them to create PRs just to get counted for Hacktoberfest.</p>
<h2 id="heading-my-first-video-tutorial">My First Video Tutorial</h2>
<p><a target="_blank" href="https://adiati.com/open-source-is-for-everyone">I've done some no-code contributions before</a>, but this year I tried something totally new. I created my very first video tutorials for Mautic documentation projects.</p>
<p>These were no-code contributions, and they quickly filled an important gap for our community.</p>
<p>It started during a Hacktoberfest contributor onboarding call at Mautic Community. We didn't have enough time to fully explain one of the essential steps for new contributors, which is to set up a local environment to work with our documentation projects. A few folks were also confused about what a PR actually is and how to create one.</p>
<p>Because of this, we planned to host another live session for these new contributors. The problem was that finding a time that works for everyone has been tough since we're all volunteers juggling different schedules and time zones. Also, if people missed the session or the recording failed, we would have to hold a new session, which would use up more of everyone's time.</p>
<p>That’s when my project manager suggested a great alternative: creating a video tutorial for the local environment setup instead! This way, contributors can check out the video whenever they want. I jumped right in and said I’d make the video.</p>
<p>What people didn't know was that this was a huge challenge for me. 😅</p>
<p>I'm a non-native English speaker and an introvert. Talking in public or in front of a camera is my kryptonite. I'm always anxious about recording my voice and screen. But, as people say, you can only grow when you get out of your comfort zone. Most of all, my top priority is to ensure that the onboarding process is smooth for new contributors. So, I pushed myself.</p>
<h3 id="heading-the-video-making-process">The Video Making Process</h3>
<p>To prepare for Hacktoberfest, I created new contributing guidelines for the repository.</p>
<p>My initial plan was to create a single video: a walkthrough of the contributing guidelines for setting up the local environment. I figured this would be a great way to ensure the guidelines were clear and easy to navigate. If anything seemed unclear during my presentation in the video, I could update the written instructions later. It's also a good reminder for new contributors to read these guidelines before working with the repository, since they have all the info they need. That’s why I didn’t write out a script and just went with the flow.</p>
<p>After about <strong>five hours</strong> of retakes, editing, and re-recording, I finally finished a complete and clear <strong>11-minute</strong> tutorial! It was rewarding to put together a solid, lasting resource for Mautic.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=Hnzp-aJ4NWA">https://www.youtube.com/watch?v=Hnzp-aJ4NWA</a></div>
<p> </p>
<p>However, since I knew there was also ongoing confusion about creating PRs, I took the initiative to make a second video after finishing the first one. I made another video that walks through the entire process of creating a PR for no-code contributions at Mautic, using my own video tutorial contribution as an example.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=jP-7LEyNo_k">https://www.youtube.com/watch?v=jP-7LEyNo_k</a></div>
<p> </p>
<p>The best part of all? <strong>These efforts are counted towards Hacktoberfest! 🎉</strong></p>
<h2 id="heading-mautics-commitment-to-full-inclusion">Mautic's Commitment to Full Inclusion</h2>
<p>Since last year, Mautic has taken the initiative to bridge the gap for low- and no-code contributions so they can be recognized alongside code contributions. Mautic believes that all types of contributions should be celebrated and actively supported.</p>
<p>If you're curious about how Mautic recognizes high-value no-code contributions, check out this blog post, "<a target="_blank" href="https://mautic.org/blog/giving-non-code-contributions-the-recognition-they-deserve/">Giving non-code contributions the recognition they deserve</a>".</p>
<p>It explains how Mautic acknowledges these contributions and makes sure they’re counted for Hacktoberfest. It's definitely worth a read if you want to see how your no-code efforts can really make a difference!</p>
<p>Also, feel free to look at <a target="_blank" href="https://github.com/orgs/mautic/projects/21/views/1">Mautic’s low- and no-code project board</a> to find low- and no-code tasks if you’re interested in contributing.</p>
<h2 id="heading-final-words">Final Words</h2>
<p>My experience proved the value of non-code contributions (again); now it's your turn to experience it too. Every single skill you have is valuable in open source. Now, let’s act on that knowledge.</p>
<p>If you’re a beginner or a non-programmer looking to contribute to open source but lack the confidence, you need to hear this: Open source isn’t just welcoming, it’s actively waiting for you! Find a project you love and ask, "How can my skills in writing, design, testing, or marketing help right now?"</p>
<p>If a project lacks a clear process for accepting no-code contributions, suggest one! Talk to the maintainers. Explain politely that incorporating non-code contributions not only feels nice but also builds a healthier and more diverse community. Feel free to share this post and suggest they check out the Mautic approach as a simple starting point.</p>
<p>Your next contribution is waiting. Together, let's elevate open source in a way code never could.</p>
]]></content:encoded></item><item><title><![CDATA[Giving non-code contributions the recognition they deserve]]></title><description><![CDATA[Let's be honest. When you hear "open source," what's the first thing that pops into your head? For many, it's lines of code, complex algorithms, and late-night debugging sessions. It's easy to think that if you can't write code for a new feature or f...]]></description><link>https://adiati.com/giving-non-code-contributions-the-recognition-they-deserve</link><guid isPermaLink="true">https://adiati.com/giving-non-code-contributions-the-recognition-they-deserve</guid><category><![CDATA[#hacktoberfest ]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[No Code]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 15 Oct 2025 07:00:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760426232139/90ba5524-06bf-4e41-b488-c8721f9b5227.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let's be honest. When you hear "open source," what's the first thing that pops into your head? For many, it's lines of code, complex algorithms, and late-night debugging sessions. It's easy to think that if you can't write code for a new feature or fix a tricky bug, you don't have a place in the open source world.</p>
<p>But I'm here to tell you something that should shift your perspective: <strong>Open source is more than just code</strong>. It's a vast, vibrant ecosystem built on collaboration, where every skill set has a vital role to play. We need to stop correlating contributions solely with writing programming code.</p>
<p>I'm Ayu, and I currently serve as the Assistant Team Lead for the Education Team at <a target="_blank" href="https://mautic.org/">Mautic</a>. I can speak to this from experience: my first contribution to Mautic was a no-code submission in 2024. It's precisely this kind of contribution that drives Mautic’s core belief: bridging the gap for low- and no-code contributors. We want to actively support and encourage all types of contributions that help our projects and our entire community to thrive.</p>
<h2 id="heading-the-scope-of-contribution">The scope of contribution</h2>
<p>When we look at the different ways people can contribute to a project, we can organize them into a comprehensive scope.</p>
<p>At one end is <strong>traditional programming</strong>, which involves writing complex application logic, fixing bugs, or developing new features. This is the conventional open source contribution most people think of.</p>
<h3 id="heading-the-low-code-contributions">The low-code contributions</h3>
<p>Documentation may look like a simple task, but it's one of the most critical parts of any project. Good documentation is what makes a project usable, welcoming, and successful.</p>
<p>Fact is, even writing documentation often requires a bit of code. Whether you're writing in Markdown, ReStructured Text, or another markup language, you're using structured syntax. You typically use a code editor to write and format it, and you engage with the project's codebase to submit your changes, usually through a Pull Request (PR). Because of this, we can safely categorize documentation as a low-code contribution. It still utilizes technical tools and syntax, but the focus isn't on application logic.</p>
<h3 id="heading-the-crucial-no-code-contributions">The crucial no-code contributions</h3>
<p>Now let's move to the other end of the scope—the pure no-code contributions. These efforts are crucial for a project's survival and growth, yet they often involve zero lines of programming code.</p>
<p>Contributors can add massive value to our projects in areas like:</p>
<ul>
<li><p><strong>Testing &amp; feedback (PR reviews):</strong> Checking for clarity and grammar in documentation, or testing bug fixes and new features, confirming the logic, and providing detailed feedback.</p>
</li>
<li><p><strong>Design &amp; user experience (UX):</strong> Creating mockups, designing social media flyers, or crafting a new website layout in tools like Figma or Canva.</p>
</li>
<li><p><strong>Education &amp; training materials:</strong> Writing blog posts, tutorials, and success stories on our blog and knowledgebase, or making tutorial videos, streaming demos, or recording project updates on a platform like YouTube.</p>
</li>
<li><p><strong>Community engagement, marketing &amp; translations:</strong> Running social media campaigns, managing the project's presence, translating project materials, helping with logistics for community events, or triaging issues.</p>
</li>
</ul>
<p>These are massive, valuable contributions. They keep the project healthy, make it more accessible, grow the user base, and ultimately allow developers to focus on writing code. The open source community, at its best, sees all of these as valid and important contributions to their project or organization.</p>
<h2 id="heading-the-challenge-of-recognition-counting-no-code-in-hacktoberfest">The challenge of recognition: counting no-code in Hacktoberfest</h2>
<p>The challenge arises when organizations, especially during events like <a target="_blank" href="https://hacktoberfest.com/">Hacktoberfest</a>, try to recognize and quantify these diverse contributions.</p>
<p>Hacktoberfest requires a set number of merged PRs to count toward challenge completion, which works perfectly for traditional programming and low-code contributions. But how do we count those invaluable, vital no-code contributions? How can we ensure that these contributors are recognized and celebrated alongside the coders?</p>
<p>It's a problem we, like many others, set out to solve in Mautic. We wanted a clear, fair, and open way to count contributions that don't result in a traditional code PR.</p>
<h3 id="heading-mautics-approach-to-no-code-recognition">Mautic's approach to no-code recognition</h3>
<p>We established a system using a dedicated <a target="_blank" href="https://github.com/mautic/low-no-code">low-no-code repository</a>. It's a simple yet effective mechanism for tracking non-code work.</p>
<p>Here’s how it works:</p>
<ul>
<li><p><strong>Work on a deliverable:</strong> The contributor does their work using their preferred public tools. It might be a Google Doc for an article, a YouTube channel for a tutorial video, a Figma or Canva link for a design, or a link to the specific feature PR they reviewed or tested. The key is that they must have a publicly accessible "media" of their work that they can link to and share.</p>
</li>
<li><p><strong>Document and submit:</strong> They create a new entry in a dedicated Markdown file within our special repository. In this entry, they must list:</p>
<ul>
<li><p>Their name and GitHub handle</p>
</li>
<li><p>Links to their specific contribution (the Google Doc, the YouTube video, the Figma or Canva board, etc.)</p>
</li>
<li><p>A brief description of the contribution</p>
</li>
</ul>
</li>
<li><p><strong>The PR is the count:</strong> They then create a PR to be merged. This PR counts towards their Hacktoberfest contribution. It serves as a verifiable acknowledgment of the valuable work completed outside the codebase.</p>
</li>
</ul>
<h2 id="heading-a-call-for-greater-appreciation">A call for greater appreciation</h2>
<p>More open source projects need to find ways to appreciate and formally recognize their no-code contributors. They are the unrecognized champions of the community. Without the writers, designers, testers, marketers, and community organizers, our projects would stagnate, become unusable, or be forgotten.</p>
<p>This system is just one way to do it—and it works for us. It establishes a clear record, gives contributors a measurable result for their efforts, and fits perfectly with the PR-based structure of events like Hacktoberfest.</p>
<p>If you’ve been hesitant to contribute to open source because you don't feel like a "coder," please let go of that idea. Your skills are not only needed but also valuable, and they deserve recognition. Look for projects that actively welcome contributions across the entire scope. Ask how you can help test, write, or design. You might find that your biggest contribution doesn't involve a single line of application code.</p>
<p>The future of open source is inclusive. Let's build it together, with every skill and every contribution appreciated and counted.</p>
]]></content:encoded></item><item><title><![CDATA[Hacktoberfest: Making it Enjoyable for Contributors and Maintainers]]></title><description><![CDATA[Hey everyone! 👋
Can you believe we’re already almost two weeks into Hacktoberfest? It feels like just yesterday we were preparing for the biggest open source celebration of the year. Hosted by DigitalOcean and Major League Hacking this year, it's a ...]]></description><link>https://adiati.com/hacktoberfest-making-it-enjoyable-for-contributors-and-maintainers</link><guid isPermaLink="true">https://adiati.com/hacktoberfest-making-it-enjoyable-for-contributors-and-maintainers</guid><category><![CDATA[Open Source]]></category><category><![CDATA[hacktoberfest]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Sat, 11 Oct 2025 21:07:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760211313476/5f0f6030-deac-4ae8-b003-ab5f018c9760.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone! 👋</p>
<p>Can you believe we’re already almost two weeks into <a target="_blank" href="https://hacktoberfest.com/">Hacktoberfest</a>? It feels like just yesterday we were preparing for the biggest open source celebration of the year. Hosted by DigitalOcean and Major League Hacking this year, it's a fantastic opportunity for developers of all skill levels—from seasoned pros to complete beginners—to contribute to open source projects. And guess what? This year, the legendary swag (yes, the t-shirt is back!) and the tree-planting initiative are both making a return. How awesome is that?</p>
<p>This year, I’ve been involved as both a maintainer and a contributor. What a ride! I'm currently maintaining <strong>12 repositories</strong> across three different organizations. Preparing these repositories for Hacktoberfest is a massive effort, and managing them during the event is a complex task. It’s a fun kind of chaos that really shows the excitement driving the open source community.</p>
<h2 id="heading-hacktoberfest-eligibility-navigating-rules-and-labels">Hacktoberfest Eligibility: Navigating Rules and Labels</h2>
<p>Before we go further, let's quickly revisit some crucial rules for Hacktoberfest 2025. Think of these as your keys to a smooth and successful experience:</p>
<h3 id="heading-core-qualification-rules">Core Qualification Rules</h3>
<ul>
<li><p><strong>Six Quality PRs:</strong> You need to submit a minimum of six quality pull requests (PRs) to participating public repositories on GitHub, between October 1 and 30.</p>
</li>
<li><p><strong>PRs Must Be Merged, Approved, or Labeled:</strong> Your PRs must be merged, approved by a maintainer, or have the "hacktoberfest-accepted" label applied to count.</p>
</li>
</ul>
<p>Understanding these guidelines is key to making your contributions count.</p>
<h3 id="heading-the-role-of-hacktoberfest-tags-and-labels">The Role of Hacktoberfest Tags and Labels</h3>
<p>When you see a repository with the "hacktoberfest" topic tag on its GitHub profile, that means the repo is <strong>officially participating</strong>! You can find this tag on the repository main page, in the "About" section.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760215975085/5005019f-ca79-4c91-a667-1b25e3f611b0.png" alt="hacktoberfest topic tag on a repository at GitHub " class="image--center mx-auto" /></p>
<p>All valid PRs merged into these repositories will <em>automatically</em> count towards your Hacktoberfest goal. So, if a maintainer doesn't add a "hacktoberfest-accepted" label to your merged PR, no need to worry. It's still counted.</p>
<p>The "hacktoberfest-accepted" label becomes particularly important if your approved PR might get merged <em>after</em> October. Alternatively, if a repository you contribute to isn't officially participating, you can politely ask the maintainers to add the label to your accepted PR so it counts toward the event. By applying this label, your contribution remains recognized and counted towards your Hacktoberfest completion, even if the merge occurs later.</p>
<p><strong>A quick note on rewards:</strong> Don't forget to <a target="_blank" href="https://hacktoberfest.com/">sign up on the official Hacktoberfest website</a> to have your PRs counted and track your progress. The swag is only valid for the first 10,000 contributors who successfully complete the challenge.</p>
<h2 id="heading-a-gentle-reminder-maintainers-are-volunteers-too">A Gentle Reminder: Maintainers Are Volunteers Too!</h2>
<p>Just like many of you, most open source maintainers are volunteers. We dedicate our free time—often outside of our full-time jobs—to nurturing and improving these projects. This means that sometimes, we might not be as responsive on weekends, or our availability might be limited.</p>
<p>In fact, the situation is often more complex. Some of us, just like me, maintain multiple repositories across several organizations. Moreover, some projects operate with very small maintainer teams. For instance, the teams I work with typically consist of just 2-3 people who are collectively handling a steady stream of PRs across all those repositories.</p>
<p>This complexity is precisely why we need to be wise in creating boundaries. When boundaries are respected, we <a target="_blank" href="https://opensource.guide/maintaining-balance-for-open-source-maintainers/">prevent maintainer burnout</a> and create a healthier environment for everyone to thrive.</p>
<p><strong>Here's a friendly plea from one maintainer to all contributors:</strong> please don't continuously ping us to review your PRs, and please don't message us directly (DM) to review your PR or ask questions related to it.</p>
<p>Open source thrives on transparency and community. If you have questions or need to communicate with maintainers, the best place is to leave a comment on your PR or issue. If the project has a dedicated channel on their chat service (like Discord or Slack), you can ask for help and post your questions there. This way, not only can the maintainers track your progress, but the wider community can also follow along and even jump in to help if you get stuck.</p>
<p>However, it's entirely fair to ask for an estimated review time if your PR hasn't been looked at for a while (say, after about four or five days). We usually get notifications when new PRs come in, and we'll review them at our earliest convenience. Rest assured, your hard work won't go unnoticed.</p>
<h2 id="heading-beyond-the-code-contribution-etiquette-and-long-term-success">Beyond the Code: Contribution Etiquette and Long-Term Success</h2>
<h3 id="heading-1-focus-on-quality-not-just-quantity-avoiding-spam">1. Focus on Quality, Not Just Quantity (Avoiding Spam)</h3>
<p>The biggest challenge maintainers face is a flood of low-effort, non-meaningful contributions, commonly known as spam PRs. These PRs consume maintainers' valuable time to review, tag, and close them, which takes away the event's spirit.</p>
<p>A spam PR often includes:</p>
<ul>
<li><p>Making whitespace edits or adding one non-functional line of code</p>
</li>
<li><p>Unsolicited submissions that are not aligned with a project's goals</p>
</li>
<li><p>Low-effort, unreviewed AI-generated contributions</p>
</li>
</ul>
<p><strong>Important rule reminder:</strong></p>
<blockquote>
<p>Pull/merge requests that have a label containing the word spam won’t be counted toward Hacktoberfest, and participants with two or more PR/MRs identified as spam will be disqualified. — <a target="_blank" href="https://hacktoberfest.com/participation/">Hacktoberfest official website</a>.</p>
</blockquote>
<p>If you, as a contributor, see a PR that is clearly spam, you can help the maintainers by leaving a comment on the PR indicating that it should be flagged. This community effort makes a huge difference!</p>
<h3 id="heading-2-keep-your-pr-fresh-and-dynamic">2. Keep Your PR Fresh and Dynamic</h3>
<p>To make the review and merge process as fast and smooth as possible, follow these steps:</p>
<ul>
<li><p><strong>Regularly Sync:</strong> Check your PR every few days. If the default branch of the repository has been updated since you started working, your PR might have conflicts. You need to update your local branch to sync with the latest default branch (often called <code>main</code>) and push those changes. This keeps your contribution easy to merge.</p>
</li>
<li><p><strong>Respond Promptly:</strong> If a maintainer leaves suggestions or requests changes on your PR, address them as soon as you can. Quick responses prevent the PR from stagnating and increase the chance for it to be merged fast.</p>
</li>
<li><p><strong>Know When to Step Back:</strong> If you find the issue that you’re working on is too complex or you don't have time to finish it, that's absolutely fine! Just leave a comment on the PR or issue informing the maintainers that you cannot continue. This allows them to unassign the issue so someone else can pick it up, ensuring the project keeps progressing.</p>
</li>
</ul>
<h3 id="heading-3-think-long-term-contribution-is-year-round">3. Think Long-Term: Contribution is Year-Round</h3>
<p>Hacktoberfest is a great starting point, but the open source community needs your support throughout the entire year. The best way to show appreciation to a project and its maintainers is to stick around after October.</p>
<p>Consider this month your training wheels. Once you understand a project, your contributions become even more valuable. Embrace the chance to become a regular, familiar face in the project community. You might even have the <a target="_blank" href="https://adiati.com/from-contributor-to-maintainer-my-journey-in-open-source">opportunity to be one of the project's maintainers</a>!</p>
<h2 id="heading-making-hacktoberfest-enjoyable-for-everyone">Making Hacktoberfest Enjoyable for Everyone!</h2>
<p>So, how can we make Hacktoberfest a genuinely fun and rewarding experience for both contributors and maintainers?</p>
<h3 id="heading-for-contributors">For Contributors</h3>
<ul>
<li><p><strong>Read the Docs:</strong> Begin by reviewing the project's <code>README.md</code> and <code>CONTRIBUTING.md</code> files. Every project has different contribution methods. So, understand the project before contributing and follow its specific rules.</p>
</li>
<li><p><strong>Choose Wisely:</strong> Look for issues that match your skills and availability. You can look for tags like "hacktoberfest," "good first issue," or "help wanted" to guide your search.</p>
</li>
<li><p><strong>Communicate Clearly:</strong> Ask questions on the issue thread or PR comments. Describe your changes thoroughly in your PR description.</p>
</li>
<li><p><strong>Be Patient and Polite:</strong> Remember the volunteer nature of maintainers.</p>
</li>
<li><p><strong>Respect Assignments:</strong> Always check if an issue is already assigned to someone else. If a contributor is assigned to an issue, don't create a PR for it. Regardless of how good your code is or how fast your submission is, the maintainer won’t be able to accept it, as this violates community etiquette. Opening a PR for an assigned issue is a waste of your valuable time.</p>
</li>
<li><p><strong>Keep Your PR Updated:</strong> Regularly sync your PR with the default branch and respond to feedback quickly.</p>
</li>
</ul>
<h3 id="heading-for-maintainers">For Maintainers</h3>
<ul>
<li><p><strong>Clear Guidelines:</strong> Ensure your <code>CONTRIBUTING.md</code> is clear and up-to-date. Clear and current guidelines are the most effective way to set up contributors for success and smooth the contribution process. For us, the maintainers, this means significantly less time wasted on reviewing invalid, irrelevant, or non-compliant PRs, allowing us to focus our efforts on merging high-quality contributions.</p>
</li>
<li><p><strong>Tagging is Key:</strong> Use the "hacktoberfest" topic tag for your repository and specific issue labels like "good first issue" or "help wanted". Don't forget to add the "hacktoberfest-accepted" label for approved PRs that might be merged after October.</p>
</li>
<li><p><strong>Be Welcoming:</strong> A friendly tone in comments and reviews makes a huge difference.</p>
</li>
<li><p><strong>Provide Constructive Feedback:</strong> Offer guidance and suggestions rather than just rejecting a PR.</p>
</li>
<li><p><strong>Set Expectations:</strong> If you anticipate delays in reviews, communicate that openly.</p>
</li>
<li><p><strong>Set Boundaries to Avoid Burnout:</strong> It's okay to limit the hours you spend on reviews and stick to your communicated availability. Protecting your time ensures you can sustain your maintenance efforts long after October ends.</p>
</li>
<li><p><strong>Appreciate Efforts:</strong> A simple 'thank you' for any contribution—no matter how small—is a huge motivator.</p>
</li>
<li><p><strong>Automate Where Possible:</strong> Tools like issue and PR templates or saved replies can streamline the process for everyone.</p>
</li>
</ul>
<h2 id="heading-final-words">Final Words</h2>
<p>Let's keep the spirit of open source alive and make this Hacktoberfest the most enjoyable and productive one yet, for every single person involved. Happy hacking, everyone! ✨</p>
<p><img src="https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExbzF5eTlmeWt1bncyaXV6ZXJ6eWw0OWl0MnNyYWFybHQ2Ym5nOHp3NSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/RokPlX3C71piryApkp/giphy.gif" alt="a man try to put big pumpkin into his head gif" /></p>
]]></content:encoded></item><item><title><![CDATA[How I Built a Curated, Automated Open Source Portfolio]]></title><description><![CDATA[I've been on a continuous journey in open source since 2020. First, as a contributor, and for the last few years, also as a project maintainer. It's a space where I've learned so much and given back what I can.
I've always wanted a way to track my pr...]]></description><link>https://adiati.com/how-i-built-a-curated-automated-open-source-portfolio</link><guid isPermaLink="true">https://adiati.com/how-i-built-a-curated-automated-open-source-portfolio</guid><category><![CDATA[Open Source]]></category><category><![CDATA[vibe coding]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Sun, 05 Oct 2025 14:14:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759657087686/2b4d533f-99a6-416d-a4bf-234fe2f1dda2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've been on a continuous journey in open source since 2020. First, as a contributor, and for the last few years, also as a project maintainer. It's a space where I've learned so much and given back what I can.</p>
<p>I've always wanted a way to track my progress and showcase my contributions in a portfolio. It's not just about highlighting achievements; it's about monitoring growth, celebrating milestones, and having a resource to share with potential collaborators or employers.</p>
<p>For a long time, this was a manual, frustrating task.</p>
<h2 id="heading-the-spreadsheet-struggle">The Spreadsheet Struggle</h2>
<p>My first attempts at tracking were old-school. I tried maintaining a Google Sheet, logging every merged Pull Request (PR), every issue I opened, and every valuable code review. Then I tried creating a dedicated GitHub repository, where I'd manually add Markdown files for each contribution.</p>
<p>You can probably guess how this story goes.</p>
<p>Yes, life got in the way, and I became busy with other tasks. Suddenly, a few days turned into a few weeks, and before I knew it, my tracker was totally outdated. It just became stale and useless.</p>
<p>Once, <a target="_blank" href="https://adiati.com/my-impression-of-polywork-as-a-web-developer-and-a-technical-blogger">Polywork</a> was a great platform for showcasing my achievements. I highlighted everything, from open source contributions to recognition from notable individuals. However, it eventually came to an end.</p>
<p>Then, I learned about <a target="_blank" href="https://opensauced.pizza/">OpenSauced</a>, and long story short, I became one of the documentation maintainers and learned much more about the project. It was an awesome tool that had a cool feature for highlighting open source contributions, making it super easy to link my highlights page on my resume. It was the perfect solution... until it wasn't. When it was deprecated, I was back to square one.</p>
<p>Well, sometimes, inspiration strikes in the least expected places.</p>
<h2 id="heading-inspiration-on-the-couch">Inspiration on the Couch</h2>
<p>Yes, that's correct. The moment of inspiration struck me during a family summer vacation, while I was relaxing on the couch.</p>
<p>A few months ago, I took a long summer vacation with my family. I was intentionally tech-free, laptop-less, and simply enjoying the time together.</p>
<p>One day, while I was lounging on the couch and watching a series, the idea of having an open source portfolio suddenly came to mind. I thought, "There must be a way to automate this process." I decided to explore using the GitHub API to build the portfolio.</p>
<p>But here's the thing. I didn't have the deep API knowledge, and I certainly didn't want to ruin my family time by reading documentation for hours. 😅</p>
<p>So, with no laptop and stuck on this idea, I figured I’d try vibe coding a shot—something I’ve never tried before. Honestly, I’m a bit of a skeptic when it comes to AI, and I really struggle with creating effective prompts. I'm aware that if my prompts aren't optimal, I could quickly use up my free credits, and I don't want to wait a long time to get new ones.</p>
<p>But there will always be a first time for everything, and you don't know how it goes unless you try, right?</p>
<h2 id="heading-the-four-filters-of-meaningful-open-source-contribution">The Four Filters of Meaningful Open Source Contribution</h2>
<p>I want my portfolio to not only track and record all progress, but also reflect personal truths about my contributions. So, I had some ideas about what to include and exclude in the project.</p>
<h3 id="heading-1-the-collaborative-work-why-only-tracking-outside-repos">1. The Collaborative Work: Why Only Tracking "Outside" Repos?</h3>
<p>I primarily contribute to and maintain projects owned by organizations or other individuals. I don’t currently have my own dedicated open source repository. This means if the tool tracks <em>all</em> my activity, it would include things like personal configuration changes or quick sandbox tests in my own repos, which aren't open source contributions.</p>
<p>My portfolio must be a log of pure collaboration work. Therefore, the script had to be designed from the ground up to only capture activity (PRs, issues) outside of my personal GitHub repositories.</p>
<h3 id="heading-2-the-ethical-line-why-exclude-private-repositories">2. The Ethical Line: Why Exclude Private Repositories?</h3>
<p>As a contributor or maintainer, I sometimes interact with private repositories belonging to the organizations I work with. Including these activities in a public portfolio feels ethically wrong—I don't own the data, and the work is not (yet) open source.</p>
<p>To keep the portfolio clean, public, and ethically sound, the script needed a strict filter to exclude all contributions made in any organization's private repositories.</p>
<h3 id="heading-3-the-quality-filter-why-ignore-bots-and-routine-merges">3. The Quality Filter: Why Ignore Bots and Routine Merges?</h3>
<p>As a maintainer, a significant chunk of my workflow is routine: reviewing and merging PRs from bots like Dependabot. While this is important hygiene work, it doesn't showcase my technical expertise or human interaction.</p>
<p>Therefore, the log needed to reflect genuine human collaboration. The solution had to actively exclude any PRs that were reviewed, merged, or closed if they were authored by a bot account.</p>
<h3 id="heading-4-capturing-the-quiet-value-why-track-collaborations">4. Capturing the Quiet Value: Why Track "Collaborations"?</h3>
<p>Maintainer tasks aren't just about merging PRs. So much value is created by answering questions, providing technical advice, helping a new contributor debug an issue in a comment thread, or explaining why an issue/PR is closed or reopened, without ever needing to hit the "Submit review" button. This is crucial work, but it's often invisible and unrecognized.</p>
<p>My portfolio must capture these kinds of contributions. The script needed a dedicated category to track "Collaborations"—any issue or PR where I commented to discuss or assist, but didn't submit a formal review.</p>
<p>I needed to filter information, set ethical boundaries, and consider efforts as a whole. So, I decided to create a smart, opinionated tracker.</p>
<h2 id="heading-building-an-automation-from-my-phone">Building an Automation from My Phone</h2>
<p>This project, the <a target="_blank" href="https://github.com/adiati98/oss-portfolio"><strong>Curated Open Source Portfolio</strong></a>, was built using my phone.</p>
<p>I pieced together the project using my smartphone, the GitHub mobile app, a mobile browser, and <a target="_blank" href="https://gemini.google.com/">Gemini 2.5 Flash</a> as my AI coding assistant (because it's free!).</p>
<p>It was a tough way to work. The small screen made navigation and testing a nightmare. The only way to test my changes was to push them directly to my <code>main</code> branch and let the GitHub Action workflow run. It was an intense, time-consuming debugging process.</p>
<p>I was relying heavily on the AI to help me structure the Node.js script and compose the necessary GitHub API queries.</p>
<h2 id="heading-automation-achieved">Automation Achieved</h2>
<p>My Curated Open Source Portfolio is a system that finally puts my contribution tracking on autopilot. What used to take me hours of manual logging and formatting now happens automatically in minutes. It’s built around a Node.js script and a GitHub Actions workflow, adhering strictly to my definition of a valuable, ethical contribution.</p>
<p>Here’s how the project works:</p>
<h3 id="heading-1-a-nodejs-script-the-brain">1. A Node.js Script (The Brain)</h3>
<p>This script uses the GitHub API to find my activity. The core here is the "Smart Syncing" logic, which dictates <em>how</em> and <em>what</em> data is fetched. To balance efficiency and data integrity, the script is designed to run in two modes:</p>
<ul>
<li><p>A fast <strong>incremental update</strong>, which fetches only new activity to minimize API calls and keep the system running efficiently.</p>
</li>
<li><p>A <strong>full synchronization</strong>, which rebuilds the portfolio from scratch to clear the cache and verify all data since the tracking began.</p>
</li>
</ul>
<p>The script then applies the “Four Filters” and looks for four key contribution types outside of my own repositories:</p>
<ul>
<li><p><strong>Merged PRs:</strong> Tracking my PRs that are merged</p>
</li>
<li><p><strong>Issues:</strong> Tracking bug reports or feature requests that I submitted</p>
</li>
<li><p><strong>Reviewed PRs:</strong> Tracking PRs that I formally review</p>
</li>
<li><p><strong>Collaborations:</strong> Tracking my first comments and discussions on someone else's issues/PRs</p>
</li>
</ul>
<p>Achieving all four ethical filters required careful query construction. For instance, to ensure quality and collaboration, the search query for finding reviewed PRs had to use specific exclusion filters. This is one part of the complex query string the script generates:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Snippet of the search query logic:</span>
<span class="hljs-string">`is:pr -author:<span class="hljs-subst">${GITHUB_USERNAME}</span> ... -user:dependabot -user:github-actions[bot] updated:&gt;=<span class="hljs-subst">${yearStart}</span>`</span>
</code></pre>
<p>The complete solution uses a combination of these search operators and additional JavaScript logic in the script to ensure that no PRs from known bots or contributions within my personal repositories are included in the final report.</p>
<h3 id="heading-2-a-github-actions-workflow-the-automation">2. A GitHub Actions Workflow (The Automation)</h3>
<p>This is what makes it hands-free. It has two schedules, effectively minimizing API requests while ensuring total data history:</p>
<ol>
<li><p>A light <strong>daily update</strong> (<code>'0 1 * * *'</code>) that triggers the script's incremental sync to keep things fresh.</p>
</li>
<li><p>A thorough <strong>monthly full sync</strong> (<code>'1 0 1 * *'</code>) that initiates a complete data refresh. It deletes the local cache and data files to rebuild the entire contribution history from the year I started tracking, ensuring accuracy.</p>
</li>
</ol>
<p>The Action runs the script, and then automatically commits the newly generated Markdown reports back to the repository.</p>
<p>The final output is a collection of detailed, quarterly Markdown reports that summarize my work, including statistics and top contributed projects. It's a clean, verifiable, and constantly updated portfolio that I can be proud of.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759666347443/c616478f-18a8-4c52-ac22-6655fecda960.png" alt="Quarterly Markdown reports in Markdown that summarize open source contributions, including statistics and top contributed projects" class="image--center mx-auto" /></p>
<h2 id="heading-what-i-learned-from-vibe-coding-my-open-source-portfolio">What I Learned from Vibe Coding My Open Source Portfolio</h2>
<p>This "vibe coding" experience taught me some invaluable lessons about building with AI, especially for developers who are still learning certain technologies.</p>
<h3 id="heading-1-you-remain-the-architect">1. You Remain The Architect</h3>
<p>The AI can write the code, but you have to be the architect. You still need a fundamental understanding of what you're building. Even though I struggled with the GitHub API syntax, I understood the <em>logic</em> of what I needed: fetch data, process it, and write it to a file. This basic knowledge lets me guide the AI effectively.</p>
<h3 id="heading-2-be-a-critical-thinker-not-a-copy-paster">2. Be a Critical Thinker, Not a Copy-Paster</h3>
<p>This is the biggest takeaway. Don't just accept the code the AI gives you. Get critical. Ask questions. Challenge the approach. I found that I had to push back on Gemini a lot:</p>
<ul>
<li><p>"Can you run me through the code line by line and explain what they do?"</p>
</li>
<li><p>"That suggested query seems too complex and takes a while to process. Can we simplify it?"</p>
</li>
<li><p>"This script needs to only look for activity <em>outside</em> of my own repositories. How can we ensure the API query handles that exclusion?"</p>
</li>
<li><p>"You're suggesting a whole new library, but can we just do this with native Node.js?"</p>
</li>
<li><p>"Why did you come with this approach and not that approach? What's the difference? What's the impact?"</p>
</li>
</ul>
<p>Sometimes, the AI would change its approach and agree with a simpler solution. Other times, it would persistently suggest things that were far too complicated or unnecessary for my simple application. Always be critical, and still check your facts with a quick Google search.</p>
<p>Vibe coding is an accelerator, especially when you need to bridge a knowledge gap quickly (like crafting the GitHub API query without hours of documentation reading). But the final code quality—its simplicity, efficiency, and effectiveness—is entirely up to the human review and critical challenge.</p>
<h2 id="heading-your-turn-getting-started-with-automation">Your Turn: Getting Started with Automation</h2>
<p>If my story resonates with you—the contributor who wants to track their journey but is tired of the manual effort—I encourage you to try out this automation or build one your own!</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/adiati98/oss-portfolio">https://github.com/adiati98/oss-portfolio</a></div>
<p> </p>
<p>You can finally focus on what matters most: <strong>contributing to open source</strong>, not managing a spreadsheet.</p>
<h2 id="heading-looking-ahead-and-staying-critical">Looking Ahead and Staying Critical</h2>
<p>While the current system is stable and fully automated, this project is far from finished. I plan to add more features in the future. This ongoing development means one thing is constant: I must continue to manually check and refine the code the AI helped generate. I'll focus on ensuring the logic—from the Node.js implementation to the underlying data requests—remains simple, efficient, and, most importantly, true to the ethical and collaborative principles on which I built this portfolio.</p>
<p>This project is a testament to the power of a good idea, even if it starts on a phone during a vacation. It shows that with modern AI tools, you don't need to be an API expert to build sophisticated solutions. You only need curiosity, critical thinking, and a willingness to try something new.</p>
<p>What are you building with the help of AI to make your life easier as a developer? I'd love to hear your stories!</p>
]]></content:encoded></item><item><title><![CDATA[Open Source is For Everyone: First Experience in Non-Code Contribution to Mautic during Hacktoberfest 2024]]></title><description><![CDATA[This year's Hacktoberfest felt different from my previous ones as a contributor. I was massively under the weather for the first two weeks of October, and my family and I had a week's vacation on the last week. Finding issues to work on took a toll o...]]></description><link>https://adiati.com/open-source-is-for-everyone</link><guid isPermaLink="true">https://adiati.com/open-source-is-for-everyone</guid><category><![CDATA[Open Source]]></category><category><![CDATA[hacktoberfest]]></category><category><![CDATA[community]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Tue, 19 Nov 2024 15:02:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1732027939947/fec0cba5-e109-4f3f-891f-19125f5fd8e1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This year's Hacktoberfest felt different from my previous ones as a contributor. I was massively under the weather for the first two weeks of October, and my family and I had a week's vacation on the last week. Finding issues to work on took a toll on me, so I didn't expect to complete the Hacktoberfest. However, I did finish it with <strong>six</strong> accepted PRs!</p>
<p>I did something different this year from previous ones and will share it with you in this post.</p>
<h2 id="heading-first-experience-in-content-contribution-during-hacktoberfest">First Experience in Content Contribution during Hacktoberfest</h2>
<p><img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcXdzY2U1bmpnM3NnYnB4bW8zZ2c4a214b2N1aWRpNjVlNTd5Z21hNyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/UKpFiTAmVYMzmrDpI6/giphy-downsized.gif" alt="first ever GIF" /></p>
<p>I recently learned about the <a target="_blank" href="https://writetechhub.org/our-community/">WriteTech Hub</a> community on X. It's a vibrant community that empowers technical writers through its amazing programs. Eager to connect and learn from other technical writers, I joined without hesitation.</p>
<p>As background, since last year, Hacktoberfest has allowed <a target="_blank" href="https://github.com/readme/featured/open-source-non-code-contributions">low- or non-code contributions</a> because there are more ways to contribute to open-source projects that don't involve coding skills and technical knowledge.</p>
<p>For Hacktoberfest, WriteTech Hub partnered with some open-source organizations, including <a target="_blank" href="https://www.mautic.org/">Mautic</a>, an open-source marketing automation platform. Mautic offered many non-code issues, including content writing/editing and user documentation. After searching for an issue to work on, I claimed a <a target="_blank" href="https://github.com/mautic/hacktoberfest-no-code/issues/25">content writing/editing issue</a>. The assignment was to review and update the content on their website's "Communication Channels" page.</p>
<h2 id="heading-what-i-learned-from-the-contribution">What I Learned From the Contribution</h2>
<h3 id="heading-canva">Canva</h3>
<p>After asking questions and being sure what to do, I updated the content using Google Docs. Then, I had to create a mockup page. They have a Figma design for the layout and blocks, but I've never worked with Figma.</p>
<p>I've used Canva to create slides and cover images for my blog posts, so I chose Canva for this task. This was my first time using Canva for a mockup page, so I learned something new!</p>
<h3 id="heading-active-communication-and-asking-questions-can-never-go-wrong">Active Communication and Asking Questions Can Never Go Wrong</h3>
<p><img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExNXh4djNwdG5kNzh3MHFkMnllamNrZ2Q0MW9uYm1zMzhveGl6MTJvbyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/YplQ3xdAQKHyHV9fxK/giphy.gif" alt="communication is key GIF" /></p>
<p>Mautic is preparing its new website. As a new contributor, I'm curious about how they want the website to look and what updates they're considering for each page, particularly the one I was working with. So, I asked a question about it.</p>
<p>After I got a response from the maintainer, I dug into their community page on the website to learn more about it. Then, I researched how other communities structured their community pages, asked the maintainer more questions, and offered some ideas before I worked on any changes. I wanted to ensure I was on track with what they wished to have rather than assuming.</p>
<p>As I mentioned, I have never had experience working with Canva to create a mockup page. I asked the maintainer if they have an example of a mockup page in Canva. And they had one! If I hadn't asked, I would have been stuck trying to figure it out for days and lost my opportunity to submit the PR in time for Hacktoberfest.</p>
<h3 id="heading-open-source-is-truly-for-everyone">Open Source is Truly For Everyone</h3>
<p><img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExOXR5YmIxY2Q0ZjFzN3QzN2owOGl0MTlja2U1c3Z5ZmxwbnA5c2FsMiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/wzHOzYn1wmHm14e3xa/giphy-downsized.gif" alt="it's true GIF" /></p>
<p>We often hear that open-source contributions are about more than just code. Some contributions that are as important as code are documentation, creating content like blog posts or video tutorials, promoting open-source projects through social media, and many more.</p>
<p>Here's the fact: Most documentation requires a bit of code because most projects' documentation is written in Markdown or other languages. Contributors will work on these files locally on a text editor or directly on GitHub, push the changes, and create a PR. This workflow is quickly recognized in open source because PR creation is involved.</p>
<p>However, we must remember that a project can reach broader audiences and users with the power of strategic marketing and a strong community. This is where other contributions like content creation, promotion, and the rest come in. Some people with expertise in these kinds of contributions are from something other than tech. Although they may not have coding skills, their expertise is extremely valuable and needed. Now, the question is, how can we make open source accessible to them?</p>
<p>Mautic includes non-code contributions during Hacktoberfest. They accommodated the contributions towards total PRs. The way to do that was for contributors to create blog posts or write or update the content or documentation listed on their issues. Once it's done and approved, they can make a PR listing their name and the issue(s) they worked on.</p>
<p>Yes, people without a tech background still need to learn how to create a PR. However, they can make this kind of PR directly on GitHub without any text editor. The key is clear walk-through documentation to guide them in creating a PR.</p>
<h3 id="heading-appreciation-can-go-a-long-way">Appreciation Can Go a Long Way</h3>
<p><img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExdmd4N2p1Znp6Ymk3cDhlZHh6OHl0bGN0YW1oczN3dmw2Nmlvam5vdyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/6XsJajB2UXnqmEb6sF/giphy-downsized.gif" alt="it means a lot GIF" /></p>
<p>Contributors volunteer their time and skills to help out open-source projects. I learned along the way that one of many things that makes contributors stay in a community and continue to contribute is acknowledgment and appreciation of their efforts. This can be done through public or community shoutouts, swag giveaways, or other means.</p>
<p>Contributors contribute to an open-source project for many reasons. Some do so to learn new technology, some to apply or sharpen their skills, and some to showcase their contributions to finding a job. Those who are in job hunting can share the link to their issues and PRs on their resume. However, for those contributions that don't have PRs, a written appreciation or anything concrete they can show their future employer would be helpful for their journey.</p>
<p>At Mautic, at the end of the month, they make announcements, tag people who contributed to their projects on Slack, and post them on <a target="_blank" href="https://www.mautic.org/blog/community/open-startup-report-20-october-2024">their blog</a>. They also do giveaways as a form of appreciation.</p>
<p>I plan to contribute more to Mautic because I like the community. I really appreciate their patience and full support during my contribution.</p>
<h2 id="heading-final-words">Final Words</h2>
<p>Open source is for everyone, regardless of their technical background. Any contribution that helps a project improve and is used by more people is priceless. It's unfair to say that creating issues and PRs are the only metrics to acknowledge a contribution. However, of course, it's a different case for Hacktoberfest. In the future, I hope more and more projects find ways to recognize and appreciate their contributors, especially the non-code ones.</p>
<p>Lastly, thank you to WriteTech Hub for the opportunity to participate in Hacktoberfest with the community. I would also like to express my gratitude to the Mautic community, particularly to <a target="_blank" href="https://github.com/RCheesley">Ruth Cheesley</a>, for their support and for making my contribution experience enjoyable.</p>
]]></content:encoded></item><item><title><![CDATA[Streamline Your Contributions: Mastering Issue Forms and PR Templates]]></title><description><![CDATA[As an open source maintainer, one of my daily tasks is reminding contributors to complete their pull request (PR) templates or asking them to provide missing information on their issues. Although the saved replies feature on GitHub helps me a lot, it...]]></description><link>https://adiati.com/fill-in-issue-forms-and-pr-templates</link><guid isPermaLink="true">https://adiati.com/fill-in-issue-forms-and-pr-templates</guid><category><![CDATA[Open Source]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[beginner]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Thu, 06 Jun 2024 10:00:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716325466652/0a1d91c8-3a8b-40d4-9162-8fdf39b13bcc.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As an open source maintainer, one of my daily tasks is reminding contributors to complete their pull request (PR) templates or asking them to provide missing information on their issues. Although the <a target="_blank" href="https://docs.github.com/en/get-started/writing-on-github/working-with-saved-replies/about-saved-replies">saved replies</a> feature on GitHub helps me a lot, it still takes me time to personalize replies based on the case. This is a challenge not only for me but also for most maintainers.</p>
<p>It is very important to take the time to fill out these forms and templates completely and accurately. This not only makes the process smoother and faster for everyone involved but also ensures that your contribution is given the attention and consideration it deserves, benefiting both you as a contributor and us as maintainers.</p>
<p>So, in this blog post, I will explain why completing them is crucial and how you can do it effectively.</p>
<h2 id="heading-what-are-issue-forms-and-pr-templates-and-why-are-they-important">What are Issue Forms and PR Templates, and Why are They Important?</h2>
<p>Issue forms and PR templates are structured questions or guidelines you encounter when creating a new issue or PR in a repository. They serve as a roadmap, guiding you through filling in information and ensuring all details reviewers need are provided.</p>
<p>These forms and templates are essential for several reasons:</p>
<ol>
<li><strong>Clear Communication:</strong> They ensure you provide all the necessary information for reviewers to understand your changes. This reduces back-and-forth communication and prevents misunderstandings. </li>
<li><strong>Efficient Review Process:</strong> By providing structured information, maintainers can more easily review the contribution and provide feedback. This speeds up the review process, benefiting both contributors and the project.</li>
<li><strong>Consistency:</strong> Using the same forms and templates for all contributions creates consistency across issues and PRs. This makes searching, sorting, and managing contributions easier, ensuring no missing information.</li>
</ol>
<h2 id="heading-filling-in-the-forms-and-templates">Filling In the Forms and Templates</h2>
<p>When filling in these forms and templates, you should keep these in mind:</p>
<ul>
<li><p><strong>Follow the Instructions:</strong> Read them carefully, pay attention to the instructions, and fill in all sections that don't say "optional" or "for the staff or core members to fill." If there are specific instructions, make sure to follow them.</p>
</li>
<li><p><strong>Be as Detailed as Possible:</strong> Provide a short and clear title and detailed description of your changes or proposal. Include specific examples and steps to reproduce issues or explain the reasons behind your PR.</p>
</li>
<li><p><strong>Don't Delete Anything:</strong> Even if you think a section doesn't apply to your contribution, don't delete it. Instead, leave a comment explaining why it's not relevant or provide a brief "N/A" response. If you're unsure what to fill in, you can look at previous issues and PRs. See how other contributors have done that.</p>
</li>
</ul>
<h3 id="heading-filling-in-issue-forms">Filling In Issue Forms</h3>
<p>Various issue forms can be provided in a project for different purposes, such as bug reports and feature requests. Issue forms are easier to navigate and fill out. Instructions in these forms are usually written right below the input label, as shown in the red boxes below, or as a placeholder.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ob4ibqvbr1w5mjigxrrc.png" alt="Issue form on GitHub" /></p>
<p>Fill in all input with as detailed information as possible. If you, for example, request a new feature, convince the maintainers why they want to add this feature to the project in the description. If you're reporting a bug, describe the bug in detail, such as what you encountered, the expected behavior, and steps to reproduce the bug. Provide visual aids such as screenshots or screen recordings if the bug is a UI-related problem.</p>
<h3 id="heading-filling-in-pr-templates">Filling In PR Templates</h3>
<p>PR templates are trickier than issues because they are shown and must be filled out in Markdown.</p>
<p>But I have some tips that I hope can help you when filling in PR templates:</p>
<ul>
<li><p><strong>Preview mode:</strong> Click the "Preview" tab to see the sections you must fill in before you do so. It will be easier for you to notice them in this mode, but note that you cannot edit in the preview mode.</p>
<p>  <img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h4ifvzf7w8gb10hii082.png" alt="Preview mode GitHub issue form" /></p>
</li>
<li><p><strong>Headings</strong>: Now that you're back in writing mode, pay attention to the headings with <code>#</code> symbols. You need to provide information right under these headings. <strong>Don't skip any heading</strong>.</p>
</li>
<li><strong>Comments</strong>: The instructions on what information you must provide are usually written in the comments under each heading. Read and follow all instructions thoroughly.</li>
</ul>
<p>Here is an example of a PR template in Markdown at OpenSauced:</p>
<pre><code class="lang-markdown"><span class="hljs-section">## Description</span>

<span class="xml"><span class="hljs-comment">&lt;!-- 
Please do not leave this blank 
This PR [adds/removes/fixes/replaces] the [feature/bug/etc]. 
--&gt;</span></span>

<span class="hljs-section">## Related Tickets &amp; Documents</span>
<span class="xml"><span class="hljs-comment">&lt;!-- 
Please use this format link issue numbers: Fixes #123
https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword 
--&gt;</span></span>

<span class="hljs-section">## Mobile &amp; Desktop Screenshots/Recordings</span>

<span class="xml"><span class="hljs-comment">&lt;!-- Visual changes require screenshots --&gt;</span></span>


<span class="hljs-section">## Steps to QA</span>
<span class="xml"><span class="hljs-comment">&lt;!-- 
Please provide some steps for the reviewer to test your change. If you have wrote tests, you can mention that here instead.

1. Click a link
2. Do this thing
3. Validate you see the thing working
--&gt;</span></span>


<span class="hljs-section">## Tier (staff will fill in)</span>

<span class="hljs-bullet">-</span> [ ] Tier 1
<span class="hljs-bullet">-</span> [ ] Tier 2
<span class="hljs-bullet">-</span> [ ] Tier 3
<span class="hljs-bullet">-</span> [ ] Tier 4

<span class="hljs-section">## [optional] What gif best describes this PR or how it makes you feel?</span>



<span class="xml"><span class="hljs-comment">&lt;!-- <span class="hljs-doctag">note:</span> PRs with deleted sections will be marked invalid --&gt;</span></span>

<span class="xml"><span class="hljs-comment">&lt;!--
  For Work In Progress Pull Requests, please use the Draft PR feature,
  see https://github.blog/2019-02-14-introducing-draft-pull-requests/ for further details.

  For a timely review/response, please avoid force-pushing additional
  commits if your PR already received reviews or comments.

  Before submitting a Pull Request, please ensure you've done the following:
  - 📖 Read the Open Sauced Contributing Guide: https://github.com/open-sauced/.github/blob/main/CONTRIBUTING.md.
  - 📖 Read the Open Sauced Code of Conduct: https://github.com/open-sauced/.github/blob/main/CODE_OF_CONDUCT.md.
  - 👷‍♀️ Create small PRs. In most cases, this will be possible.
  - ✅ Provide tests for your changes.
  - 📝 Use descriptive commit messages.
  - 📗 Update any related documentation and include any relevant screenshots.
--&gt;</span></span>
</code></pre>
<hr />
<p>Here is a mini challenge for you. After looking at the PR template above, try to answer the questions below. You can also share your answers in the comments.</p>
<ol>
<li>How many sections are there in the template that you must fill in?</li>
<li>What is the format to link a related issue?</li>
<li>An important note is included in this template. If you don't follow it, your PR might not be accepted. What does this note say?</li>
</ol>
<hr />
<p>Now, let's continue where we left off. When filling in the PR template, you must ensure you provide the following:</p>
<ul>
<li><strong>Short and clear title</strong>. Your title needs to describe the change that you make. For example, "fix: broken link to the About page".</li>
<li><p><strong>Detailed description</strong>. Explain your changes in as much detail as possible. What did you fix? How did you fix it? Did you add a new function or modify a function? Consider using bullet points if there are several changes and link the resources you use to back up your changes. Here is <a target="_blank" href="https://github.com/open-sauced/app/pull/2534">an example</a>: <br /></p>
<pre><code class="lang-markdown">  ## Description

  This PR fixes the long repos' names that are partially stacked at the back of another name in the search input of the Explore tab.

  The changes made here:

<span class="hljs-bullet">  -</span>  Add Tailwind className:
<span class="hljs-bullet">     -</span> [<span class="hljs-string">`truncate`</span>](<span class="hljs-link">https://tailwindcss.com/docs/text-overflow#truncate</span>) to truncate overflowing text.
<span class="hljs-bullet">     -</span> [<span class="hljs-string">`tracking-tighter`</span>](<span class="hljs-link">https://tailwindcss.com/docs/letter-spacing</span>) to reduce letter spacing for better space.
<span class="hljs-bullet">     -</span> <span class="hljs-code">`inline-block`</span> to the <span class="hljs-code">`&lt;span&gt;`</span> .

<span class="hljs-bullet">  -</span> Remove Tailwind classNames:
<span class="hljs-bullet">    -</span> <span class="hljs-code">`overflow-hidden`</span> as it's [<span class="hljs-string">included in the `truncate`</span>](<span class="hljs-link">https://tailwindcss.com/docs/text-overflow</span>).
<span class="hljs-bullet">    -</span> <span class="hljs-code">`break-all`</span> as we don't want to add line breaks.
</code></pre>
</li>
</ul>
<p><br /></p>
<ul>
<li><p><strong>Related issue(s):</strong> Most open source projects don't receive unsolicited PRs (PRs that are not accompanied by an issue). One reason is to avoid spam PRs that might introduce irrelevant, low-quality, or harmful changes to the project's codebase.</p>
<p>  So, when you create a PR, you want to include the number of the related issue. Add a keyword of "Closes", "Fixes", or "Resolves" in front of the issue number, like "Closes #123". <a target="_blank" href="https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue">Linking a pull request to an issue</a> will automatically close the issue once the PR gets merged. You can find the issue number right after the issue's title.</p>
<p>  <img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ech5d96dzjnlibowks3c.png" alt="GitHub issue number" /></p>
</li>
<li><p><strong>Screenshots or screen recordings:</strong> If your changes relate to UI improvement, consider adding screenshots or screen recordings to show the before-and-after changes.</p>
</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Taking the time to fill out issue forms and PR templates thoroughly demonstrates respect for the project and its maintainers. It also ensures that your contributions are well-received, efficiently reviewed, and more likely to be merged. Remember, every project is unique, so always refer to the guidelines and templates the maintainers provide.</p>
<p>If you don't know, May is <a target="_blank" href="https://dev.to/opensauced/maintainer-month-enhancing-support-for-open-source-maintainers-36km">Maintainer Month</a>. You can show your love and appreciation to open source maintainers in many ways, including completing those forms.</p>
]]></content:encoded></item><item><title><![CDATA[Building Bridges, Not Walls: The Importance of Documentation in Open Source Projects]]></title><description><![CDATA[Have you ever been excited to use open source software or contribute to the codebase only to hit a brick wall of confusion because the instructions are unclear? It's frustrating, right?
But what if there was a way to tear down those walls and build b...]]></description><link>https://adiati.com/building-bridges-not-walls-the-importance-of-documentation-in-open-source-projects</link><guid isPermaLink="true">https://adiati.com/building-bridges-not-walls-the-importance-of-documentation-in-open-source-projects</guid><category><![CDATA[Open Source]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[beginner]]></category><category><![CDATA[documentation]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Tue, 04 Jun 2024 10:00:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716325194014/27523dab-ee5b-4ede-9df4-05e5fcef23ab.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever been excited to use open source software or contribute to the codebase only to hit a brick wall of confusion because the instructions are unclear? It's frustrating, right?</p>
<p>But what if there was a way to tear down those walls and build bridges of understanding instead? That's where the <strong>documentation</strong> comes in.</p>
<p>In this post, we will explore why clear and comprehensive documentation is the key to a thriving open source community.</p>
<h2 id="heading-what-exactly-is-documentation-docs">What Exactly is Documentation (Docs)?</h2>
<p>Open source documentation, often shortened to "docs", is essentially written guides that explain everything you need to know about an open-source project. Think of it as a friendly guide that welcomes newcomers and empowers experienced users. It explains how things work, how to get started, and how to contribute to a project.</p>
<p>And good documentation is like a bridge connecting the code and the people who will use it.</p>
<h2 id="heading-the-three-pillars-of-open-source-documentation">The Three Pillars of Open Source Documentation</h2>
<p>Open source projects have three main types of documentation, each serving a specific purpose:</p>
<h3 id="heading-1-technical-documentation">1. Technical Documentation</h3>
<p>This is the developers' documentation. It delves into the codebase, explains APIs, and provides instructions for setting up development environments. README and API documentation are examples of technical documentation.</p>
<h3 id="heading-2-product-documentation">2. Product Documentation</h3>
<p>This type of documentation is meant for general users. Think user manuals that guide them through using the project and its features, such as installation guides, tutorials, troubleshooting guides, and FAQs.</p>
<h3 id="heading-3-guidelines">3. Guidelines</h3>
<p>These are the rules and roadmap for new contributors. Common types of guidelines in an open source project are:</p>
<ul>
<li><strong>Contribution Guidelines:</strong> They usually explain how to submit code and bug reports and how to participate in the project, such as the contribution process and communication etiquette. </li>
<li><strong>Style Guides:</strong> They mainly guide contributors in maintaining coding and documentation consistency and quality.</li>
</ul>
<h2 id="heading-why-does-documentation-matter-lets-break-it-down">Why Does Documentation Matter? Let's Break it Down!</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExZmI5OWxyYTYzcW1jaGNsbmJvb24zaTd0MHhxemdkdmlsaGY5ajN6cSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/PlgjaVXdwwTcILCLXH/giphy.gif" alt="important gif" /></p>
<p>So, why exactly is good documentation so crucial? It benefits everyone involved in the open source ecosystem:</p>
<h3 id="heading-for-users">For Users</h3>
<p>Clear documentation empowers users to quickly grasp the project's functionality and unlock its full potential. It reduces frustration by providing solutions to common problems and guiding users through advanced configurations that they can do independently and efficiently. Overall, it can improve user experience and increase the possibility of your software to attract and gain new users.</p>
<h3 id="heading-for-contributors">For Contributors</h3>
<p>Clear documentation attracts new contributors by streamlining collaboration. Everyone can understand the expectations and contribute effectively. With detailed instructions, code reviews become faster, and PRs merge quickly. And that can make contributors happy! Happy contributors are most likely coming back for more contributions. The more contributors a project has, the faster it grows and innovates.</p>
<h3 id="heading-for-maintainers">For Maintainers</h3>
<p>Comprehensive documentation makes maintaining the project much smoother. It reduces the number of repetitive questions from users and allows maintainers to focus on improving the project.</p>
<p>Good documentation attracts new users and contributors who are excited to explore a project with a welcoming guide, which leads to a sustainable project that thrives in a vibrant community.</p>
<h2 id="heading-keys-to-clear-and-accessible-documentation-reaching-a-global-audience">Keys to Clear and Accessible Documentation: Reaching a Global Audience</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExN280MXJyMHU1c2puOXhmZ3Rrb3k0MTltcjRiNzVlbHN5bHVhZWxraCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/9AmTKXxLeuRdkuv2Pi/giphy.gif" alt="i have a tip gif" /></p>
<p>Open source projects are inherently open and global, attracting users and contributors from all corners of the world. To ensure everyone benefits from your documentation, consider these tips:</p>
<ul>
<li><p><strong>Simple and Clear Language:</strong> Avoid overly technical jargon and complex sentence structures. You also want to break down complex concepts into bite-sized pieces. Write it like you're explaining things to a friend who's not a developer. Think of people with different language and cultural backgrounds. They should be able to understand the documentation as well.</p>
</li>
<li><p><strong>Structure and Organization:</strong> Your documentation needs to be structured logically for better flow and understanding. Remember to make it easy to navigate, for example, by providing a clear table of contents.</p>
</li>
<li><p><strong>Visual Aids:</strong> When possible, complement text with screenshots, screen recordings, diagrams, and code examples. Visuals can break down complex concepts and make the documentation more engaging for all readers.</p>
</li>
<li><p><strong>Consistency:</strong> A clear and consistent formatting and style throughout the documentation creates a professional and easy-to-navigate experience.</p>
</li>
<li><p><strong>Multiple Languages:</strong> If possible, consider translating your documentation into various languages. This opens the door for a broader audience to contribute and benefit from the project.</p>
</li>
<li><p><strong>Active Maintenance:</strong> Treat your documentation as a living document. Encourage user feedback and keep it up-to-date with the latest project developments.</p>
</li>
</ul>
<h2 id="heading-the-call-to-action-be-a-documentation-champion">The Call to Action: Be a Documentation Champion</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExcHNjaTRjMDkzdzF2c2RnbmQ1ZmFyNzQ5ZGlwY2dnMTJ4aGZtZDdzbiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/jzGloSntiG9W67EKRi/giphy.gif" alt="come and jpin gif" /></p>
<p>Whether you're a seasoned developer or just starting your open source journey, you can contribute to making documentation in open source projects accessible and welcoming. Here's what you can do:</p>
<h3 id="heading-contribute-to-existing-projects">Contribute to Existing Projects</h3>
<p>Many open source projects rely on community members to improve their documentation. Let's start small by contributing to the existing docs of a project you care about.</p>
<p>Look for contribution opportunities, such as creating issues to report typos, missing steps in instructions, or anything else you can find. You can also search for a documentation-related issue that needs help and make a pull request. Another way is to write tutorials on their docs or as a blog post. Or, if you're proficient in other languages, you can help translate their existing content.</p>
<h3 id="heading-start-documenting-your-projects">Start Documenting Your Projects</h3>
<p>If you have a project, start documenting it. You never know if you will make it open source in the future. But even if you don't, you'll have a well-documented project. Who knows, you can help others understand your project and inspire others to document theirs, too!</p>
<h3 id="heading-advocate-for-clear-documentation">Advocate for Clear Documentation</h3>
<p>Share your knowledge and help others succeed! To support others in the community, you can create content such as blog posts and tutorial videos about a project, do live streaming, or share valuable resources—like this blog post if you find it informative.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Documentation is the unsung hero that keeps open source projects and its community thriving. Clear and accessible documentation can empower users, attract contributors, and strengthen the foundation for maintainers. By investing in documentation, we build bridges of understanding, opening doors to a world of collaboration and limitless possibilities.</p>
<p>Remember, contributing to open source projects is not always about code. Sometimes, the most powerful tool is a well-written explanation! So, let's unlock the full potential of open source, together, one well-written document at a time!</p>
<hr />
<p><strong>Author note:</strong> I recently gave <a target="_blank" href="https://www.youtube.com/live/pzLXQYZpOPU?si=-0Ra6az6qKxBPn67&amp;t=5368">a lightning talk</a> about the same topic in the Virtual Coffee community. If you prefer a video over a blog post, feel free to check it out!</p>
]]></content:encoded></item><item><title><![CDATA[The Missing Piece: Why Your Project Needs a Maintainer Onboarding Process]]></title><description><![CDATA[In the open source community, we often focus on contributor onboarding. We ensure a clear README, contributing guidelines, and a welcoming community to guide new contributors and help them get started. But what about maintainers? 
Maintainers are the...]]></description><link>https://adiati.com/the-missing-piece-why-your-project-needs-a-maintainer-onboarding-process</link><guid isPermaLink="true">https://adiati.com/the-missing-piece-why-your-project-needs-a-maintainer-onboarding-process</guid><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Thu, 30 May 2024 10:00:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716324932163/39e1d74e-8a16-48d5-9c81-6639125978f2.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the open source community, we often focus on contributor onboarding. We ensure a clear README, contributing guidelines, and a welcoming community to guide new contributors and help them get started. But what about maintainers? </p>
<p>Maintainers are the backbone of any open source project. They review code, merge pull requests, triage issues, and keep the project moving forward. Just like contributors, maintainers also come and go. They may have other commitments outside the project or experience burnout due to the role's demands. </p>
<p>When I joined a maintainers team, we all started doing what we thought best. However, without a clear standard or guidelines, it quickly became chaotic. We each had our way of doing things, and there was little consistency in handling tasks.</p>
<p>This lack of standardization made it confusing for new maintainers like me. I often felt unsure of the "right" way to do things and had to rely on asking my team for guidance, which wasn't always efficient. It made me wonder, "Why don't we have clear guidelines for maintainers, just like we do for contributors?" From there, these <a target="_blank" href="https://docs.opensauced.pizza/contributing/opensauced-maintainers-guide/community-maintainers-guide/">maintainer guidelines</a> were born.</p>
<p>Based on this experience, I will share with you the importance of having maintainers' guidelines and how to create one in this article.</p>
<h2 id="heading-from-confusion-to-clarity-why-onboarding-guidelines-matter">From Confusion to Clarity: Why Onboarding Guidelines Matter</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExeXZodDl4ZXJ4Zm01NWkwenJtM2NhZmN6d3hhZ3YzY29hYnRpZnU4OSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/ZYLCh6emxny3WdDHZK/giphy-downsized.gif" alt="it's important gif" /></p>
<p>Maintainer onboarding guidelines are crucial for several reasons. </p>
<ul>
<li><strong>Clear role and responsibilities</strong>: Onboarding guidelines provide a clear understanding of the role and its responsibilities. Each project is unique, and maintainers need to know what is expected of them specifically within that project. </li>
<li><strong>Standardization and Consistency</strong>: Guidelines ensure consistency in handling tasks. Without them, each maintainer may have their own way of doing things, leading to confusion and inefficiency. Standardized processes make it easier for maintainers to collaborate and ensure the project runs smoothly. </li>
<li><strong>Knowledge Transfer</strong>: Onboarding documentation serves as a valuable resource for future maintainers. It captures the collective knowledge of the existing team, ensuring a smooth transition even when members move on. This continuity is crucial for the long-term health of the project.</li>
<li><strong>Reduces Burnout</strong>: Clear onboarding processes can help prevent maintainer burnout. They prevent new maintainers from feeling overwhelmed and reduce the need for constant hand-holding from existing members, leading to a more fulfilling and sustainable experience.</li>
</ul>
<h2 id="heading-documenting-the-journey-from-pain-points-to-guidelines">Documenting the Journey: From Pain Points to Guidelines</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExaHpvbHNhOTJ0MDV1dmV0YjhtOWd6dzdsNWl0Mml6a3drNGR3MzZ5dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xT4uQwLt2AyurOGWFW/giphy.gif" alt="document everything gif" /></p>
<p>Every project is different, and understanding the challenges in your project will help you create tailored guidelines.</p>
<p>You can start by acknowledging the pain points you've experienced or witnessed within the project. Here are some examples:</p>
<ul>
<li>When should we close a PR?</li>
<li>What method should we use to merge PRs?</li>
<li>If changes in a PR are requested and the contributor has resolved them, can we dismiss the review and merge it without waiting for approval from the person who requested the changes?</li>
<li>How long do we keep stale PRs open before closing them?</li>
<li>What criteria do we use to reject an issue?</li>
<li>May a contributor take multiple issues at the same time? If so, how many?</li>
<li>How do we handle code reviews and merge conflicts?</li>
<li>What are the communication protocols within the team and with contributors? Are there any preferred communication channels, response times, and expectations for tone and language?</li>
</ul>
<p>And the list can go on.</p>
<p>Once you have a list of your pain points, discuss them openly with the team. Ask them questions such as what their current pain points are. What processes are working well, and what needs improvement? Brainstorm solutions collaboratively and translate them into actionable guidelines.</p>
<p>By asking these questions and documenting the answers, you can start drafting clear guidelines that address the specific needs of your project and maintainer team.</p>
<h2 id="heading-beyond-onboarding-a-graceful-offboarding-process">Beyond Onboarding: A Graceful Offboarding Process</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExeTg5c3I0amZya2syemcybDVrbGI1dTI3eThzbTRxd3B3b3gxYnB5dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LTFbyWuELIlqlXGLeZ/giphy.gif" alt="so long partner gif" /></p>
<p>While onboarding is crucial, it's also important to consider the offboarding process for maintainers. This ensures that the transition is smooth and respectful for all involved when a maintainer needs to move on and leave the team. </p>
<p>You can consider the following when drafting your offboarding process: </p>
<ul>
<li><strong>Circumstances for letting a maintainer go</strong>: Define the criteria for removing a maintainer from the team, such as prolonged inactivity, lack of engagement, or failure to meet the project's code of conduct.</li>
<li><strong>Inactivity notice</strong>: Set a timeframe for inactivity before reaching out to gently remind them of their commitment. If inactivity persists, further action can be taken. </li>
<li><strong>Retirement process</strong>: What happens when a maintainer decides to step down? You might need a procedure for revoking access and ensuring a secure handover of responsibilities.</li>
</ul>
<h2 id="heading-collaboration-is-key-building-consensus-with-the-team">Collaboration is Key: Building Consensus with the Team</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOTY0MTN5bXI5b3h5dWN6cGEzbXQ1Z3ZsdXJ3YjFnaXBja2tzYnl6cSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/As7dzE5IDlM3ygg61X/giphy-downsized.gif" alt="let's talk gif" /></p>
<p>Once you've drafted the guidelines, it's time to seek final input from the team. Share your work, solicit feedback, and discuss potential revisions. </p>
<p>This collaborative approach provides valuable insights from diverse perspectives and ensures everyone feels invested in the process and is on the same page. Open discussions can further strengthen the guidelines and promote a culture of transparency within the project.</p>
<p>It's important to remember that these guidelines are living documents. They should evolve as the project grows and adapts to changing circumstances. You need to regularly review and update them to ensure they remain relevant and helpful. </p>
<h2 id="heading-final-words">Final Words</h2>
<p>Investing time crafting clear onboarding documentation for maintainers is more than just good practice; it's a strategic move that strengthens your entire project.</p>
<p>By creating a comprehensive onboarding process for maintainers, you are not just welcoming new team members but setting them up for success. New maintainers are welcomed with a clear roadmap, existing maintainers benefit from a standardized workflow, and the project flourishes with a knowledgeable and empowered team.</p>
<p>So, let's give our maintainers the same warm welcome and clear direction that we offer our contributors!</p>
]]></content:encoded></item><item><title><![CDATA[The Secret Recipe to Getting Your Pull Requests Reviewed (and Merged) Faster]]></title><description><![CDATA[One of the most satisfying moments as an open source project contributor is having your pull request (PR) merged into the main branch. This contribution showcases your skills, passion, and dedication to the project. However, the road to a successful ...]]></description><link>https://adiati.com/the-secret-recipe-to-getting-your-pull-requests-reviewed-and-merged-faster</link><guid isPermaLink="true">https://adiati.com/the-secret-recipe-to-getting-your-pull-requests-reviewed-and-merged-faster</guid><category><![CDATA[Open Source]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[beginner]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Tue, 28 May 2024 10:00:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716324673593/ab3ff164-2852-4efb-8308-ba3d9ef161b3.avif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of the most satisfying moments as an open source project contributor is having your pull request (PR) merged into the <code>main</code> branch. This contribution showcases your skills, passion, and dedication to the project. However, the road to a successful PR can sometimes be bumpy and full of pitfalls.</p>
<p>Have you ever experienced the frustration of your PR being rejected or stuck in a never-ending review process? It can be demotivating and time-consuming, especially when you're eager to see your changes integrated into the project.</p>
<p>I want to share my perspective as a maintainer so you understand what it looks like from this side. Rejecting pull requests, especially because of things that can be prevented, has always been heartbreaking. Communicating back and forth with contributors because information is missing in PR forms or because they need to follow the existing guidelines can be frustrating. As a maintainer, I lose my time and productivity and sometimes find myself on the edge of burnout.</p>
<p>But here is the good news: There are secret recipes for getting your pull requests reviewed and merged faster, which also help maintainers save time and avoid burnout. I'll share them with you in this blog post.</p>
<h2 id="heading-the-magic-of-issues-ensure-your-pr-has-a-companion">The Magic of Issues: Ensure Your PR Has a Companion</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExcGNxdW54cGllYmNqcTJmNjFhd29lcnUwdHRsYmhrY3EzMjhkaWNtZSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/26hit0ki6HWgAGH9S/giphy.gif" alt="two of us gif" /></p>
<p>Here's the golden rule: <strong>Always have an issue accompanying your PR</strong>.</p>
<p>Before working on any changes, ensure your PR is related to an issue or create one if none exists. This step is crucial because it provides context and a clear purpose for your PR. Think of an issue as a compass that guides your PR in the right direction. It ensures that your code changes align with the project's needs and helps reviewers understand the "why" behind your work.</p>
<h3 id="heading-proposing-a-feature-or-reporting-a-bug">Proposing a Feature or Reporting a Bug</h3>
<p>Let's say you have a brilliant idea for a new feature or stumbled upon a bug. The first step is to create an issue. Propose your idea, describe the bug, and seek initial feedback from the project maintainers.</p>
<p>Wait for them to triage your issue before making any changes. They will let you know if it's a go or unnecessary for the project. It's always better to have that confirmation to avoid any potential misunderstandings or wasted effort.</p>
<h3 id="heading-following-requirements-for-existing-open-issues">Following Requirements for Existing Open Issues</h3>
<p>If you're working on an existing open issue, make sure you follow the requirements and instructions provided in the issue. <strong>Following and sticking to them increases the chances of your PR being accepted and streamlines the review process.</strong></p>
<p>Remember, just because you have an idea for an improvement outside what is required in the issue doesn't mean it's automatically the right solution. The project maintainers have a broader perspective on the project's vision and roadmap. Discussing your ideas first shows respect for their expertise and ensures your PR is well-received.</p>
<h2 id="heading-unlocking-the-secrets-reading-the-project-documentation">Unlocking the Secrets: Reading the Project Documentation</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExeXIzc2RyNnFnb2EyZW11YmtjYTJyaXI4bmVxNDBrbHB6aTdmc29raiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/2nt2dX21yO0NAaP7BS/giphy.gif" alt="information is power gif" /></p>
<p>It might seem tempting to jump straight into the code, but taking the time to read the project documentation, such as the README and the contributing guidelines, will save you and the reviewers valuable time and avoid headaches in the long run.</p>
<p>One of the reasons I have rejected PRs is that the contributor didn't follow the contributing guidelines or the instructions to run the project, which caused the project rendering or building not to work correctly. </p>
<p>Project documentation is like a treasure map, guiding you through the project's structure, design decisions, and contribution guidelines. It holds the secrets to understanding the project itself and the do's and don'ts of contributing.</p>
<p>Every project is unique, and contributing to open source requires understanding and respecting the project's specific guidelines. Some projects might have strict coding style guidelines, while others may have particular requirements for commit messages or PR descriptions. </p>
<p>So, before you start coding, invest some time in reading the docs. It's an investment that will pay off in the form of smoother PR reviews and a deeper understanding of the project as a whole.</p>
<h2 id="heading-branching-out-creating-a-new-branch-for-changes">Branching Out: Creating a New Branch for Changes</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExZWVuaXB4czRtc2RybzlzcjNrbDVtZGdvcmU3ajkzN2hoaHRqdmQ0YiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/d89BjPGXijE0imFOxA/giphy.gif" alt="isolation gif" /></p>
<p>Always create a new branch before making any changes. This may seem like an obvious step, but it's worth emphasizing. Working directly on the default branch (usually the <code>main</code> branch) can lead to chaos and version control nightmares, especially in larger projects with multiple contributors.</p>
<p>Imagine working on a painting. You wouldn't want to experiment with new colors directly on the finished piece, would you? Creating a new branch ensures that your changes are isolated from the main codebase until they are ready for merging. It allows you to experiment, make mistakes, and refine your code without affecting others.</p>
<p>When creating your branch, give it a descriptive name that reflects your changes. For example, "fix-login-bug" or "feat/add-submit-button" clearly communicate the scope of your work.</p>
<p>You must know that PRs with changes made directly on the default branch often get rejected. So, always create a new branch as a safe space to work on your changes. It's a simple yet crucial step towards a smoother PR process.</p>
<h2 id="heading-a-peek-into-the-past-learning-from-merged-and-closed-prs">A Peek into the Past: Learning from Merged and Closed PRs</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYm9vZnlremIzdjB0Zmd5ODFqOGU5ajA2MW84cWFodnl1OWwyZ3NzdyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3oriO8vwmRIZO6kcNO/giphy.gif" alt="magnify glass gif" /></p>
<p>Take some time to browse through previously merged and closed PRs. </p>
<p>Study the merged PRs. See how other contributors have structured their pull requests, the level of detail they provide, and how they respond to feedback. This can be a great way to understand what reviewers look for and ensure your PR is clear and detailed.</p>
<p>Even more importantly, analyze closed PRs. Look for common reasons for rejection, such as missing information, incomplete tests, code that doesn't align with the project's style or vision, etc. By doing so, you can avoid making the same mistakes in your PR.</p>
<h2 id="heading-fill-in-the-blanks-complete-the-pr-form-with-detail">Fill in the Blanks: Complete the PR Form with Detail</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExanV1cnNyOHZ6c2pnc3kxYzc3NjcyMGExNnMxNHVzdG16aWlkaWo0NSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3orieOBN3DmpWv3pAc/giphy.gif" alt="fill out form gif" /></p>
<p>Many projects have a PR template. Don't treat these as "just" formalities; don't remove any part of the template just because you think it is unnecessary or would make your PR look clean.</p>
<p>The PR template guides you in giving all the information the maintainers need to review your PR. You must fill it out thoroughly, clearly describing your changes and the problem you're solving.</p>
<p>Typically, here is what to include:</p>
<ul>
<li><p><strong>Descriptive Title</strong></p>
<p>   Keep it short, informative, and directly related to your changes. For example, "Fix: Broken links on the navbar".</p>
</li>
<li><p><strong>Detailed Description</strong></p>
<p>   Walk reviewers through your code, highlighting your changes' "what" and "why." Be generous with examples and explanations. Think of it as a user guide for your changes. If your PR contains several changes, as in <a target="_blank" href="https://github.com/open-sauced/intro/pull/138">this example</a>, consider using bullet points or checklists. <strong>Bottom line</strong>: The PR description should give reviewers an immediate understanding of your changes.</p>
</li>
<li><p><strong>Testing Steps</strong></p>
<p>   Provide clear instructions on how to test your changes. This helps reviewers verify that your contribution works as intended.</p>
</li>
<li><p><strong>Visual Aids</strong></p>
<p>   Screenshots or screen recordings can be beneficial in illustrating your changes, especially for user interface modifications. Include before-and-after screenshots or a short demo video showcasing the impact of your work.</p>
</li>
<li><p><strong>Link to an Issue</strong></p>
<p>   Include a reference to the issue your PR addresses, such as "Fixes #123" or "Closes #456". This will help the reviewer know that there is an issue related to your PR. Linking your PR to the related issue will also automatically close the issue once the PR is merged.</p>
</li>
</ul>
<p>You can write the PR form from scratch with the above details if no template is provided.</p>
<p>Submitting an incomplete or carelessly written PR can lead to back-and-forth communication, delays, or even rejection. Take the time to fill out the form thoroughly, addressing each section with care.</p>
<h2 id="heading-stay-active-keep-your-branch-up-to-date">Stay Active: Keep Your Branch Up-to-Date</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExd3Z6aDNta2Flb3lsNjM1OXRoamlqbWw4cHpyMDdyY3F2d3kzOXY1MSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LOQyoLIojnizS949is/giphy.gif" alt="keep going gif" /></p>
<p>The review process can take some time. While waiting for your PR to be reviewed and merged, don't forget to keep your branch up-to-date with the <code>main</code> branch.</p>
<p>Periodically update your branch by pulling in the latest changes from the <code>main</code> branch. This way, you can quickly catch any potential conflicts and resolve them before they become a roadblock to your PR's acceptance.</p>
<p>If you need help resolving merge conflicts, read <a target="_blank" href="https://dev.to/opensauced/keeping-your-branch-up-to-date-and-handling-merge-conflicts-while-waiting-for-pr-reviews-3b3h">this blog post</a> by @bekahhw.</p>
<h2 id="heading-final-words">Final Words</h2>
<p>Getting your pull requests reviewed and merged faster is not just about following a set of recipes; it's also about sharpening your communication skills and seizing networking opportunities.</p>
<p>Clear and concise communication is key to a smooth PR process. By effectively communicating your changes and addressing reviewer feedback, you demonstrate your commitment to the project and make the reviewer's job easier.</p>
<p>Additionally, engaging with the project maintainers and the community provides valuable networking opportunities. It shows your enthusiasm and willingness to collaborate and learn, increasing the chances of your PR being accepted and opening doors for future contributions or even job searching.</p>
<p>So, as you apply these secret recipes, remember that they are about more than technical proficiency. They are also about building relationships and effective communication.</p>
]]></content:encoded></item><item><title><![CDATA[Collaborate, Conquer, & Grow: Mastering the Art of Issue Management for Open Source Projects]]></title><description><![CDATA[Have you ever faced a dilemma as a maintainer, wondering whether to tackle an issue yourself or create an issue for the community to solve?
Knowing when to delegate tasks and involve external contributors is crucial for empowering contributors, foste...]]></description><link>https://adiati.com/collaborate-conquer-grow-mastering-the-art-of-issue-management-for-open-source-projects</link><guid isPermaLink="true">https://adiati.com/collaborate-conquer-grow-mastering-the-art-of-issue-management-for-open-source-projects</guid><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Thu, 23 May 2024 10:00:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716324364650/2fe2d0dc-1ff3-4122-a7ad-e21a6fda18b4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever faced a dilemma as a maintainer, wondering whether to tackle an issue yourself or create an issue for the community to solve?</p>
<p>Knowing when to delegate tasks and involve external contributors is crucial for empowering contributors, fostering a healthy community, and keeping your sanity intact. However, there are also tasks that only the core team may and can handle.</p>
<p>In this article, I will walk you through prioritizing issues wisely and deciding when to delegate or best handle them in-house.</p>
<h2 id="heading-prioritizing-issues-a-clear-roadmap-to-success">Prioritizing Issues: A Clear Roadmap to Success</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYnNzMmJlY2tybDl1cmIxeHQ4ajlrcG02dHM1Y3ZxczVuZWk5Z25xNiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/SXCCmllnAm8UHZeKlK/giphy-downsized.gif" alt="priorities gif" /></p>
<p>Before deciding to delegate or tackle an issue, you must learn how to prioritize it. With a mountain of issues, effective prioritization is crucial. How do you know what to tackle first?</p>
<p>It would help if you considered these factors to prioritize issues:</p>
<ul>
<li><strong>Severity</strong>: Critical bugs, security vulnerabilities, and blockers must be addressed first.</li>
<li><strong>Impact</strong>: How many users are affected? Issues impacting a large user base deserve your quick attention.</li>
<li><strong>Difficulty</strong>: Can the issues be resolved quickly, or will they require significant effort? Consider prioritizing these based on the time and resources that you have.</li>
<li><strong>Alignment with project goals</strong>: You want to focus more on issues that contribute to the project's vision rather than nice-to-have ones.</li>
<li><strong>Community interest</strong>: If a feature request has high community engagement, such as active discussions, and receives enough potential support, you might want to consider prioritizing it.</li>
</ul>
<p>Now, you know how to prioritize issues. Next, we will dive into which issues are best to delegate and which are best for you to work on yourself.</p>
<h2 id="heading-empowering-your-community-when-to-delegate">Empowering Your Community: When to Delegate</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWlsaWZjNWh2cWcxZTlpdmQ5cTRiamxjY3h6cnQwNGhhZDZubGpkbCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/AQgVcwtqGxejyGq22s/giphy.gif" alt="delegate gif" /></p>
<p>Most of the time, writing an issue is more challenging and time-consuming than working on it yourself. But if you handle everything alone, you will get burnt out quickly. </p>
<p>Remember, the key to open source is the community. Delegating issues to the contributors can bring fresh perspectives, lighten your workload, and foster a sense of ownership within the community.</p>
<p>Now, the question is: What kind of issues do you better delegate?</p>
<ul>
<li><strong>Bug fixes</strong>: Clear, reproducible bugs with minimal scope are perfect for contributors to tackle. You need to ensure that these bugs are not affecting the functionality of the current state of your project, even without being fixed immediately. These types of bugs are usually related to UI performance.</li>
<li><strong>Documentation improvements</strong>: Updating documentation, adding tutorials, or fixing typos and grammatical errors can be tackled by anyone with a keen eye and contributors with writing skills.</li>
<li><strong>Small feature additions</strong>: Well-defined, self-contained features are perfect for contributors looking to expand their portfolio. You must ensure these features align with your project's vision and scope.</li>
<li><strong>Testing</strong>: Do you need to test specific functionalities or add test coverage to your project? These tasks, while crucial, can often be delegated.</li>
</ul>
<p>To manage these issues, you can label them with <code>bug</code>, <code>feature</code>, <code>testing</code>, <code>help wanted</code>, etc., depending on the issue type.</p>
<p>Always remember that contributors volunteer their time to help you maintain and enhance your project. So, when time is sensitive, consider handling them in-house rather than rushing contributors to finish the issue promptly.</p>
<p>Delegating issues is one of the ways to attract new contributors to your project and build your contributor pipeline. Contributors come and go; you want more contributors to stick around and contribute more after their first pull request for the sustainability of your project.</p>
<p>Delegating issues will help contributors understand your project and its codebase better, and it help you offload some of your work and build a vibrant community.</p>
<h2 id="heading-maintaining-the-core-issues-best-handled-in-house">Maintaining the Core: Issues Best Handled In-House</h2>
<p><img src="https://media.giphy.com/media/eCO8PynsAKrfRR2XIX/giphy-downsized.gif" alt="I'm going to do it gif" /></p>
<p>Even though delegation is important in open source, some issues need to be handled immediately and can be complex and too sensitive to be taken by external contributors.</p>
<p>There are three major factors that you need to consider when deciding to handle issues in-house:</p>
<ol>
<li><strong>Time</strong>: When a problem needs to be addressed and handled quickly, or you need to ship a feature within a deadline, you want to take this on yourself. It's best to refrain from putting time pressure on contributors.</li>
<li><strong>Complexity</strong>: The core team has more context about a feature and has a bigger picture about the direction of the production. Consider handling this in-house when you need to work on something complex.</li>
<li><strong>Continued communication</strong>: Issues that require continued and regular communication between maintainers to update the progress and make prompt decisions in the process, potentially taking place outside GitHub for efficiency, are usually best left to core members.</li>
</ol>
<p>"In-house" doesn't necessarily mean the tasks can only be tackled by the core team. You might have that one contributor who is a well-known community member because of their work and contributions. They regularly ship quality work, know the codebase and documentation inside out, and are familiar with your project's workflow. You know you can trust these types of contributors with the in-house tasks. However, when time is essential, you want to refrain from giving the task to them and let the core team do that instead. </p>
<p>Here are some types of issues that are best handled in-house:</p>
<ul>
<li><strong>Critical bugs</strong>: When a bug has affected the functionality of the whole project, you can consider it critical or high priority. This kind of bug can't wait and has to be fixed immediately.</li>
<li><strong>Architectural decisions</strong>: Major changes to the project's core structure or direction require your deep understanding.</li>
<li><strong>Security vulnerabilities or privacy concerns</strong>: This type of issue is sensitive, and protecting user data is your top priority. So, you need to fix these kinds of issues yourself.</li>
<li><strong>Complex refactoring</strong>: Extensive code overhauls often need your experienced perspective and in-depth understanding of the codebase. It requires careful planning and analysis for efficient, maintainable, and scalable code.</li>
<li><strong>Creating or modifying guidelines</strong>: The rules of your project and how to contribute to it are yours to determine. Having more people outside your team to throw ideas can cause you to drift away from your original intention and direction.</li>
</ul>
<p>Consider labeling these types of issues with <code>core team work</code>, <code>critical</code> or <code>high priority</code> to inform that these will be handled in-house.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Mastering issue management is a game-changer for open source maintainers, but it is also an ongoing process. Adapt your strategies as your project evolves, ask for community feedback, and don't be afraid to experiment to find the best approaches. By doing so, you can transform issue management into a powerful tool for community engagement and project success.</p>
]]></content:encoded></item><item><title><![CDATA[From Contributor to Maintainer: My Journey in Open Source]]></title><description><![CDATA[Do you know that May is Maintainer Month? I never thought I would become a maintainer, but here I am, six months into my volunteer role as an open source projects maintainer.
If this is the first time you read my article, I'm Ayu. I'm Indonesian and ...]]></description><link>https://adiati.com/from-contributor-to-maintainer-my-journey-in-open-source</link><guid isPermaLink="true">https://adiati.com/from-contributor-to-maintainer-my-journey-in-open-source</guid><category><![CDATA[Open Source]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[General Advice]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Mon, 20 May 2024 22:33:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1716240541096/240a3cf1-1797-4ffe-8f69-9b861249fe87.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Do you know that May is <a target="_blank" href="https://maintainermonth.github.com/">Maintainer Month</a>? I never thought I would become a maintainer, but here I am, six months into my volunteer role as an open source projects maintainer.</p>
<p>If this is the first time you read my article, I'm Ayu. I'm Indonesian and based in the Netherlands. I'm a technical blogger and a Documentation Team Lead at the <a target="_blank" href="https://virtualcoffee.io/">Virtual Coffee</a> community. My passion lies in collaboration and documentation (docs). I love to find ways to make documentation accessible to all users, regardless of their skill levels and cultural backgrounds. </p>
<p>To celebrate Maintainer Month, I want to share my journey in open source, from contributing to maintaining open source projects.</p>
<h2 id="heading-starting-with-contributing">Starting with Contributing</h2>
<p>As I self-learned to code, I had some experience with GitHub for my personal projects. However, I knew nothing about open source.</p>
<p>My journey in open source started with <a target="_blank" href="https://hacktoberfest.com/">Hacktoberfest</a> 2019. I heard about this event from X (previously Twitter) and decided to participate. Back then, resources to learn how to contribute to open source were less plentiful than today. So, I had no other option than to learn by reading the projects' README and contributing guidelines on GitHub.</p>
<blockquote>
<p>Looking back, I'm grateful for this limitation because it shaped my habit of reading a project's documentation before I started contributing.</p>
</blockquote>
<p>I still remember my first-ever PR being closed. The maintainer asked me to pull the latest changes, update my code, resolve merge conflicts, and create a new PR. I didn't know what "pull" the latest changes meant, why I should "update my code," or what "merge conflicts" were. I asked for clarification but never got a response (even until today).</p>
<p>Getting my feet wet in open source was already daunting, and not getting an answer to my question discouraged me completely from contributing.</p>
<h2 id="heading-pushing-through-and-being-consistent">Pushing Through and Being Consistent</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExNWM3Mm55amUyZWQxaWJ0eGpmdDV2eXdteXE2aTIzdjRmcTFzZzF1biZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/p6gYQFkPpwjky0Gjfs/giphy.gif" alt="consistency gif" /></p>
<p>In 2020, I participated again in Hacktoberfest. This time, the experience was different. I participated in the event together with the Virtual Coffee community. I had the whole village to support and mentor me. I learned so much and gained more confidence in contributing to various projects.</p>
<p>After Hacktoberfest, I continued contributing regularly to Virtual Coffee's repositories and began to enjoy collaborating on and contributing to open source.</p>
<p>You might've heard that contributing to open source is more than contributing code or creating PRs. Most of my contributions involve writing blog posts about open source, creating and updating documentation, and creating issues. And I love doing all of these!</p>
<p>I learned that the more I'm involved in particular projects regularly, the more I understand them in deeper level. This helps me spot bugs faster, generate ideas for project enhancement, answer questions, and support new contributors. It also allows me to work closer with maintainers and understand the project's goals and visions, which led me to become a maintainer.</p>
<h2 id="heading-becoming-a-maintainer">Becoming a Maintainer</h2>
<p>After contributing to <a target="_blank" href="https://app.opensauced.pizza">OpenSauced</a> projects for some time, I was thrilled when <a target="_blank" href="https://x.com/BekahHW">Bekah</a> gave me the opportunity to help maintain <a target="_blank" href="https://oss.fyi/cG5llUb">some of their repositories</a>.</p>
<p>Coming from the contributor side, I didn't know how to maintain a project. One of the repositories that my team maintains is an open source repository for beginners.</p>
<p>In the beginning, I felt overwhelmed catching up with incoming PRs. Not only do I need to review and merge PRs, but as we're receiving contributions from folks new to open source, I also need to explain why I give the feedback and suggest how to address it.</p>
<blockquote>
<p>Based on my bitter experience, now that I'm a maintainer, I make sure to give feedback and explanations when reviewing PRs to help out new contributors and beginners.</p>
</blockquote>
<p>But along the way, I learned about tools that can help maintainers save time and increase productivity, began to get used to the flow, and learned much more from this role.</p>
<h2 id="heading-the-ups-and-downs">The Ups and Downs</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWY2eHZ2YXRjb2R1b3dtaW5iYmlxZjNhODZxZ2VybXdlNTZma3RlbiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/CZtIPIw6ql3YxTJPSe/giphy.gif" alt="ups and downs gif" /></p>
<p>Being a maintainer is challenging. I need to wear many hats—a reviewer, a mentor, a communicator, a community nurturer, and many more. Sometimes, I felt frustrated when contributors rushed me to review their PRs or didn't take the time to read and follow the documentation and guidelines.</p>
<p>But at the same time, being a maintainer is very rewarding. Seeing people grow continuously gives me joy. It boosts my energy whenever I encounter contributors who ask questions and are eager to learn. I'm happy whenever someone tells me they appreciate my effort to support them. Communicating and collaborating with contributors also taught me many things that made me a better maintainer.</p>
<h2 id="heading-achievements">Achievements</h2>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExc3F2OHpoem83ZHMzbjNnajJoMnp3cjVkZTRzcm9seHRraHg0bHphYyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/IwAZ6dvvvaTtdI8SD5/giphy-downsized.gif" alt="clebration gif" /></p>
<p>Although I haven't been a maintainer for so long, I'm proud of some of my achievements.</p>
<h3 id="heading-maintainers-guidelines">Maintainers Guidelines</h3>
<p>At the beginning of my maintainer journey, I often needed clarification about how things worked, such as handling issues and PRs, the time window for getting an issue triage, PR review and merge, and so on. Each of us on the team had our own way of doing things, and I regularly asked my team questions about our procedures, which affected my productivity. Every time I gained new information, I wrote it down in my notes.</p>
<p>Long story short, I proposed creating maintainers' guidelines for our team based on these notes. After some discussions and reaching a consensus, we finally came up with official <a target="_blank" href="https://docs.opensauced.pizza/contributing/opensauced-maintainers-guide/community-maintainers-guide/">maintainers' guidelines</a>.</p>
<p>You can read <a target="_blank" href="https://dev.to/opensauced/the-missing-piece-why-your-project-needs-a-maintainer-onboarding-process-np0">this blog post</a> I wrote a while ago about why onboarding maintainers is as important as onboarding contributors and how to create maintainers guidelines for your open source project.</p>
<h3 id="heading-becoming-a-maintainer-course-with-opensauced">Becoming a Maintainer Course with OpenSauced</h3>
<p>There are many resources on how to contribute to open source, but there aren't many resources on maintaining an open source project.</p>
<p>OpenSauced has an <a target="_blank" href="https://intro.opensauced.pizza/#/intro-to-oss/README">Intro to Open Source</a> course for people who want to learn to contribute to open source projects. When Bekah invited me to join her and <a target="_blank" href="https://twitter.com/codergirl1991">Jessica Wilkins</a> in creating a course for people who wish to take the next step in becoming maintainers, I didn't think twice and said yes. I'm very grateful to collaborate closely with two people I look up to in open source and to learn a lot from them during the process.</p>
<p>The <a target="_blank" href="https://intro.opensauced.pizza/#/becoming-a-maintainer/README">Becoming a Maintainer</a> course officially launched today, as I wrote this on May 20th, and we had a <a target="_blank" href="https://www.youtube.com/watch?v=8Q9bdDrL0bg">live stream</a> to launch it.</p>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdmZobml0OTkxcDZlZXppdXUzendsc3B6bzZpOWc2N3ZrN25mN3gzNiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3o6Zt7g9nH1nFGeBcQ/giphy.gif" alt="this gif" /></p>
<p>I believe this course can help more people, not only future maintainers but also contributors who'd like to know what it takes to be a maintainer.</p>
<h2 id="heading-final-words">Final Words</h2>
<p>With this Maintainer Month, I invite you to show appreciation to open source maintainers by giving them shoutouts on social media or the comment below, sending them a <a target="_blank" href="https://oss.fyi/love">note of recognition</a>, or simply thanking them in your PRs or GitHub Discussions.</p>
<p>With this opportunity, I want to thank these awesome maintainers and my incredible open source mentors: <a target="_blank" href="https://twitter.com/BekahHW">BekahHW</a>, <a target="_blank" href="https://x.com/danieltott">Dan Ott</a>, and <a target="_blank" href="https://x.com/nickytonline">Nick Taylor</a>. I'd also like to thank my Virtual Coffee family for their endless support throughout my open source and tech journey.</p>
<p><img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExZThmcXNyNXB1MDdzNm5tNHJ4N3JrdDl0emMyeW40cDNoNjc4bjB5NSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/QAsBwSjx9zVKoGp9nr/giphy-downsized.gif" alt="thank you keanu reeves gif" /></p>
<hr />
<p>🖼️ Credit cover photo: <a target="_blank" href="https://unsplash.com/@dinoreichmuth?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Dino Reichmuth</a> on <a target="_blank" href="https://unsplash.com/photos/yellow-volkswagen-van-on-road-A5rCN8626Ck?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></p>
<p>Thank you for reading! Last, you can find me on <a target="_blank" href="https://twitter.com/@AdiatiAyu"><strong>Twitter</strong></a>. Let's connect! 😊</p>
]]></content:encoded></item><item><title><![CDATA[How to Become a Better Open Source Maintainer]]></title><description><![CDATA[Hi friends 👋,
I've been an open source contributor for a few years now. And I love and enjoy the open source collaboration culture. As a contributor, I used to wonder what a maintainer does. How can they keep up with issues and pull requests, especi...]]></description><link>https://adiati.com/how-to-become-a-better-open-source-maintainer</link><guid isPermaLink="true">https://adiati.com/how-to-become-a-better-open-source-maintainer</guid><category><![CDATA[Open Source]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[General Advice]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Thu, 30 Nov 2023 14:58:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1701356379197/987042b7-8612-4d2f-9095-e040749ed49c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi friends 👋,</p>
<p>I've been an open source contributor for a few years now. And I love and enjoy the open source collaboration culture. As a contributor, I used to wonder what a maintainer does. How can they keep up with issues and pull requests, especially during Hacktoberfest? What took them so long to review and merge my PR? And there were many other thoughts and questions in my mind.</p>
<p>Since last September, I have had the opportunity to be an open source project maintainer. I help maintain some project repositories at <a target="_blank" href="https://virtualcoffee.io/">Virtual Coffee</a>, <a target="_blank" href="https://opensauced.pizza/">OpenSauced</a>, and <a target="_blank" href="https://www.shesharp.co/">SheSharp</a> communities. And now, I can see the view from a different perspective.</p>
<p>Although it was not so long ago that I became a maintainer, I learned so much from this journey. And I keep learning to be a better maintainer through my fabulous teams and mentors. I will share what it takes to be a better open source maintainer in this article.</p>
<h2 id="heading-communication">Communication</h2>
<p>Most conversations in open source happen asynchronously. It can be through issues or PR comments, GitHub discussions, or chat services like Discord or Slack. Written communication is prone to misunderstanding, especially in international communities. So <a target="_blank" href="https://adiati.com/how-to-communicate-better-in-open-source">good communication in open source</a> is the most essential thing to have.</p>
<p>You want contributors to feel welcomed and keep contributing to your projects. So, improving your communication skills, especially in remote environments, is crucial.</p>
<p>To avoid confusion, take time to answer questions and deliver them in short and clear sentences. Sometimes, there are repeating tasks like asking contributors to resolve conflicts or personally thanking them for their contribution. Having a clear and friendly template ready in the "<a target="_blank" href="https://docs.github.com/en/get-started/writing-on-github/working-with-saved-replies/creating-a-saved-reply">Saved reply</a>" feature on GitHub is one of the time savers.</p>
<p>However, communication is not always with contributors. When you are part of a maintainers team, you must establish good communication, too. Communicate in which direction the project will go, what the team expects from each other, how the team wants to handle and merge a PR, etc., so everyone can be on the same line. When there is no good communication between maintainers, it can affect the contributors and the project itself.</p>
<h2 id="heading-observation">Observation</h2>
<p>To be a better maintainer, you need to be observant. Pay attention to what's happening around the project and how you can improve things for contributors and maintainers.</p>
<p>In one of my experiences, my team and I repeatedly gave feedback to resolve merge conflicts on the <a target="_blank" href="https://github.com/open-sauced/guestbook">guestbook repository</a> at OpenSauced. Most of the time, contributors needed to make several attempts until we could merge their PR. Resolving merge conflicts is a daunting task, especially for beginners. Going back and forth to resolve the conflicts would likely discourage them from contributing to any open source project in the future.</p>
<p>We use CLI for this repository. So, besides fixing some things, contributors also have to run a specific command to update a file. And they often miss this particular step, making them go back and forth. I talked to my team about this observation. I also added a section in our README to resolve conflicts in this repository. Since then, we have been able to merge in PRs faster.</p>
<h2 id="heading-ask-questions">Ask Questions</h2>
<p>Being a maintainer doesn't mean that you have to know everything. Asking questions or clarifications to contributors or other maintainers is part of being a better maintainer.</p>
<p>I'm part of the community maintainers team at OpenSauced. So I'm more familiar with the community side than the products. I recently helped review a PR for our documentation that is related to the features of one of our products. To give feedback, I had to look at the features closely and test them out. I also asked many questions about the things that still need clarification.</p>
<p>Asking these questions makes me more familiar with our products. And some of those questions ended up enhancing the features.</p>
<h2 id="heading-set-boundaries">Set Boundaries</h2>
<p>It's fine and even encouraged for maintainers to set boundaries. The earlier, the better. Setting boundaries can prevent you from getting burned out and have balance.</p>
<p>Like contributors, most maintainers volunteer their time to maintain a repository. Sometimes, you have to prioritize your work or personal life before you can respond to a question or review PRs. Tell your team (and contributors) what they can expect from you. For example, if you won't do any maintenance tasks on the weekend or are unavailable during office hours.</p>
<h2 id="heading-pull-request-pr-review">Pull Request (PR) Review</h2>
<p>Reviewing PRs is not only paying attention to the changes in the PR. But it's also paying attention to the details.</p>
<h3 id="heading-pull-request-pr-form">Pull Request (PR) Form</h3>
<p>Before you review a PR, look closely at the PR form.</p>
<p>If the project has a PR template, has the contributor completed the form? And if there is no template provided, does it have a description? Is the description clear enough to describe the changes? Does it mention to which issue the PR is referred, and if not, is there any reason the PR isn't related to an issue? When the changes affect UI, are there screenshots or screen recordings to show the difference before and after the changes?</p>
<p>As a maintainer, you want to educate contributors about the importance of providing details in their PR forms. Clear and detailed information can help you a lot in reviewing PRs and benefit contributors in getting their PR reviewed and merged faster.</p>
<h3 id="heading-test-changes-locally">Test Changes Locally</h3>
<p>Have you ever reviewed documentation changes to a README or any Markdown file on GitHub, and the grammar, wordings, and everything looked good, so you merged it in? But afterward, you realized that the format on the page seemed funny. Or you reviewed code changes, and everything looks neat. Then, you tested things live on Netlify Deploy Preview, and everything worked great. But after merging in the PR, it broke the production.</p>
<p>One of the maintainers' biggest tasks is ensuring the changes work as expected. So, you always want to test the changes locally before you merge a PR.</p>
<p>You can use the "<a target="_blank" href="https://markdownlivepreview.com/">Markdown Live Preview</a>" tool to look at the page format of any Markdown files.</p>
<p>For another type of change like code, you want to pull the branch of the PR and test the changes locally to decide if you will merge it in or ask for some more changes to the contributor. If you don't know how to pull a branch to test it locally, read my article "<a target="_blank" href="https://adiati.com/how-to-fetch-a-contribution-branch-to-test-it-locally-as-an-open-source-maintainer?source=more_series_bottom_blogs">How to fetch a contribution branch to test it locally as an open-source maintainer</a>".</p>
<h2 id="heading-final-words">Final Words</h2>
<p>Do you have other tips about becoming a better open source maintainer? Share and drop them in the comment below, and let's learn together! 😄</p>
<hr />
<p>🖼️ Credit cover image: <a target="_blank" href="http://undraw.co/"><strong>unDraw</strong></a></p>
<p>Thank you for reading! Last, you can find me on <a target="_blank" href="https://twitter.com/@AdiatiAyu"><strong>Twitter</strong></a>, <a target="_blank" href="https://hachyderm.io/@AdiatiAyu"><strong>Mastodon</strong></a><strong>,</strong> and <a target="_blank" href="https://bsky.app/profile/adiati.ayu.bsky.social"><strong>BlueSky</strong></a>. Let's connect! 😊</p>
]]></content:encoded></item><item><title><![CDATA[How to Resolve Merge Conflicts Using the Merge Editor Feature on VS Code]]></title><description><![CDATA[Hi friends 👋,
When you encounter merge conflicts, where do you resolve them? Directly on GitHub or in your code editor? If you use VS Code, do you know that it has a built-in feature called "Merge Editor" that you can use to resolve conflicts?
In th...]]></description><link>https://adiati.com/how-to-resolve-merge-conflicts-using-the-merge-editor-feature-on-vs-code</link><guid isPermaLink="true">https://adiati.com/how-to-resolve-merge-conflicts-using-the-merge-editor-feature-on-vs-code</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Git]]></category><category><![CDATA[VS Code]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 22 Nov 2023 19:33:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700671401336/1f6a44e6-e37b-4f61-8ac5-c58c7050e1d5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi friends 👋,</p>
<p>When you encounter merge conflicts, where do you resolve them? Directly on GitHub or in your code editor? If you use VS Code, do you know that it has a built-in feature called "Merge Editor" that you can use to resolve conflicts?</p>
<p>In this article, I will walk you through how to resolve merge conflicts in VS Code using this feature.</p>
<h2 id="heading-prerequisite">Prerequisite</h2>
<ul>
<li><p>You can download and install <a target="_blank" href="https://code.visualstudio.com/">VS Code</a> on your local machine if you haven't.</p>
</li>
<li><p>This tutorial assumes that you have updated your local working branch with the latest changes from the <code>main</code> branch of the <code>upstream</code> repository.</p>
<p>  If you need help updating your branch, read the "<a target="_blank" href="https://www.freecodecamp.org/news/keep-branches-up-to-date-resolve-merge-conflicts/#how-to-keep-the-branches-up-to-date">How to Keep the Branches Up to Date</a>" section of my article on freeCodeCamp.</p>
</li>
</ul>
<h2 id="heading-enable-the-feature">Enable the Feature</h2>
<p>Before using the Merge Editor, you need to ensure that the feature is enabled in your VS Code.</p>
<p>Follow these steps to enable it:</p>
<ul>
<li><p>Click the gear icon "Manage" at the bottom on the sidebar, then click "Settings". Alternatively, press <code>Ctrl + ,</code> for the shortcut.</p>
</li>
<li><p>Type "git merge editor" in the search bar.</p>
</li>
<li><p>Check the "Open the merge editor for files that are currently under conflict" checkbox under the "Git: Merge Editor".</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700395153810/2fa3a25e-e292-47a1-8cf7-2cf477570b7f.png" alt="Git Merge Editor setting on VS Code" class="image--center mx-auto" /></p>
<h2 id="heading-resolving-the-merge-conflicts-with-the-merge-editor">Resolving the Merge Conflicts with the Merge Editor</h2>
<p>After updating your working branch, open the file(s) with conflicts. The conflicted file(s) has an exclamation mark (<code>!</code>) beside the file(s) name, as shown in the image below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700749245864/b4fc8d75-a0fc-4d9e-a274-e1d6240f0abe.png" alt="Conflicted files on VS Code" class="image--center mx-auto" /></p>
<p>Then, follow these steps to resolve the merge conflicts in the Merge Editor:</p>
<h3 id="heading-step-1-click-the-resolve-in-merge-editor-button">Step #1 - Click the "Resolve in Merge Editor" Button</h3>
<p>You will see a blue "Resolve in Merge Editor" button at the bottom right.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700655637408/07b41b16-97a0-48d8-b19b-34c0597ac064.png" alt="Resolve in Merge Editor button at VS Code" class="image--center mx-auto" /></p>
<p>After clicking the button, you will see the Merge Editor with three parts:</p>
<ul>
<li><p>Left: The incoming changes from the remote <code>main</code> branch.</p>
</li>
<li><p>Right: Your (current) changes.</p>
</li>
<li><p>Bottom: The result.</p>
</li>
</ul>
<h4 id="heading-understanding-the-merge-editor">Understanding the Merge Editor</h4>
<p>The left (incoming change) and right (current change) parts in the Merge Editor are read-only. And the bottom one (result) is where you can modify the changes.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700645434308/f7506b45-17cf-4288-bacd-7b17d736d880.png" alt="Merge Editor feature at VS Code" class="image--center mx-auto" /></p>
<p>The conflicted line(s) of code are shown in the yellow box(es) in the Merge Editor. You can see the number of conflicts in the file at the top right (shown in a red circle in the image) of the "Result".</p>
<p>Before resolving the conflicts, the "Result" reflects the base. The base is the state before the changes were made, either at the remote <code>main</code> branch or your branch.</p>
<h3 id="heading-step-2-decide-how-to-resolve-the-conflicts">Step #2 - Decide How to Resolve the Conflicts</h3>
<p>Now, you need to decide how you want to resolve the conflicts. You can do it manually or by clicking the options:</p>
<ul>
<li><p><strong>Accept Incoming</strong>: if you're going to keep the incoming changes.</p>
</li>
<li><p><strong>Accept Current</strong>: if you wish to keep your changes.</p>
</li>
<li><p><strong>Accept Incoming</strong> and <strong>Accept Current</strong>: if you want to keep both changes.</p>
<p>  Be noted that the order of acceptance matters. Whichever you click first will be on the top.</p>
</li>
</ul>
<p>In some cases, you might as well get these options:</p>
<ul>
<li><p><strong>Accept Combination (Incoming First)</strong>: if you want to keep both changes but prefer to have the incoming ones at the top first.</p>
</li>
<li><p><strong>Accept Combination (Current First)</strong>: if you want to keep both changes but prefer to have your changes come first at the top.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700394507141/ddfcc502-703f-4965-8ca0-53717e643c31.png" alt="Acceptance options in Merge Editor" class="image--center mx-auto" /></p>
<p>The changes you accept will be reflected in the "Result". You can still remove the incoming and current changes if you need to. You can also modify the changes manually here if necessary.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700393283261/109ee2ae-29e4-4438-b79f-c9fcec96edd7.png" alt="Removal options in the Result box of Merge Editor in VS Code" class="image--center mx-auto" /></p>
<p>If you make the changes manually and want to redo resolving the conflicts, you can click "<strong>Reset to base</strong>".</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700395958145/18f900c8-daa7-420f-9301-b645d1369085.png" alt="Reset to base option in the Result box in Merge Editor" class="image--center mx-auto" /></p>
<p>You can always check the actual file(s) to see the result while resolving the conflicts when you are confused.</p>
<p>If you wish to undo the merge, now is the best time to do it before you complete the merge. You can run the <code>git merge --abort</code> command. This command will abort the merge and return your file to the state before the conflicts.</p>
<h3 id="heading-step-3-complete-merge">Step #3 - Complete Merge</h3>
<p>After resolving the conflicts, click the blue "Complete Merge" button that you can find at the bottom right.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1700393848990/27cb7f7c-222d-4fdf-b44d-0cd18ed2d777.png" alt="Complete Merge button on Merge Editor at VS Code" class="image--center mx-auto" /></p>
<p>If you still have conflicts in another file(s), repeat the steps to resolve them.</p>
<p>And that's it! Now, you can commit and push your changes to your remote branch.</p>
<h2 id="heading-final-words">Final Words</h2>
<p>Whichever ways you are using to resolve the conflicts, you want to always recheck your changes before committing.</p>
<p>You can read my article on freeCodecamp, "<a target="_blank" href="https://www.freecodecamp.org/news/keep-branches-up-to-date-resolve-merge-conflicts/">How to Keep Branches Up-to-Date and Resolve Merge Conflicts in GitHub and VS Code</a><strong>, "</strong> to learn more about keeping branches up-to-date and resolving conflicts on GitHub and VS Code.</p>
<hr />
<p>🖼️ Credit cover image: <a target="_blank" href="http://undraw.co/"><strong>unDraw</strong></a></p>
<p>Thank you for reading! Last, you can find me on <a target="_blank" href="https://twitter.com/@AdiatiAyu"><strong>X</strong></a>, <a target="_blank" href="https://hachyderm.io/@AdiatiAyu"><strong>Mastodon</strong></a><strong>,</strong> and <a target="_blank" href="https://bsky.app/profile/adiati.ayu.bsky.social"><strong>BlueSky</strong></a>. Let's connect! 😊</p>
]]></content:encoded></item><item><title><![CDATA[Building Your Brand as a Developer Through Open Source]]></title><description><![CDATA[Hi friends 👋,
I've once asked myself, "What is a personal brand?" "Do I need to build a personal brand? I'm a developer and not an influencer." "I'm an introvert. How can I put myself out there without being too uncomfortable?"
It took me a while to...]]></description><link>https://adiati.com/building-your-brand-as-a-developer-through-open-source</link><guid isPermaLink="true">https://adiati.com/building-your-brand-as-a-developer-through-open-source</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[General Advice]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Tue, 21 Nov 2023 22:35:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1700604277335/3a5dde29-3d8c-4892-bf4d-9274f27fc2c5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi friends 👋,</p>
<p>I've once asked myself, "What is a personal brand?" "Do I need to build a personal brand? I'm a developer and not an influencer." "I'm an introvert. How can I put myself out there without being too uncomfortable?"</p>
<p>It took me a while to finally decide to put myself out there. But I'm glad I did.</p>
<p>This article will share ways to build a personal brand as a developer through open source.</p>
<h2 id="heading-what-is-a-personal-brand">What is a Personal Brand?</h2>
<p>A personal brand is a widely-recognized impression of someone through their value. It can be their skills, expertise, niche, or even personality. So, it is about how you promote yourself and how you want people to know you.</p>
<p>But does every developer need to build a personal brand?</p>
<p>The short answer is no. You don't need to create a personal brand. But building a personal brand can help you advance your career, find a job, or expand your network. It allows you to show your skills, passions, and personality.</p>
<p>And as a friendly reminder, building a personal brand doesn't mean being an influencer. It's about building your value, something that can make you stand out.</p>
<h2 id="heading-five-ways-to-build-a-personal-brand-through-open-source">Five Ways to Build a Personal Brand through Open Source</h2>
<p><img src="https://media.giphy.com/media/aCatQNctAK7PC1H4zh/giphy-downsized.gif" alt="this is the way gif" /></p>
<p>There are many ways to build a personal brand. In this article, I'm particularly focusing on how to build one through open source space.</p>
<h3 id="heading-1-be-a-regular-contributor">1. Be a Regular Contributor</h3>
<p>Contributing to open source is a great way to learn to collaborate with other developers. What makes it better is that you contribute to real-world projects. And it's good to know that focusing on contributing to one or two projects is better than too many.</p>
<p>Through my regular contributions, I got the opportunity to become a maintainer of some <a target="_blank" href="https://github.com/open-sauced">OpenSauced repositories</a>. Contributions are not always about tackling an issue and creating a pull request. It can also be through creating issues to report bugs, helping maintainers triage issues or review pull requests, helping other contributors, etc.</p>
<p>When you dive deep into a project, you will understand the project inside out. You can spot issues and bugs faster, and you will have ideas to help the organization enhance the project. The more you contribute to the project, the more other collaborators, maintainers, and the organization recognize you and your ability. It allows you to expand your network and can lead you to an opportunity to become a maintainer of the project.</p>
<p>You can put your experiences as a contributor (and a maintainer) in your resume and portfolio. And it's also possible that you will cross paths with your future employer by contributing to open source projects.</p>
<h3 id="heading-2-content-creation">2. Content Creation</h3>
<p>Have you read a project's documentation and need help understanding what's happening? Most of the time, documentation has limited space to explain the projects. Sometimes, it is written in a very technical way. If it's challenging for you to understand, some people may have the same issue as you. Take this as an opportunity to write a blog post or create a video to deliver a broader explanation in a much simpler way.</p>
<p>Hosting or participating in an <a target="_blank" href="https://twitter.com/">X space</a> or streaming about open source can also help you build your value in the open source world.</p>
<p>There are various content ideas. Think of helping beginners in open source by teaching the contributing flow with Git and GitHub or GitLab. You can also share your experience as a contributor or a maintainer and what you've learned.</p>
<p>Creating content to help others will build your expertise. People will know you as someone with skills and knowledge in what you do.</p>
<p>So, find a method you're comfortable with and start from there.</p>
<h3 id="heading-3-community-engagement">3. Community Engagement</h3>
<p>I'm part of some tech communities and love documentation. Together with the core team of the <a target="_blank" href="https://virtualcoffee.io/">Virtual Coffee</a> Community, I actively discuss ideas and contribute to creating and shaping the community documentation. From there, I was trusted to be the Documentation Team Lead.</p>
<p>Last October, I got involved in the <a target="_blank" href="https://www.shesharp.co/">SheSharp</a> Community first Hacktoberfest Initiative by helping the open source team prepare the repository documentation before the event started. And that led me to be a maintainer of their open source projects.</p>
<p>When you're part of a tech community, consider being more active there, especially if your community has open source activities. Helping project maintainers review the pull requests or answer questions on GitHub are also good ways to engage with the community.</p>
<p>Engaging with the community and helping them enables you to build your credibility.</p>
<p>Community engagements include:</p>
<ul>
<li><p>reviewing pull requests on GitHub,</p>
</li>
<li><p>answering questions,</p>
</li>
<li><p>helping new contributors onboard an open source project,</p>
</li>
<li><p>welcoming new members and contributors,</p>
</li>
<li><p>and many more.</p>
</li>
</ul>
<h3 id="heading-4-highlighting-achievements">4. Highlighting Achievements</h3>
<p>You made a pull request that adds a feature to enhance users' experience. Or you raised an issue of a bug that you encountered in an open source project. These wins are worth to be highlighted as your achievements.</p>
<p>Highlighting your achievements can help you showcase your skills and expertise through your contributions.</p>
<p><a target="_blank" href="https://opensauced.pizza/">OpenSauced</a> is a platform that helps engineers to expand their resume through open source contributions. Their mission is to empower open source maintainers and teams and support contributors.</p>
<p>You can create <a target="_blank" href="https://app.opensauced.pizza/feed">Highlights</a> of your pull requests, issues, and <a target="_blank" href="https://app.opensauced.pizza/feed">DEV.to</a> blog posts that help enhance open source projects. You can also share your Highlights as your open source portfolio to help you advance your career and boost your resume.</p>
<h3 id="heading-5-self-promotion">5. Self-Promotion</h3>
<p>Self-promotion is not for everyone, but it can be powerful to help you build your brand through your niche. If you're on social media like <a target="_blank" href="https://twitter.com/">X</a>, optimize this platform to promote yourself. You can share your knowledge about open source. You can also use it to promote open source projects or as your public journal of your open source activities.</p>
<h2 id="heading-consistency-is-key">Consistency is Key</h2>
<p><img src="https://media.giphy.com/media/5D8WW6EbMI4l8SnWvr/giphy-downsized.gif" alt="consistency gif" /></p>
<p>Consistency is the key in whatever way(s) you choose to build your brand. However, consistency is different from doing things daily. Here are some examples of consistencies:</p>
<ul>
<li><p><strong>Content publication</strong>.</p>
<p>  Have you ever followed someone on YouTube or any other platforms, and you last saw their content a while ago? In the meantime, content from another creator comes to your timeline regularly. And you decide to follow them. Consistency in creating and publishing your content will not only make people stay, but it will also help you to broaden your network.</p>
</li>
<li><p><strong>The profile picture and social media handle</strong>.</p>
<p>  People will recognize you immediately without thinking twice when you have a consistent profile picture and social media handle across platforms (GitHub, socials, blogging platforms, etc.).</p>
</li>
<li><p><strong>Messaging</strong>.</p>
<p>  Create consistent messaging to tell people what you do or to associate a message with you.</p>
<p>  For example, take a look at <a target="_blank" href="https://twitter.com/swyx"><strong>Swyx</strong></a>. He popularized the <code>#LearnInPublic</code> hashtag on X. And that's what he does. He helps developers learn in public. Another example is <a target="_blank" href="https://twitter.com/eddiejaoude"><strong>Eddie Jaoude.</strong></a> He created a motto, "Collaboration First, Code Second", to socialize open source. He's well-known in the open source world and founded an open source community, <a target="_blank" href="https://www.eddiehub.org/?r_done=1"><strong>EddieHub</strong></a>.</p>
</li>
</ul>
<h2 id="heading-final-words">Final Words</h2>
<p>Although you don't need to build a personal brand, if you decide to build yours, it can benefit your journey in the long run. It can help you build your value that makes you unique and stand out.</p>
<hr />
<p>🖼️ Credit cover image: <a target="_blank" href="http://undraw.co/"><strong>unDraw</strong></a></p>
<p>Thank you for reading! Last, you can find me on <a target="_blank" href="https://twitter.com/@AdiatiAyu"><strong>X</strong></a>, <a target="_blank" href="https://hachyderm.io/@AdiatiAyu"><strong>Mastodon</strong></a><strong>,</strong> and <a target="_blank" href="https://bsky.app/profile/adiati.ayu.bsky.social"><strong>BlueSky</strong></a>. Let's connect! 😊</p>
]]></content:encoded></item><item><title><![CDATA[#100DaysOfOSS Recap: Day 28-50]]></title><description><![CDATA[Hi friends 👋,
I'm participating in the #100DaysOfOSS challenge by OpenSauced. Inspired by the #100DaysOfCode challenge, #100DaysOfOSS is a challenge for everyone interested in open source to learn about open source, contribute, or maintain open sour...]]></description><link>https://adiati.com/100daysofoss-recap-day-28-50</link><guid isPermaLink="true">https://adiati.com/100daysofoss-recap-day-28-50</guid><category><![CDATA[opensource]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[#codenewbies]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Mon, 11 Sep 2023 09:34:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1694423550209/503e2738-e525-4acb-accf-af5ae2461067.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi friends 👋,</p>
<p>I'm participating in the <a target="_blank" href="https://docs.opensauced.pizza/community/100-days-of-oss/"><strong>#100DaysOfOSS</strong></a> challenge by <a target="_blank" href="https://opensauced.pizza/"><strong>OpenSauced</strong></a>. Inspired by the <a target="_blank" href="https://www.100daysofcode.com/"><strong>#100DaysOfCode</strong></a> challenge, #100DaysOfOSS is a challenge for everyone interested in open source to learn about open source, contribute, or maintain open source projects over 100 days, starting on July 23rd.</p>
<p>This challenge focuses on growth. So it's about more than just contributing code. You can learn about open source by reading or watching tutorials, engaging in the community by sharing information and knowledge, or any other ways you find comfortable and doable. You can read more about how you can participate <a target="_blank" href="https://docs.opensauced.pizza/community/100-days-of-oss/#how-to-participate"><strong>here</strong></a>.</p>
<hr />
<p>You can follow my #100DaysOfOSS daily progress in my journal below.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/adiati98/100-days-of-oss-journal/blob/main/table-of-contents.md">https://github.com/adiati98/100-days-of-oss-journal/blob/main/table-of-contents.md</a></div>
<p> </p>
<hr />
<h2 id="heading-recap-day-28-50"><strong>✅ Recap: Day 28-50</strong></h2>
<p>I know, I know. I need to improve myself at updating my #100DaysOfOSS journey on my blog. 😅</p>
<p>But I can't believe that it's halfway to the 100th day! 🤩</p>
<h3 id="heading-learning-and-supports"><strong>Learning and Supports</strong></h3>
<ul>
<li><p>I attended the <a target="_blank" href="https://docs.opensauced.pizza/community/100-days-of-oss/#intro-to-open-source-workshop">"Intro to OSS" workshop</a> by OpenSauced hosted by BekahHW.</p>
</li>
<li><p>I attended two "Open Source Hour" Twitter spaces hosted by <a target="_blank" href="https://twitter.com/saucedopen"><strong>OpenSauced</strong></a>.</p>
</li>
<li><p>I attended a Twitch stream — <a target="_blank" href="https://www.youtube.com/watch?v=b4y4vhUlTZI">Pizza Bake Off</a> — with Brian and John from OpenSauced hosted by Nick Taylor.</p>
</li>
<li><p>We heard about this VSCode extension — <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour">CodeTour</a> — to onboard new contributors on the Twitter space with <a target="_blank" href="https://twitter.com/JeromeHardaway">Jerome Hardaway</a>. So, I tried it out. I think this would be useful when a project has a big codebase.</p>
</li>
<li><p>I wrote and published a blog post about my #100DaysOfOSS journey: <a target="_blank" href="https://adiati.com/100daysofoss-recap-day-15-27">#100DaysOfOSS Recap: Day 15-27</a>.</p>
</li>
<li><p>I wrote and published an article for beginners in open source: <a target="_blank" href="https://adiati.com/open-source-and-git-glossary">Open Source and Git Glossary</a>.</p>
</li>
</ul>
<h3 id="heading-supports-and-collaboration"><strong>Supports and Collaboration</strong></h3>
<p>Do you know that September is Preptember? It's the time for contributors and maintainers to get ready for <a target="_blank" href="https://hacktoberfest.com/">Hacktoberfest</a>!</p>
<p>In Virtual Coffee, we annually hold Preptember as our <a target="_blank" href="https://virtualcoffee.io/monthlychallenges/sept-2023">monthly challenge</a> in September. As part of the monthly challenge team, I spent most of my time collaborating with the team to prepare the challenge for our members to get ready for the Hacktoberfest.</p>
<p>I'm excited that this year, we decided to have a repository for our members who are beginners in open source to practice open source. We also use this repo for contributors and maintainers members to list the repositories we can review and recommend for Hacktoberfest.</p>
<p>I was thrilled when this project received the green light from our core team — even though we only had a very short time to work on all things Preptember after we got the approval!</p>
<ul>
<li><p>I had many sync and async discussions with the monthly challenges team to prepare for the Preptember challenge.</p>
</li>
<li><p>I researched how to prepare an open-source project and created a private repo to propose the additional new format of the challenge to our core team.</p>
</li>
<li><p>After getting approval, I made a Preptember repository for Virtual Coffee members to practice open source and list VC-verified repositories.</p>
</li>
<li><p>I posted an announcement for our members in Slack about the new repo for the Preptember challenge.</p>
</li>
</ul>
<h3 id="heading-contributions"><strong>Contributions</strong></h3>
<p><a target="_blank" href="https://github.com/Virtual-Coffee"><strong>Virtual Coffee</strong></a></p>
<ul>
<li><p>I created an <a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/issues/969">issue</a> to fix broken links in our monthly challenges pages on the website.</p>
</li>
<li><p>I prioritized and created a <a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/973">pull request</a> to fix the September and October pages so we can reuse them.</p>
</li>
<li><p>I created a <a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/978">pull request</a> to change the current challenge and update the content of the Preptember challenge on the website.</p>
</li>
<li><p>I created an <a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/issues/979">issue</a> and a <a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/980">pull request</a> to add the September newsletter to the website.</p>
</li>
</ul>
<p><a target="_blank" href="https://github.com/open-sauced"><strong>OpenSauced</strong></a></p>
<p>When I attended the "Intro to OSS" workshop, I saw things to improve in the documentation to create a smoother contributing experience for beginners.</p>
<ul>
<li><p>I created an <a target="_blank" href="https://github.com/open-sauced/guestbook/issues/81">issue</a> to improve the documentation (README) in the guestbook repository.</p>
</li>
<li><p>I created a <a target="_blank" href="https://github.com/open-sauced/guestbook/pull/82">pull request</a> for the docs improvement. I got some feedback and am still working on this.</p>
</li>
<li><p>I assigned myself to an <a target="_blank" href="https://github.com/open-sauced/app/issues/56">issue</a> for implementing dark mode at the OpenSauced app repository. I plan to work on this collaboratively with <a target="_blank" href="https://twitter.com/DominicDuffin1">Dominic Duffin</a>.</p>
</li>
</ul>
<h3 id="heading-challenges"><strong>Challenges</strong></h3>
<ul>
<li><p>We were behind in rolling the Preptember. I had one sleepless night, but it paid off with great teamwork!</p>
</li>
<li><p>We are using <code>pnpm</code> at Virtual Coffee. Whenever I run it, it takes me a while to render the localhost, and it sometimes shuts down by itself whenever I fix multiple things. Well, it's a Windows thing. 😅 It's kind of frustrating at times. So whenever I don't have enough time to check my work locally like these times, I make and push my changes blindly. Then, I create a draft PR and let Netlify do its thing. I'll fix and make adjustments when necessary.😆</p>
</li>
</ul>
<h3 id="heading-wins-and-gratitudes"><strong>Wins and Gratitudes</strong></h3>
<ul>
<li><p>I took three days off on a weekend from #100DaysOfOSS — even from my computer! — to enjoy time with my family. 🥰</p>
</li>
<li><p>I attended my <strong><em>first-ever workshop</em></strong>!</p>
</li>
<li><p>My pull requests for Virtual Coffee got merged:</p>
<ul>
<li><p><a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/965">Updated some content in the resources on the website</a>.</p>
</li>
<li><p><a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/973">Fixed broken links and wordings in the website's September and October challenge pages</a>.</p>
</li>
<li><p><a target="_blank" href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/978">Changed the current challenge and updated the September challenge page on the website</a>.</p>
</li>
</ul>
</li>
</ul>
<h2 id="heading-final-words"><strong>Final Words</strong></h2>
<p>If you just heard about the #100DaysOfOSS challenge and want to participate, there is still time. You can start now and join us 🙌!</p>
<p>And if you're doing #100DaysOfOSS, how was your experience? Do share it with us in the comment below 😄!</p>
<hr />
<p>🖼️ Credit cover image: <a target="_blank" href="http://undraw.co/"><strong>unDraw</strong></a></p>
<p>Thank you for reading! Last, you can find me on <a target="_blank" href="https://twitter.com/@AdiatiAyu"><strong>Twitter</strong></a>, <a target="_blank" href="https://hachyderm.io/@AdiatiAyu"><strong>Mastodon</strong></a><strong>,</strong> and <a target="_blank" href="https://bsky.app/profile/adiati.ayu.bsky.social"><strong>BlueSky</strong></a>. Let's connect! 😊</p>
]]></content:encoded></item><item><title><![CDATA[Open Source and Git Glossary]]></title><description><![CDATA[Hi friends 👋,
At the beginning of my open-source journey, I got confused with many terms used around Git and open source.
"It is an OSS project." "In which repo can I see your project on GitHub?" "Have you created an issue and the PR?" "Have you rea...]]></description><link>https://adiati.com/open-source-and-git-glossary</link><guid isPermaLink="true">https://adiati.com/open-source-and-git-glossary</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[#codenewbies]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ayu Adiati]]></dc:creator><pubDate>Wed, 30 Aug 2023 19:36:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1693419770492/d4cdf0ce-e8eb-4bbe-938a-cc23dfe16dd0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi friends 👋,</p>
<p>At the beginning of my open-source journey, I got confused with many terms used around Git and open source.</p>
<p>"It is an <em>OSS</em> project." "In which <em>repo</em> can I see your project on <em>GitHub</em>?" "Have you created an <em>issue</em> and the <em>PR</em>?" "Have you read the <em>README?"</em> "You want to create a <em>branch</em> and not work your changes on the <em>main branch</em>." "<em>LGTM</em>!"</p>
<p><img src="https://media.giphy.com/media/Wop4mGwKVGbq01jfKF/giphy.gif" alt="confused GIF" /></p>
<p>Let alone start contributing; the terms are already intimidating enough for me. Learning from my experience, don't let these terms scare you off if you're new to open source. In this article, I will share some terms in open source and Git — in alphabetical order — that you will often hear when you dip your toes into the open source.</p>
<h2 id="heading-open-source-glossary">Open Source Glossary</h2>
<h3 id="heading-contributingmd"><code>CONTRIBUTING.md</code></h3>
<p>An open-source repository usually will have a file written in <a target="_blank" href="https://www.markdownguide.org/">Markdown</a> (<code>.md</code>) called <code>CONTRIBUTING.md</code> — some others called this file <code>CONTRIBUTION.md</code> or anything similar. This file is the contribution guide that contains everything you should know when you want to contribute to a project. You must first read this if you wish to contribute to a project. The contributing guide can be included in the README if you don't find this file.</p>
<h3 id="heading-contributor">Contributor</h3>
<p>A contributor is a person who contributes to a repository by giving ideas and suggestions, reporting bugs, making changes to the code base or other resources in an open-source repository, and any other action that helps with the project enhancement and maintenance.</p>
<h3 id="heading-documentation-docs">Documentation (Docs)</h3>
<p>When you hear the word "docs", it refers to documentation. It's a guide that serves as an onboarding medium for new contributors and users in an open-source community. It's the place where you can learn more about how to contribute to the repository and information about how you can get started with their project, such as the installation process, the code syntax and examples, and many more.</p>
<h3 id="heading-fork">Fork</h3>
<p>Fork is creating a copy of a repository in your GitHub account. This copy is your remote repository.</p>
<h3 id="heading-github">GitHub</h3>
<p><a target="_blank" href="https://github.com/">GitHub</a> is a cloud-based service and platform for hosting, sharing, and collaborating on Git repositories. Other similar well-known platforms are <a target="_blank" href="https://about.gitlab.com/">GitLab</a> and <a target="_blank" href="https://bitbucket.org/">Bitbucket</a>.</p>
<h3 id="heading-issues">Issues</h3>
<p>Issues are a project's development trackkeeper. An issue can contain a bug found, a feature request, a documentation fix suggestion, etc.</p>
<h3 id="heading-labels">Labels</h3>
<p>Labels are tags that inform the type or status of issues and pull requests — for example, <code>bug</code>, <code>feature</code>, <code>documentation</code>, <code>triage</code>, <code>help-wanted</code>, <code>good-first-issue</code>, etc.</p>
<h3 id="heading-lgtm">LGTM</h3>
<p>Maybe you've seen a maintainer mention "LGTM" in a comment of a pull request after a review. Some say it's the abbreviation of "Looks Good To Me", and others say it stands for "Let's Get This Merge". But whenever you see this term, your pull request has passed the maintainers' review and is ready to merge.</p>
<p><img src="https://media.giphy.com/media/cFkiFMDg3iFoI/giphy.gif" alt="git merge GIF" /></p>
<h3 id="heading-maintainer">Maintainer</h3>
<p>A maintainer is a person who maintains an open-source repository. They usually review issues and pull requests, assign contributors to issues, make updates to the project by merging pull requests, etc.</p>
<h3 id="heading-open-source-software-oss">Open Source Software (OSS)</h3>
<p>Open Source Software (OSS) is software where the source code is freely available and accessible to the public and distributed under a copyright license. Anyone may reuse, modify, and redistribute the software where the limit depends on the license used for the software. Because of its transparent and open nature, open source encourages open collaboration among contributors.</p>
<h3 id="heading-pull-request-pr">Pull Request (PR)</h3>
<p>A Pull Request, commonly called a PR, is a notification about changes pushed to a branch in a remote repository and ready for the merging process.</p>
<h3 id="heading-readme">README</h3>
<p>A README is the face of the project. It is a Markdown file (<code>README.md</code>) that contains everything essential about the project. In this file, you will usually find the project description, how to install them, the license, the Code of Conduct, the contribution guide, etc.</p>
<h3 id="heading-repository-repo">Repository (repo)</h3>
<p>A repository — commonly called a repo — is a storage to keep the open source project's code files and resources.</p>
<h2 id="heading-git-glossary">Git Glossary</h2>
<h3 id="heading-branch">Branch</h3>
<p>A branch is an isolated environment for contributors to work on changes such as fixing bugs, developing a feature, etc. This branch is usually known as a "working branch" or any other name besides "default branch".</p>
<p>A default branch is the branch that people see when they visit a repository on GitHub. All changes in other branches are merged here. By convention, this branch is called a <code>main</code> (previously <code>master</code>) branch.</p>
<h3 id="heading-clone">Clone</h3>
<p>Clone is creating a copy of a repository in your local environment.</p>
<h3 id="heading-commit">Commit</h3>
<p>Whenever we finish with our changes, we must <em>commit</em> them. It means that we must record our changes. That is also why a commit always includes a message as the record. The message makes it easier for us and others to see what changes have been made.</p>
<h3 id="heading-git">Git</h3>
<p>Git is an open-source <a target="_blank" href="https://en.wikipedia.org/wiki/Distributed_version_control">Distributed Version Control System (DVCS)</a> that tracks all changes we make to a program. We can see the history of the changes through commits and revert them to the previous version if necessary.</p>
<h3 id="heading-merge">Merge</h3>
<p>Merge is an act to merge changes from a branch into the <code>main</code> branch.</p>
<h3 id="heading-origin">Origin</h3>
<p>When you create or fork a repository and have it as your remote repository on your GitHub account, by convention, it is called the origin repository. It is an alias of your remote repository.</p>
<h3 id="heading-pull">Pull</h3>
<p>Pull is an act to get new changes from the remote to the local repository.</p>
<h3 id="heading-push">Push</h3>
<p>Push is an act to move changes from the local to the remote repository.</p>
<h3 id="heading-upstream">Upstream</h3>
<p>Say you fork a repository. By convention, the original repository you forked is called the upstream repository. Upstream is an alias of the original repository.</p>
<h2 id="heading-final-words">Final Words</h2>
<p>I hope this article helps you get less confused when you hear these terms. If you want to share more terms in open source and Git, feel free to drop them in the comment below, and let's learn together 😄!</p>
<hr />
<p>🖼️ Credit cover image: <a target="_blank" href="http://undraw.co/"><strong>unDraw</strong></a></p>
<p>Thank you for reading! Last, you can find me on <a target="_blank" href="https://twitter.com/@AdiatiAyu"><strong>Twitter</strong></a>, <a target="_blank" href="https://hachyderm.io/@AdiatiAyu"><strong>Mastodon</strong></a><strong>,</strong> and <a target="_blank" href="https://bsky.app/profile/adiati.ayu.bsky.social"><strong>BlueSky</strong></a>. Let's connect! 😊</p>
]]></content:encoded></item></channel></rss>