diff --git a/blog/2023/2023-04-17-writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success.md b/blog/2023/2023-04-17-writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success.md new file mode 100644 index 00000000..4de62714 --- /dev/null +++ b/blog/2023/2023-04-17-writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success.md @@ -0,0 +1,65 @@ +--- +title: "Writing Your First Pull Request: Tips, Best Practices, and AI-Powered Tools for Success" +tags: [] +authors: BekahHW +slug: writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success +description: "If you're new to contributing to open-source projects, submitting your first pull request can be intimidating. But don't worry, we've got you covered! Check out these tips for successfully submitting your first pull request and making a great first impression as a contributor. " +image: https://media.dev.to/cdn-cgi/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4xtz1foaoswl7f55hzgk.png +--- + +I don’t remember writing my first Pull Request (PR), and to be honest, I actually looked to see if I could find it for this post, but I know that I was really nervous because I wasn’t sure if I was doing it “right.” I think I actually spent more time worrying about it than I did actually writing the thing. The good news is that there isn’t really a right way to write a PR, but there are some best practices that can guide your writing and help the maintainer to be able to understand the changes. + + + +## Review the Contribution Guidelines +Maintainers want to help you write your PR; that’s why they often outline contributing directions in their repositories. + +![Jerry McGuire “Help me, help you gif”](https://media.giphy.com/media/uRb2p09vY8lEs/giphy.gif) + +This file—often called CONTRIBUTING.md—gives guidelines for submitting your PR, including information like whether or not you need to write tests, the communication process, coding style, and how to submit your pull request. Check out [OpenSauced’s Contributing Guide](https://docs.opensauced.pizza/contributing/introduction-to-contributing/), as an example. + +## Tips for Your First PR +Although every repository may have unique guidelines, there are general guidelines for all PRs. Here are some tips to keep in mind: + +### Create a Clear Title +The title should give an indication of the issue, the changes made, and the type of PR–is this a bug fix, content or documentation change, new feature, or something else? + +![OpenSauced title examples](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yv10emgx8a7grxyovbew.png) + OpenSauced’s CONTRIBUTING guidelines for titles + + +### Give a Detailed Description +PRs often include a summary of the changes, as well as any relevant context or background information that might be helpful in understanding the proposed changes. + +### Provide context +A well-written description will help the maintainer understand the purpose of the PR, the changes you’ve made, and why the changes were made. Here are some of the reasons the description is key to the success of the PR: + +1. Facilitates collaboration. More details allow team members to share their feedback, identify potential issues, and ask questions. With open and transparent communication, a sense of community and trust among team members develops, leading to better collaboration. + +2. Saves time. With a detailed description, the reviewer is more likely to quickly understand the changes made and avoid spending unnecessary time deciphering code. As a result, the developer will receive quicker feedback and avoid unnecessary rework. + +3. Helps with future reference. A well-documented PR provides a historical record of the changes made. This helps future team members to understand the evolution of the code and the decisions made along the way. It also helps with future maintenance and debugging. + +![OpenSauced's Examples for communication style](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc4v1pihnggpq0asu671.png) + OpenSauced’s [CONTRIBUTING guidelines for communication style](https://docs.opensauced.pizza/contributing/introduction-to-contributing/) + +### Link the issue +If the PR is related to an issue, you can link that issue and automatically close the issue when the PR is merged. One way to do this is to use this syntax: `closes #issue-number` for example, `closes #11`. + +### Acknowledge Requirements +If there are requirements for new code to be merged in, like writing tests or documentation, you should also include that information in the PR. Other steps might include running current tests before submitting, agreeing to the Code of Conduct, and checking to make sure there’s not an open issue or another PR addressing the same problem you’ve fixed. + +### Add a Gif! +If you want to know why, check out my last post, [How to Create a Good Pull Request Template (and Why You Should Add Gifs)](https://dev.to/opensauced/how-to-create-a-good-pull-request-template-and-why-you-should-add-gifs-4i0l) + +## Bonus Level: Power Up Your PRs with AI + +If you want to take your PRs to the next level, sign up for [GitHub’s Copilot for Pull Requests](https://githubnext.com/projects/copilot-for-pull-requests) waitlist! Copilot for PRs can give a summary of the changes, a detailed list with code references, or even create a poem 🤯 + +## Community Shoutout +For a great example from one of our community members, @nickytonline, check out [this PR](https://insights.opensauced.pizza/feed/99). + +![gif of Nick Taylor’s PR](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i19g7u3uwqzjf3exvbal.gif) + +If you’re looking for an open source project to submit your first PR to, find a project that’s well documented, aligns with your interests and skills, and is accepting PRs from new contributors. Check out [OpenSauced’s Hot Repositories](https://hot.opensauced.pizza/) or [Insights](https://insights.opensauced.pizza) to find popular repositories and explore based on your favorite topics. And if you want to see your PR mentioned by OpenSauced, be sure to add it to your [highlights](https://insights.opensauced.pizza/feed)! + diff --git a/blog/2023/2023-04-20-how-vercel-is-using-github-discussions-to-build-a-strong-nextjs-community.md b/blog/2023/2023-04-20-how-vercel-is-using-github-discussions-to-build-a-strong-nextjs-community.md new file mode 100644 index 00000000..a823ad14 --- /dev/null +++ b/blog/2023/2023-04-20-how-vercel-is-using-github-discussions-to-build-a-strong-nextjs-community.md @@ -0,0 +1,39 @@ +--- +title: How Vercel is Using GitHub Discussions to Build a Strong Next.js Community +tags: [] +authors: BekahHW +slug: how-vercel-is-using-github-discussions-to-build-a-strong-nextjs-community +description: "Learn how Next.js, a flexible React framework, is leveraging GitHub discussions to strengthen its community, promote job opportunities, and showcase companies using Next.js." +--- + +Communication is key to maintaining a healthy open source project. It’s even more important if one of your projects has more than 100,000 stars. Using a tool like GitHub discussions provides an opportunity for communication for more than bug reports, show and tell, or product announcements. It can provide a path to support and connect the community, and that’s exactly how Vercel is using discussions on their [Next.js repository](https://github.com/vercel/next.js/discussions). + + + +## What is Next.js? +> Next.js is a flexible React framework that gives you building blocks to create fast web applications. + +Vercel, the company behind Next.js, provides a platform for deploying and hosting Next.js applications, as well as a range of other tools and services for building and scaling web applications. + +## How does Next.js use their discussions? +At first glance, the list of discussion features for Next.js looks pretty ordinary, well except maybe the squirrel with the hat as the icon for the Show and Tell section. Next.js takes it a step further and leverages GitHub discussions to provide its community with a space for participation and interaction. The project prioritizes community building by pinning important discussions at the top of the page: Companies/Sites using Next.js, Who’s hiring (April 2023), Who wants to be hired (April 2023). + +### Companies/Sites using Next.js +This discussion lists companies that are using Next.js, allows folks to respond to the post with their site that’s built with Next.js, and also links to their [showcase](https://nextjs.org/showcase) as well. So if you have a Next.js site, and you’re not already showing it off, add it to [this discussion](https://github.com/vercel/next.js/discussions/10640)! + +### Who’s hiring +This monthly post provides a space for companies to advertise job openings for individuals with Next.js experience, and for job seekers to find opportunities. I checked out their posts all the way back to November 2021, and loved seeing how many included this line: “At least one company has hired someone as a result of it!” + +[https://twitter.com/nutlope/status/1610667757565083648?s=20](https://twitter.com/nutlope/status/1610667757565083648?s=20) + + +### Who wants to be hired + +This pinned post is for job seekers with Next.js experience to showcase their skills and experience. Companies looking to hire can browse the post for potential candidates. This gives a nice glimpse into the Next.js community and provides support for job seekers and does my favorite thing: offers to send swag to anyone who was hired through the post. + +![Screenshot of Who wants to be hired (April 2023) post](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ug608pczuotc58ag8i6f.png) + +It’s great to see Next.js building a strong and supportive community through discussions. If you’re a Next.js developer looking for work and you have contributions you’d like to highlight, you can add them to your [OpenSauced highlights](https://insights.opensauced.pizza/feed) and link them to your post. + + +header image created using [midjourney](https://www.midjourney.com/app/jobs/53c570b9-3cc2-48c5-9fe0-8d855cfbeb34/). diff --git a/blog/2023/2023-04-24-managing-community-health-files-and-templates-with-a-github-repository.md b/blog/2023/2023-04-24-managing-community-health-files-and-templates-with-a-github-repository.md new file mode 100644 index 00000000..df556d27 --- /dev/null +++ b/blog/2023/2023-04-24-managing-community-health-files-and-templates-with-a-github-repository.md @@ -0,0 +1,37 @@ +--- +title: Managing Community Health Files and Templates with a .github Repository +tags: [github] +authors: BekahHW +slug: managing-community-health-files-and-templates-with-a-github-repository +description: "I collect open source projects like some people collect discord servers. To be accurate, I have 525." +--- + +I collect open source projects like some people collect discord servers. To be accurate, I have 525 repositories. Now, before you yell at me, many of those are from my bootcamp lessons when I was learning to code. But I’ve been known to start and stop projects more than once. What I _have_ learned through that experience is the importance of consistency. If you’re in an organization that has multiple repositories, you might find yourself adding the same files over and over–files like the CODE_OF_CONDUCT.md, Pull Request (PR) and Issue templates, and CONTRIBUTING.md. As developers, adding these files repeatedly starts to feel like we’re violating [DRY code principles](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself). Fortunately, the .github repository can help solve this problem. + + + +## What is a `.github` Repo? +A `.github` repository is a special type of repository in GitHub that allows maintainers to store community health files and templates for their projects. + +> Community Health files promote the well-being of the community and focus on communication, documentation, supporting members through a code of conduct, and community recognition. + +The `.github` repository–found at `https://github.com//.github`- can house the community health files for your organization as the default files. According to [GitHub](https://github.blog/changelog/2019-02-21-organization-wide-community-health-files/), “While the file itself won’t appear in the file browser or Git history for each repository, it will be surfaced throughout developers’ workflows, such as when opening a new issue or when viewing the Community Profile, just as if it were committed to the repository directly.” + + +![Screenshot of the open-sauced/.github repo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i41566ytubxwkz60kjh7.png) + +Using a `.github` repository, allows maintainers to efficiently manage the files and templates that are important for their project's workflow and community and ensure consistency throughout the organization's repositories. So what do you add to the `.github` repository? One example is a Pull Request Template since they’re often standard across repos. + +## How to Add a PR Template + +Adding a PR template to your `.github`repository is straightforward. First, navigate to the repository in question and click on the "Create new file" button. Next, in the file name field, type `.github/PULL_REQUEST_TEMPLATE.md`. + +In the main text field, you can add the content of your PR template. This can include prompts for information such as the purpose of the PR, the changes made, any potential issues or concerns, and any additional context or resources that may be helpful–check out ours [here](https://github.com/open-sauced/.github/blob/main/.github/PULL_REQUEST_TEMPLATE.md). You can also use markdown to format the template, making it more readable and easier to understand. + +Once you have added your PR template, click the "Commit new file" button to save it to your repository. Now, every time a contributor opens a new PR, they will be prompted to use the template you created. + +## Considerations for Maintainers + +When creating a PR template, keep in mind that the template is easy to read and understand. Remember, the template is supposed to make things easier for you and the contributors. What information do you need to be able to review the PR more efficiently? What information can guide a new contributor through writing a PR for the first time? + +Finally, the beauty of using one template for all your repositories is that if you decide to update it, you only need to do that in one location. As your project evolves and new requirements emerge, you may find that the template needs to be revised or you might feedback from contributors and other maintainers, and make changes as needed to ensure that the PR template remains effective and useful. If you're interested in more content on PRs, check out [Writing Your First Pull Request: Tips, Best Practices, and AI-Powered Tools for Success](https://dev.to/opensauced/writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success-3bg9) and [How to Create a Good Pull Request Template (and Why You Should Add Gifs)](https://dev.to/opensauced/how-to-create-a-good-pull-request-template-and-why-you-should-add-gifs-4i0l). \ No newline at end of file diff --git a/blog/2023/2023-04-26-what-is-bluesky-social-network-and-why-are-developers-excited-about-it.md b/blog/2023/2023-04-26-what-is-bluesky-social-network-and-why-are-developers-excited-about-it.md new file mode 100644 index 00000000..5a364d88 --- /dev/null +++ b/blog/2023/2023-04-26-what-is-bluesky-social-network-and-why-are-developers-excited-about-it.md @@ -0,0 +1,56 @@ +--- +title: What is Bluesky Social Network? And why are developers excited about it? +tags: [] +authors: BekahHW +slug: what-is-bluesky-social-network-and-why-are-developers-excited-about-it +description: "It seems like my Twitter feed is all about folks joining or asking about invites to Bluesky. Here's what I learned about it." +--- + +It seems like my Twitter feed is all about folks joining or asking about invites to [Bluesky](https://blueskyweb.xyz/). I was lucky enough to get an invite this week to be able to check it out, and the user experience is a lot like Twitter, but what’s going on behind the scenes is really interesting. + + + +## What is Bluesky Social Network +Bluesky Social is a decentralized social media platform with a mission to create an open social media ecosystem where developers can build and innovate, and users have more control over which services they use. Unlike Twitter, Bluesky isn't committed to any stack in its entirety and sees use cases for blockchains, but it's not a blockchain. + +> “The biggest and long term goal is to build a durable and open protocol for public conversation. That it not be owned by any one organization but contributed by as many as possible. And that it is born and evolved on the internet with the same principles.” - Jack Dorsey + +Bluesky is build upon the AT Protocol, also known as Authenticated Transfer Protocol– a new technology that allows people to transfer digital assets and data between different blockchain networks. Think of a blockchain as a kind of digital ledger that records all the transactions that happen on it. However, each blockchain is like its own separate island with its own ledger, and it can be hard to move things between these islands. + +The AT Protocol solves this problem by creating a way for people to securely move things between these different blockchain networks without needing to go through middlemen or other companies that might slow things down or charge extra fees. Instead, the AT Protocol uses special tools to check that everything being transferred is authentic and that it has not been tampered with. + +Here’s another way to think about what AT Protocol means: Let's say you live in the United States and you want to send $100 to your friend who lives in Europe. You have a bank account with Bank A in the US, while your friend has a bank account with Bank B in Europe. Normally, you would need to go through an intermediary, such as a wire transfer service, to transfer the money between the two banks. This process can be slow and costly, as the intermediary may charge fees and the exchange rate may not be favorable. + +However, with the AT Protocol, you could transfer the $100 directly from your bank account to your friend's bank account, without needing to go through an intermediary. + +## Benefits of Bluesky +There’s a lot of buzz around some of the differences between Twitter and Bluesky. There are several benefits of using Bluesky over traditional social media platforms: +- *User control and privacy*: With a decentralized architecture, users have more control over their own data and can choose to interact with others without relying on a single centralized platform. This approach may also offer better user privacy since user data is distributed across multiple servers and not owned or managed by a single company. + +- *Innovation and competition*: By creating an open standard for social media, developers have more opportunities to build new apps and services that can interoperate with existing ones. This could encourage innovation and competition in the social media space, leading to better products and services for users. + +- *Reduced risk of censorship*: A decentralized architecture could potentially reduce the risk of censorship since there is no single entity or central point of control. If one server or node is taken down or censored, users can still connect with each other through other servers or nodes. + + +## What are Devs Building? +There’s already a variety of open source projects being built for Bluesky, including bots, tools, and applications. Here are a few examples: + +- RSS feeds. If you’re not on Bluesky yet, but you know the handle of someone who is and you want to know what they’re talking about, there’s a way to do that. Or if you’re on Bluesky and you want to share your content outside of the platform, you can share your content through an RSS reader. You can check out [Bluestream](https://github.com/kawarimidoll/bluestream), a TypeScript + Deno project live [here](https://bluestream.deno.dev/). + +- Liked Posts: Want to see what others like? You can find that all in one place thanks to [Bluesky Liked Posts](https://github.com/handlerug/bluesky-liked-posts), a TypeScript project that allows you to add a username to an input, which then displays all the liked posts in a feed. You can see it in action [here](https://handlerug.github.io/bluesky-liked-posts/). + +![gif of my Bluesky feed](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlha68eh6zr3bmek10ya.gif) + +- Polling: Sometimes it’s nice to be able to poll your followers. [Poll.blue](https://poll.blue/) provides that feature and prevents duplicate votes by allowing one vote per IP address. Check out this [TypeScript + Deno project](https://github.com/epistemichorse/poll.blue). + + +![Screenshot of my poll](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylbrcdir97k9prq8coof.png) + + +- Chrome Extension: Want to post to Bluesky without leaving your browser tab? There’s a chrome extension for that! [OmniATP](https://chrome.google.com/webstore/detail/omniatp/ngfefjjphfmafhmhbpjccedmkbbcmngf) makes it a quicker experience and ensures that you don’t get sucked into the timeline of all your favorite followers. And since it’s an open source project, you can check out [the repo](https://github.com/yshrsmz/omniatp) and contribute to this Vue + TypeScript project. +- And just to spread some positivity to the timeline, there’s the [Hugfairy](https://bsky-hugfairy.vercel.app/) bot that will send hugs to anyone on the platform. + + +![Hugfairy image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asok1sxtd0kpccqa5lfa.png) + +If you’re interested in contributing directly to Bluesky, check out their [atproto repo](https://github.com/bluesky-social/atproto). If you want to get started with the Bluesky api, check out [Alice’s starter kit](https://github.com/aliceisjustplaying/atproto-starter-kit/tree/2d499880d3db508627aea089697e436063b58e55) template. And if you’re building with it, submitting PRs, or writing code, amplify your code by [highlighting it on OpenSauced](https://insights.opensauced.pizza/feed) so others can see it! What would you like to see next from Bluesky? Let us know in the comments below, and maybe you’ll see it on our highlights soon. \ No newline at end of file diff --git a/blog/2023/2023-05-01-beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed.md b/blog/2023/2023-05-01-beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed.md new file mode 100644 index 00000000..fa3a4f59 --- /dev/null +++ b/blog/2023/2023-05-01-beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed.md @@ -0,0 +1,53 @@ +--- +title: "Beyond Content Creation: How Open Source Contributions Can Help You Get Noticed" +tags: [] +authors: BekahHW +slug: beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed +description: "Looking to get noticed as a developer but don't have the time or resources to create content regularly? This blog post explains how open source contributions can help you build credibility, get noticed, and even land your dream job. Learn practical tips for contributing to open source projects, building a strong resume, and growing your network in the tech industry." +--- + +I know, I know. It’s kind of ironic to create content about not needing to create content to get noticed. In recent years, there’s been a big push to have new developers create content to “get noticed.” But here’s the thing, creating content might feel daunting and discouraging for those who don't have the time or resources to create content regularly or it might take away from making progress in deepening your coding skills. The good news is that there are other ways to get noticed without relying solely on content creation, and in today’s post we’re going to talk about using open source to get noticed. + + + +## How to Get Noticed +What if instead of spending hours a week creating content, you spent that time working on contributing to open source? It doesn't have to be an issue that majorly impacts a code base. Start where you’re comfortable; get an understanding of open source, working with other teams, communicating, looking at larger code bases, and understanding how code works. + +### Benefits of Contributing to Open Source +- Visibility. At the very least, you're going to be noticed by the people who are on that team and you’ll be building in public. There will be a public record of how you communicate with others, approach the issue, and of how you contributed. +- Mentorship. During that process, you might find that you’re able to receive mentorship from the maintainers as you work through the issue. There are also many communities out there that provide support for new contributors. +- Experience. You’ll grow as you work through the issue, likely receive feedback that you’ll need to implement before your PR is merged in, and you’ll demonstrate your ability to communicate with a team. + +People will remember the way you communicate your code and how you communicate with the team. In some instances, these interactions have led to people being shortlisted as potential hires or even being invited to interview. + +I once worked with a woman who told me that she really wanted to work for a particular company that had a really rigorous interview process that she knew she couldn’t pass. Instead, she put her time into making contributions to their codebase, betting that if she could prove herself that they’d let her bypass the interview process. That bet paid off. And she's not the only one it's paid off for. + +![Tweet from @Dayhaysoos: My last job and current reached out to me because of my open source work 🫡 ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ac94kk13g82ruxz94bqp.png) + +## Build a Strong Resume +According to Indeed.com, hiring managers look at resumes for 6-7 seconds on average. How does your resume compare to other candidates who have pursued similar learning experiences? Do you all have the same bootcamp projects? Have you all listed the same classes? Something that you can include on your resume that no one else can is your open source experience. + +People often ask, “How do I get experience as a software engineer if no one will hire me?” That’s a valid and frustrating question. Open source contributions are one way to get experience. I recently talked to a hiring manager who said, because of the competition for early career roles, the best way to get a job is to become a mid-level developer. There are projects out there that will challenge you to learn and grow as part of the process. It _is_ doable to hit that next career level through contributing. + +![Tweet from @patak_dev: 👋 @stackblitz hired me because of my OS contributions to Vite, to ensure I could continue to help maintain the project long term](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgo7h994nfdiekljvf8f.png) + +## Build Your Network +There are more developers who are off social media than are on social media for tech. So if you’re following Tech Twitter, for example, you’re only seeing a small percentage of those people working in tech. By participating in open source, you’ll find a broader community of people in the industry who you can learn from, participate with, and ultimately grow with. It doesn’t have to start with a PR, either. You can answer questions in the discussion, open an issue, or direct people to resources in the community Discord/Slack/forum. + +![Tweet from @sandra_rodgers_: I made an open source contribution a few years ago to a little vue package; the owner worked for a startup. He had his CTO reach out to me through linked in. I interviewed and they wanted to hire me but I decided to stay where I was. Great experience though!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/26t3ze2cwy30ykr6kvh3.png) + +In the global market for tech talent, open source provides credibility and an opportunity to showcase real-world work that you’ve done. + +Now here’s a little choose-your-own adventure to close out this post. If you want to… +- **learn about how to find a good first issue**, I recommend you read [Brian Douglas’](https://dev.to/bdougieyo) [Good First Issues Don’t Exist](https://opensauced.pizza/blog/good-first-issues-dont-exist). +- **find a project that’s looking for contributors**, check out our Friday posts, Who's looking for open source contributors? [Week 38](https://dev.to/opensauced/whos-looking-for-open-source-contributors-week-38-16e9) and [Week 39](https://dev.to/opensauced/whos-looking-for-open-source-contributors-week-39-41jf). +- **talk more about open source**, we’ve got our [Weekly Chat on Discord](https://discord.com/events/714698561081704529/1101536137765474374) on Tuesdays at 12p EDT, and our open mic [Twitter Space](https://twitter.com/i/spaces/1OdJrzpRenpJX?s=20) on May 3, 11am EDT—as well as every Wednesday for the next four weeks. +- **show off the open source contributions you’ve already made**, add them to our [highlight feed](https://insights.opensauced.pizza/feed), and maybe they’ll even be featured in our next newsletter. + +Shoutout to [doaortu](https://insights.opensauced.pizza/user/doaortu/highlights) for [their contribution to the GitHub CLI](https://insights.opensauced.pizza/feed/108)! + +![Screenshot of OpenSauced Highlight with description for the contribution](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ywsqo8a6n9b8l2hjadnj.png) + + + + diff --git a/blog/2023/2023-05-01-the-power-of-pair-programming-benefits-types-and-tips.md b/blog/2023/2023-05-01-the-power-of-pair-programming-benefits-types-and-tips.md new file mode 100644 index 00000000..937433bc --- /dev/null +++ b/blog/2023/2023-05-01-the-power-of-pair-programming-benefits-types-and-tips.md @@ -0,0 +1,46 @@ +--- +title: "The Power of Pair Programming: Benefits, Types, and Tips" +tags: [] +authors: BekahHW +slug: the-power-of-pair-programming-benefits-types-and-tips +description: "Learn about the benefits, types, and tips of pair programming in software development, including increased code quality, collaboration, and learning opportunities. Join the Virtual Coffee challenge this May and improve your pairing skills!" +--- + +Pairing is more than just coding with someone else. Pairing is about communication, teaching, learning, positive reinforcements, and growing. This is why at Virtual Coffee, we’re challenging our members to practice their pairing in the month of May and we’re inviting everyone at Dev to join us too! + +Before you start, we recommend you take a look at [Martin Fowler’s article On Pair Programming](https://martinfowler.com/articles/on-pair-programming.html). + + + +## What is Pair Programming? +Pair programming is a technique used in software development where two or more programmers work together on the same task. The two programmers switch between two roles: the driver, who is actively writing the code, and the navigator, who is observing the driver's work and providing guidance, feedback, and ideas. + +The value of pair programming comes from continuously communicating with each other, discussing the code being written, suggesting improvements, and debugging any issues together. Increased code quality, reduced errors, improved collaboration and communication, and enhanced learning opportunities are some of the benefits of pairing up. + +### Types of Pair Programming +There’s more than one way to pair program, so if you’ve tried one way and didn’t find it helpful, there are other approaches you can take, including: + +- Driver-Navigator Pair Programming: The most common type of pair programming, where one person (the driver) writes the code while the other person (the navigator) reviews the code and provides feedback. +- Ping-Pong Pair Programming: In this type of pair programming, one person writes a test case and the other person writes the code to pass the test. The partners then swap roles and repeat the exercise. +- Mob programming: a collaborative pairing approach where a group of developers work together on a single task. In mob programming, one person usually acts as the driver, writing the code, while the rest of the group act as navigators, providing feedback, suggesting improvements, and discussing ideas. The group continuously collaborates, switching roles frequently and communicating throughout the process. (At Virtual Coffee, we might call this co-working room pairing 😉) +- Chaos programming: Everyone works on a codebase at the same time, using tools like VSCode Live. Not ideal for most work environments, this can be the quickest way to produce code under a time constraint like a hackathon. + +## Ways to get started +If you want to pair, but you're not sure what to pair on, here are some ideas to get you started: + +- **A project that you need some help on.** By pairing with someone else, you can share ideas, troubleshoot issues, and gain a fresh perspective. +- **An open source issue.** Pairing on an open-source issue can be a great way to contribute to the community and improve your coding skills. It can also be an opportunity to work with experienced developers who can offer valuable feedback. +- **A LeetCode problem.** LeetCode is a platform that offers coding challenges to improve your algorithmic problem-solving skills. Pairing on a LeetCode problem is a fun and challenging way to improve your coding skills and work with someone else. + +## Pair Programming Resources +### Live Coding Tools +- [Duckly](https://duckly.com/) +- [Tuple](https://tuple.app/) +- [VSCode liveshare](https://code.visualstudio.com/blogs/2017/11/15/live-share) +- Zoom Screen sharing + +### Live Collaboration/Whiteboarding Tools +- [Excalidraw](https://excalidraw.com/) +- [Miro](https://miro.com/) + +Pair programming is an effective way to improve code quality, foster collaboration, and promote continuous learning. By challenging ourselves to improve our pairing skills this month, we can grow as developers and improve our coding skills. If you'd like to recommend a resource for pair programming, you can add them to [this discussion](https://github.com/Virtual-Coffee/virtualcoffee.io/discussions/516). If you’d like to participate along with us, let us know in the comments below and we’ll tag you in our check-ins! diff --git a/blog/2023/2023-05-03-how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions.md b/blog/2023/2023-05-03-how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions.md new file mode 100644 index 00000000..aefd5a17 --- /dev/null +++ b/blog/2023/2023-05-03-how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions.md @@ -0,0 +1,51 @@ +--- +title: "How to Contribute to Open Source without Knowing How to Code: A guide with project suggestions" +tags: [] +authors: BekahHW +slug: how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions +description: "One of the first pieces of advice I got before graduating from bootcamp was to get involved in open source. This is how to do it without knowing how to code." +--- + +One of the first pieces of advice I got before graduating from bootcamp was to get involved in open source. I browsed around GitHub. I looked at issues. I peeked into code bases. I was overwhelmed. I didn’t quite feel like I had the capabilities to jump in and start working on an issue. Skill-wise, could I? Maybe, depending on the repository. Confidence-wise? No way. I was a career-changer with ten years of expertise in English and zero years of expertise in coding. But, if someone would have told me that I could start where I was most comfortable, without writing code, I think I could have eased my way into the open source waters sooner. Open source projects don’t always require code contributions; in fact, non-code contributions can be as valuable as code contributions. + + +## Non-Code Contributions to Open Source + +### Documentation + +Good documentation helps users understand how to use the software, troubleshoot issues, and contribute to the project. Contributing to documentation is a great way to get involved in open source without needing to know how to code. Sometimes documentation needs to be updated. Other times directions need to be clarified–if you’re struggling to understand something as part of the documentation process, chances are that someone else is too. Sometimes it needs to be written. + +#### Project Highlight: [The Odin Project](https://insights.opensauced.pizza/hot/dashboard/filter/TheOdinProject/theodinproject) +The Odin Project is a free, open-source curriculum for learning web development. It’s designed to be self-directed and project-based, and covers a wide range of topics, including HTML, CSS, JavaScript, and Ruby on Rails. + +One way to contribute to The Odin Project is by helping to improve their documentation. You can contribute to [their curriculum repository](https://github.com/TheOdinProject/curriculum) by suggesting improvements, reporting errors, or adding new documentation. They also have a great [Contributing Guide](https://github.com/TheOdinProject/theodinproject/blob/main/CONTRIBUTING.md) to help onboard new contributors. + +### User Experience (UX) Design & Accessibility + +User experience (UX) design is another valuable non-code contribution. UX designers can help OSS projects improve their user interfaces, making them more intuitive, accessible, and user-friendly. This could involve reviewing the project's design and identifying any accessibility issues, such as color contrast or font size, and suggesting improvements. You could also help create accessible design elements, like icons or buttons for the project. + +#### Project Highlight: [WordPress](https://insights.opensauced.pizza/hot/repositories/filter/WordPress/WordPress) +WordPress is an open source content management system and has a dedicated team of UX designers who work on improving the user experience of the platform. They advertise their vision for getting designers involved in their all-volunteer team and highlight ways to do that on their [Make WordPress Design page](https://make.wordpress.org/design/). + +They also have a [Make WordPress Accessible page](https://make.wordpress.org/accessibility/) that outlines how volunteers can get involved to improve accessibility. + +### Translation + +Because so much of the code we write is for a global user base, many repositories actively seek translations to reach a broader audience and provide a better experience for non-native speakers. + +#### Project Highlight: OpenStreetMap +OpenStreetMap is a collaborative project that aims to create a free and editable map of the world. It’s built by a community of mappers who contribute and maintain data about roads, buildings, landmarks, and other points of interest around the world. Within their documentation on how to contribute, they include a section on [Translate!](https://github.com/openstreetmap/iD/blob/develop/CONTRIBUTING.md#translating) to provide access to more users and provide directions on the translation contributing process. + +### Content +Supporting open source projects is more than code and documentation. There are users who need supported and developers who need to learn more. There’s always a way to create a safer and more stable space for the community. You can do this by sharing projects you enjoy using, writing blog posts that include their product, speaking about their product at meetups and conferences, and providing feedback to the maintainers. + +#### Project Highlight: [Appwrite](https://insights.opensauced.pizza/hot/dashboard/filter/appwrite/appwrite) +Appwrite is a backend platform for developing Web, Mobile, and Flutter applications. Their CONTRIBUTING.md file highlights all of the different [non-code ways that contributors can help to support their project](https://github.com/appwrite/appwrite/blob/master/CONTRIBUTING.md#other-ways-to-help). + +### Community +A strong and welcoming community often leads to a healthy open source project. Community can be one of the most time-consuming parts of maintaining a project. Questions need answered, examples need to be created, clarifying information, and creating clear paths of communication are all important to supporting a community. Often open source projects rely on volunteers to ensure the community is supported and thriving. + +#### Project Spotlight: [Directus](https://insights.opensauced.pizza/hot/dashboard/filter/directus/directus) +Directus is a real-time API and App dashboard for managing SQL database content. Within their contributing doc, Directus shares that one way to contribute is by [Helping Others](https://github.com/directus/directus/blob/main/contributing.md#helping-others). + +You don’t have to know how to code to get involved in open source, and contributing isn’t just for developers. We all use products that use open source software. Finding ways to give back that’s within our skillset benefits the projects, the tech community, and everyone who’s using products that use open source software. This is a short list of projects and examples that accept non-code contributions. If you want to see a longer list, check out [the Twitter thread here](https://twitter.com/BekahHW/status/1653524665283772416). If you want to explore more repositories, check out [OpenSauced Insights](https://insights.opensauced.pizza/). diff --git a/blog/2023/2023-05-08-open-source-terminology-101-a-primer-for-new-contributors.md b/blog/2023/2023-05-08-open-source-terminology-101-a-primer-for-new-contributors.md new file mode 100644 index 00000000..73be2ec8 --- /dev/null +++ b/blog/2023/2023-05-08-open-source-terminology-101-a-primer-for-new-contributors.md @@ -0,0 +1,77 @@ +--- +title: "Open Source Terminology 101: A Primer for New Contributors" +tags: [] +authors: BekahHW +slug: open-source-terminology-101-a-primer-for-new-contributors +description: "One barrier to entry to contributing to open source is understanding the terminology." +--- + +One barrier to entry to contributing to open source is understanding the terminology, especially if you’re new to tech. Below, I've defined some of the common vocabulary and provided some examples to help provide context. + + + +## Repository + +A repository is a central location where code is stored and managed. In open source, repositories are often hosted on platforms like GitHub, GitLab, or Bitbucket. Each repository can contain one or more projects, and contributors can submit changes to the code by making pull requests. + +Example: The [WordPress repository](https://github.com/WordPress/WordPress) contains all the code for the WordPress content management system. + +## Maintainer +A maintainer is a person or a group of people responsible for maintaining a specific open source project. Maintainers are typically responsible for reviewing and accepting or rejecting contributions from other contributors. They also have the authority to make final decisions about the direction and scope of the project. + +Example: [Redwoodjs](https://insights.opensauced.pizza/hot/repositories/filter/redwoodjs/redwood) has a team of maintainers that are listed in the [Core Team section of their README](https://github.com/redwoodjs/redwood#core-team). + +## Core Member +A core member is a contributor who has been granted additional privileges or responsibilities within an open source project. Core members are typically trusted contributors who have demonstrated a deep understanding of the project and have made significant contributions to its development. + +Example: In the [Python](https://github.com/python/cpython) project, core members have commit access to the codebase, which allows them to make changes directly to the main code repository without going through the normal pull request process. + +## Issue + +An issue is a problem or bug that needs to be addressed in the code. Issues can be created by anyone, and they're often used to keep track of bugs, feature requests, and other tasks that need to be done. + +Example: An issue might be created to report a bug in the code, request a new feature, or suggest an improvement. Here’s an example of a [feature request](https://github.com/open-sauced/browser-extensions/issues/58) for OpenSauced’s chrome extension. + +## Contributor + +A contributor is anyone who makes changes, additions, or suggestions to an open source project. Contributors can be developers, designers, writers, testers, or anyone else who helps to make the project better. + +Example: If you submit a pull request, report a bug, or help to answer questions in a project's community forum, you're a contributor! If you want to learn more about types of non-code contribution to an open source project, check out [How to Contribute to Open Source without Knowing How to Code: A guide with project suggestions](https://dev.to/opensauced/how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions-59e5). + +## Fork + +A fork is a copy of a repository. When you fork a repository, you create a new copy of the codebase that you can modify and experiment with without affecting the original codebase. This is a great way to experiment with changes or work on a project without fear of breaking anything. + +Example: You might fork a repository to create a new version of a project that's customized to your needs. + +![fork repo process gif](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/92lh02osb98ihj0tnw9j.gif) + + +## Branch + +A branch is a separate version of the code that's created for development purposes. Branches allow contributors to experiment with changes without affecting the main codebase. When changes are ready to be merged into the main codebase, they're typically submitted as a pull request. + +Example: A contributor might create a branch to experiment with a new feature, fix a bug, or refactor code. + +## Pull Request + +A pull request is a request for changes to be made to a codebase. It's typically submitted by a contributor who has made changes to the code and wants those changes to be reviewed and merged into the main codebase. + +Example: A contributor might submit a pull request to fix a bug in the code, add a new feature, or improve documentation. Check out [Sunday’s PR highlight](https://insights.opensauced.pizza/feed/114) for a specific example. + + +## Merge + +Merging is the process of combining changes from one branch into another. When a pull request is accepted and merged, the changes made in the pull request become part of the main codebase. + +Example: You might see something that looks like this on a Pull Request that’s waiting to be merged. + + +![Merge Pull Request Button](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zreesiyxn9n9vydc4krw.png) + + + +Hopefully, this will help decrease the barrier to entry for folks new to open source. If you have more questions or want help getting started, let us know in the comments below and join us for our [Twitter Space on Wednesday](https://twitter.com/i/spaces/1MnxnpZNrvmGO) with [Josh Goldberg](https://twitter.com/JoshuaKGoldberg) at 11a EDT. + + + diff --git a/blog/2023/2023-05-10-how-to-write-a-good-issue-tips-for-effective-communication-in-open-source.md b/blog/2023/2023-05-10-how-to-write-a-good-issue-tips-for-effective-communication-in-open-source.md new file mode 100644 index 00000000..545c6f2a --- /dev/null +++ b/blog/2023/2023-05-10-how-to-write-a-good-issue-tips-for-effective-communication-in-open-source.md @@ -0,0 +1,81 @@ +--- +title: "How to Write a Good Issue: Tips for Effective Communication in Open Source" +tags: [] +authors: BekahHW +slug: how-to-write-a-good-issue-tips-for-effective-communication-in-open-source +description: "Learn how to write a good issue in open source development with these tips. Follow these guidelines for clear and effective communication to help your fellow contributors address bugs, suggest features, and more. Start contributing to open source with confidence today." +--- + +Three years ago I maintained my first open source project for Hacktoberfest. As a first-time maintainer, I underestimated the time and effort it would take to write good issues for my contributors. What I also learned that year was that writing issues is an important form of communication, and, as a contributor, it can be a valuable skill to develop to create relationships and support maintainers. If you’re trying to get involved in open source, one way to get started is by writing issues that report bugs, request features, or suggest improvements. + + + +## Understanding the Purpose of the Issue +Issues are often a starting point for communication. It’s an opportunity to communicate with maintainers or for maintainers to communicate needs to contributors. There’s usually one main idea per issue with an explanation. For example, a bug report would address one bug. A feature request would outline one feature. + +## Elements of a Good Issue +A good issue should have several key elements that help to clearly and concisely communicate the problem or suggestion. These elements include: + +- Clear and concise title: The title should describe the issue in a way that is easy to understand. +- Detailed description: The description should include a detailed explanation of the issue. It’s important to use clear and concise language, be specific, avoid assumptions, avoid vague or ambiguous language, and be respectful and professional. Lastly, provide additional information as needed to clarify the issue. +- Visuals: Screenshots, gifs, videos, or other visuals can be helpful in illustrating the problem. +- Contextual information: Provide any additional information about the environment or system affected by the issue. +- Proposed solution: If you have an idea for how to address the issue, include it in your issue. + +### Elements of a Good Bug Report +For bug reports, you should generally also include the following information: +- Steps to reproduce the bug +- Your work environment (operating system, etc.) +- The browser you’re using +- Any applicable screenshots, video reproduction, code, or context + +### Elements of a Good Feature Request +For feature requests, you need to help the maintainer understand why the feature is important. You should generally include the following information: +- Type of feature (docs, refactor, style, code feature, etc.) +- The current state of the application and the solution you suggest with your feature +- Any additional context of information, including alternatives you’ve considered + +## Issue templates +Some repositories will use issue templates to help guide you through writing an issue. For example, at OpenSauced, we have templates for bug reports and feature requests (shown below). Templates help to ensure the maintainer gets all the information they need to communicate with contributors. If there are templates, it’s important to use them rather than start with a blank issue. + +![OpenSauced Feature Request template](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u7iwfkdsydr1sy2okr83.png) + +## Example Walkthrough +Sometimes the best way to learn is by looking at examples, so we’re going to walk through this [Remix issue](https://github.com/remix-run/remix/issues/3003) from [Nick Taylor](https://dev.to/nickytonline). + +We’ll go through each element of a good issue and bug report. + +### Clear and concise title +> TypeError: Body is unusable when using Remix(experimental-netlify-edge) Actions + + +### Detailed description & Steps to reproduce the bug +In the issue, Nick covers some key steps: +1. What version of Remix he's using +2. Steps to Reproduce, including a numbered list, code snippets, screenshots, and a link to a Discord discussion with more context. +3. Expected behavior +4. Actual behavior with a screenshot of the error message. + +![Gif scrolling through the issue](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gct099z8l0nyy6q89sy2.gif) + +### Visuals +Within the description of the issue, there's a screenshot of what it looks like when it runs locally and an image of how it would look in Postman. + +### Proposed solution +Although the initial issue doesn't include a proposed solution, Nick explores what's happening and maintains communication in the comments. As part of the investigation, he created a repository to help the maintainers check it out, and shared his approach in [his comment](https://github.com/remix-run/remix/issues/3003#issuecomment-1116552723). + +### Work Environment +Nick shares the version of Remix, the versions of Node he tried, and includes that the Netlify CLI was installed. + +### Conversation +Nick didn’t end the issue with the bug report. If you scroll beyond the issue, you’ll see that he continued the conversation, referencing a conversation in the organization Discord, and his investigation into the bug and solutions. He makes updates as he finds more information, providing code snippets for contextualization, and tags maintainers as part of the conversation as well as others who have contributed. + +![Screenshot of Nick's comment and continued exploration of the issue.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/guxkzzf7da37zlm2qnfw.png) + + +Best of all, he supports the team member who helped with the fix. + +![Screenshot of Nick's comment "Woohoo! Nice work @jacob-ebey! 🔥"](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ltv5yerd5mcf4rasrs4m.png) + + +Writing good issues is an important part of effective communication both in how you construct the issue and how you communicate once the issue has been opened. It’s a great way to demonstrate your communication and investigation skills. And if you’re trying to get into open source, remember, [good first issues don’t exist](https://opensauced.pizza/blog/good-first-issues-dont-exist), unless you make them yourself 😉 diff --git a/blog/2023/2023-05-15-choose-your-own-adventure-in-open-source-paths-to-success.md b/blog/2023/2023-05-15-choose-your-own-adventure-in-open-source-paths-to-success.md new file mode 100644 index 00000000..e4676a78 --- /dev/null +++ b/blog/2023/2023-05-15-choose-your-own-adventure-in-open-source-paths-to-success.md @@ -0,0 +1,69 @@ +--- +title: "Choose Your Own Adventure in Open Source: Paths to Success" +tags: [] +authors: BekahHW +slug: choose-your-own-adventure-in-open-source-paths-to-success +description: "Follow the stories of Alex, Maya, Javier, Tilda, and Jaymir as they navigate different paths in open source to achieve their goals of improving coding skills, working on projects related to their interests, making a significant impact, gaining work experience, and building credibility in the industry." +--- + +Welcome to the Choose Your Own Adventure blog post for new contributors! Each person’s journey into open source will take a different path. As a new contributor, you may have different goals that you want to achieve through contributing to open source projects. This blog post will guide you through a few different paths based on your goals. Choose your path below and start your adventure! + + + +## Choose Your Path +1. [Path 1: Improve Your Coding Skills](#improve-your-coding-skills) +2. [Path 2: Work on a Project Related to Your Interests or Fields of Study](#work-on-a-project-related-to-your-interests-or-fields-of-study) +3. [Path 3: Work on a Project That Has a Significant Impact on the Community](#work-on-a-project-that-has-a-significant-impact-on-the-community) +4. [Path 4: Get Work Experience with the Goal of Landing a Job](#get-work-experience-with-the-goal-of-landing-a-job) +5. [Path 5: To Gain Credibility in the Industry](#to-gain-credibility-in-the-industry) + +## Improve Your Coding Skills +Meet Alex, a college student majoring in computer science who wants to improve their coding skills by contributing to open source projects. Alex has taken programming classes and has some experience coding, but wants to work on real-world projects to gain more experience. Alex starts researching open source projects and finds a project that has "good first issues" labeled on its repository. Alex starts small, fixing a bug in the codebase and submitting a pull request. The pull request is accepted and Alex is thrilled to have contributed to the project. Over time, Alex works on more issues and tasks, building their skills and experience as a developer. + +If your goal is to improve your coding skills, there are many open source projects that are perfect for beginners. Here are a few steps to help you get started: + +Step 1: Choose a project that is beginner-friendly. Look for projects that have clear documentation and guidelines for getting started. + +Step 2: Look for issues or tasks that are labeled as "good first issues" or "beginner-friendly." These issues are designed to help new contributors get started. + +Step 3: Start small and work your way up. Don't be afraid to ask questions or reach out to the community for help. + +## Work on a Project Related to Your Interests or Fields of Study +Meet Maya, a music major who is passionate about technology and wants to work on a project that relates to her field. Maya joins a music technology community and finds an open source project that creates tools for musicians. Maya starts contributing by testing the software and submitting bug reports. Over time, Maya becomes more involved in the community and starts working on new features and improvements for the software. Through her contributions, Maya gains experience as a developer and also gains a deeper understanding of the intersection between music and technology. + +If your goal is to work on a project related to your interests or field of study, there are many open source projects out there that align with different industries or fields. Here are a few steps to help you get started: + +Step 1: Determine your interests or field of study. Look for communities or open source projects that are related to your interests or field. + +Step 2: Explore [GitHub Connections](https://github.com/collections) to see if any projects align with your interests. + +## Work on a Project That Has a Significant Impact on the Community +Meet Javier, a software engineer who wants to use his skills to make a positive impact on the world. Javier joins a community that focuses on environmental issues and finds an open source project that creates tools for monitoring air pollution. Javier starts contributing by working on a new feature that helps users visualize the data more effectively. Through his contributions, Javier learns more about the challenges of environmental monitoring and gains a sense of purpose from his work. + +If your goal is to work on a project that has a significant impact on the community, there are many open source projects that are focused on solving real-world problems. Here are a few steps to help you get started: + +Step 1: Determine the problems or issues that you want to address. They don’t have to be global issues–often small communities need a lot of technological support. + +Step 2: Reach out to your favorite non-profit organizations or your local government to see if they have recommendations or need support. + +## Get Work Experience with the Goal of Landing a Job +Meet Tilda, a self-taught developer who is looking for work as a software engineer. Tilda wants to gain experience and build her resume by contributing to open source projects. At a meetup, she hears about a project that needs support with test writing. She doesn’t have a lot of experience writing tests, but she talks to the speaker after the talk who is supportive and offers to help if she gets stuck. Once she’s written a couple of tests, she feels more comfortable navigating the codebase and successfully squashes her first bug! She also adds her contributions to the project to her resume and is eventually hired by a company that values open source contributions. + +If your goal is to get work experience with the goal of landing a job, contributing to open source projects is a great way to gain experience and build your resume. Here are a few steps to help you get started: + +Step 1: Look for open source projects that are related to your field or industry. Look for projects that are being used by companies you are interested in working for. + +Step 2: Look for issues that help you to build a resume to land a job. For example, if you’re applying for jobs that require you to use React, build your React experience by taking on issues using that technology. + +Step 3: Start contributing and building your portfolio. [Highlight your contributions](https://insights.opensauced.pizza/feed) to open source projects as examples of your work experience and to gain exposure. + +## To Gain Credibility in the Industry +Meet Jaymir, a software engineer a year of experience who wants to gain more credibility in the industry. His job hasn’t challenged him in the ways that he’s hoped and he wants to grow, learn new things, and feel motivated. Jaymir joins a community related to the field of expertise he hopes to move into and finds an open source project that creates tools for performance monitoring. Jaymir starts by using the tool, reading the documentation and issues, and then takes an issue that he knows will challenge him. Over time, Jaymir becomes more involved in the project and starts working on more complex features. Through his contributions, Jaymir gains recognition in the community and is invited to speak at a conference about his work on the project. His contributions to the project also catch the attention of a recruiter who offers him a more advanced job at a software company that’s a better fit. + +If your goal is to gain credibility in the industry, contributing to open source projects is a great way to showcase your skills and expertise. Here are a few steps to help you get started: + +Step 1: Determine how you want to build credibility. + +Step 2: You can use [OpenSauced's Explore feature](https://insights.opensauced.pizza/javascript/dashboard/filter/recent) to look for issues that will challenge you to grow or learn new things. + +Everyone’s journey into open source will look different. Some people will have repeat contributions to the same codebases. Others will collect projects like Pokemon. Others might contribute once and then not make a second contribution to open source for years. What’s important is understanding what you want to get out of the journey and then find ways to do that. And remember, if the path you’ve been on is too rocky or steep, there are other paths out there. There’s a journey for everyone. diff --git a/blog/2023/2023-05-22-what-happens-after-you-submit-a-pr-to-an-open-source-project.md b/blog/2023/2023-05-22-what-happens-after-you-submit-a-pr-to-an-open-source-project.md new file mode 100644 index 00000000..1f598b5a --- /dev/null +++ b/blog/2023/2023-05-22-what-happens-after-you-submit-a-pr-to-an-open-source-project.md @@ -0,0 +1,78 @@ +--- +title: What happens after you submit a PR to an Open Source Project? +tags: [] +authors: BekahHW +slug: what-happens-after-you-submit-a-pr-to-an-open-source-project +description: "Curious about the process after submitting a pull request to an open source project? Discover the step-by-step journey, from review and discussion to maintainer approval and code merge, in this informative blog post." +--- +It can be really exciting to get your first open source Pull Request (PR) merged in. But it’s important to remember that this is a step in the process and it’s perfectly normal to review feedback, make updates, and have questions before it’s merged in. Should you celebrate getting that PR in? Absolutely, but save the big celebration for when it’s merged. + + + +## In the Spotlight: Review and Discussion +Once your pull request is submitted, it undergoes a thorough review process by the maintainers. They examine the code changes, analyze the impact, and provide feedback. This feedback can be in the form of comments, suggestions, or requests for clarification. It's common for discussions and iterations to take place during this stage as you address the feedback and make necessary adjustments. + +## Quality Matters: Continuous Integration (CI) Checks +Many open source projects utilize continuous integration systems, such as Travis CI, CircleCI, or Jenkins. These systems automatically run a series of tests against your code to ensure it meets the project's quality standards. The CI system may check for code style, run unit tests, and perform other validations. You'll receive notifications to fix the issues if the CI checks fail. + +## Approaching the Finish Line: Collaboration with Project Maintainers +Project maintainers play an important role in reviewing and approving pull requests. Your ability to clearly communicate with them impacts if and when your PR will be merged into the code base. Depending on the size of the project, whether not not it's run by volunteers, and the number of maintainers, response times can drastically vary. Be patient and kind. Here are some tips for collaboration: + +### Responding to Maintainer Feedback +When maintainers provide feedback on your pull request, it's important to approach it with an open mind and a willingness to improve. Spend time reviewing the comments and suggestions, seeking clarification if needed. Respond to the feedback in a timely and respectful manner, acknowledging the suggestions and proposing changes accordingly. + +### Meeting Quality Standards +Maintainers have the responsibility of ensuring that the project maintains a high level of quality. To gain their approval, address any code-related issues identified during the review process. Pay attention to code style, adherence to coding guidelines, and best practices specific to the project. Take the necessary steps to refactor and optimize your code, ensuring it aligns with the project's standards. + +### Communicate the Impact of Your Code +Maintainers are interested not only in the technical aspects of your code changes but also in understanding their impact on the project as a whole. Clearly communicate the purpose and benefits of your code modifications. Explain how your changes contribute to the project's objectives, performance improvements, or bug fixes. Provide any relevant performance benchmarks or test results to support your claims. By effectively conveying the significance of your contributions, you help maintainers appreciate the value your code brings to the project. + +### Understand the Maintainers' Perspective +Project maintainers have a deep understanding of the project's architecture, design principles, and long-term goals. Recognize that their feedback and suggestions are rooted in their expertise and the project's best interests. Consider their feedback a type of mentorship and an opportunity to learn and grow from their insights. Showing that you respect and value their expertise, can create a positive collaborative relationship. + +### Establishing a Positive Collaborative Relationship +Building a positive relationship with maintainers is essential for successful collaboration. Actively engage in discussions, ask questions, and seek help when you need it. Be open to receiving constructive criticism and show your commitment to learning and improving. Offer help and contribute beyond your pull request, for example, you might offer to help with issue triaging, documentation, or supporting other contributors. By actively participating in the project community and demonstrating a collaborative mindset, you can establish a positive rapport with maintainers. + +Remember, collaboration with project maintainers is a two-way street. Approach their feedback with a growth mindset, value their expertise, and actively engage in the review process. By addressing feedback, meeting quality standards, effectively communicating the impact of your code, and establishing a positive collaborative relationship, you enhance the chances of gaining approval for your pull request and contribute to the success of the open source project. + +## Merge and Closing the Pull Request +After receiving the maintainer's approval, the pull request is merged into the main repository. At this point, your code becomes part of the project's codebase :tada: + +## Pull Request Rejection +It's worth noting that not all PRs get merged into a project. When you submit a pull request, you're not just asking maintainers to add your code to the codebase; you're also asking them to maintain that code. It is a normal part of the contributor journey to have PRs rejected, especially if there wasn't much communication with the maintainers during the development of the pull request. + +## Example Pull Request Walkthrough + +As you learned above, once a contributor submits a pull request to a repository, it usually triggers a process of review before it’s merged into the main codebase. This is often both for internal _and_ external contributors. We’re going to take a look at a [Pull Request](https://github.com/cypress-io/cypress/pull/19303) into the codebase for the open source testing software, [Cypress](https://insights.opensauced.pizza/hot/repositories/filter/cypress-io/cypress) from one of their team members, [@marknoonan](https://twitter.com/marktnoonan). Before diving into the process below, let's take a look at what Mark had to say about the pull request: + +> When I think back to that PR, I remember my initial idea was to use a third-party library to implement the 3-panel resizable interface in Cypress. I tried out two different libraries on that branch, but ended up writing a custom implementation when those didn't meet our needs. Working through that PR helped clarify what we needed to do and how it should work. The main thing is, at all times we are focused on the underlying goal of the PR, and I am never attached to "my code" other than as a way to achieve the goal. So changing, removing, and rewriting code through feedback are all common, low-stakes parts of dialing in a change, and I expect and welcome that part of the process. I'm grateful and lucky to work with thoughtful, thorough people who provide great reviews. + +### Submit Your Pull Request +In the pull request, you should state any issues being closed and pertinent information so the reviewing team can get a quick understanding of what the PR accomplishes. In this case, Mark lists the two issues the PR closes, additional details, a bulleted list of what happens in this PR, a video that demonstrates how the user experience has changed, and how to test. + +![gif of pull request](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rhyyvn759jf8q7zrcp19.gif) + +If your PR is ready for review, you can request a review to let the maintainers know. + +![Review Request](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8llflnf372gds38bqw4z.png) + +You can also [mark a pull request as ready for review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review). + +### Code Review +Now that Mark has submitted the PR and asked for a review, another maintainer looks at the code and provides feedback and asks a question for clarification. + +![Asking a question in PR comments](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5h6hoewul9yvynuvfz5o.png) + +You’ll see if you continue scrolling through the conversation, that Mark updates the PR with new commits and receives more feedback about the PR. One of the comments asks for an end-to-end test to be written, which Mark needs to respond to: + +![Response to end-to-end question](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1psasfh50400g42ihrz1.png) + +There a more comments below that with feedback that include screenshots and a recording to demonstrate things that Mark can update to improve the Pull Request. After the updates are made, Mark notifies the commenter that the bugs have been fixed. + +The process for review continues, and it’s important to note that there’s feedback and conversation happening throughout. Sometimes the reviewer's feedback is implemented. Other times there’s a discussion and they decide that a change doesn’t need to be made. + +And then what we’re all finally waiting for: + +![I tested and it feels great to use!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6jglgw7307yfue7558bk.png) + +It’s worth noting that this Pull Request was submitted on December 7th and it was merged in after feedback, updates, and conversations on December 17th. Getting your Pull Request merged in is a process that’s part of the developer journey. If you want to learn more about what to put in your first PR, check out my post, [Writing Your First Pull Request: Tips, Best Practices, and AI-Powered Tools for Success](https://dev.to/opensauced/writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success-3bg9). And if you have a pull request that you’re proud of and want to highlight, [sign up for OpenSauced](https://insights.opensauced.pizza/start) and share it as a [highlight](https://insights.opensauced.pizza/feed). diff --git a/blog/2023/2023-05-30-exploring-imaginary-worlds.md b/blog/2023/2023-05-30-exploring-imaginary-worlds.md new file mode 100644 index 00000000..224b759b --- /dev/null +++ b/blog/2023/2023-05-30-exploring-imaginary-worlds.md @@ -0,0 +1,30 @@ +--- +title: Exploring Imaginary Worlds +tags: [] +authors: BekahHW +slug: exploring-imaginary-worlds +description: "Discover the link between open source and science fiction in our blog series. Join us as we delve into the imaginative worlds crafted by authors, the impact of open source on collaborative world-building, and the creative contributions of fans. Explore the convergence of fiction and technology, and uncover the transformative power of open source in shaping science fiction narratives." +--- + +Before coming into tech, I spent ten years teaching college English. I've also written a couple of science fiction screenplays. To say that I'm fascinated by the power of storytelling would be an understatement. It's no surprise to me that science fiction has made an impact on open source and vice versa. So every Monday for the next three weeks, I'll have a post inspired by that relationship to hopefully inspire you. + + + +Science fiction has the remarkable ability to transport us to imaginary worlds filled with advanced technology, new societies, and inspiring ideas. For this post, let's take a look at some notable science fiction works embracing the concept of open source-from post-scarcity societies to virtual reality realms. + +## Virtual Reality: Inspired by *Snow Crash* +Neal Stephenson's novel *Snow Crash* introduced the concept of the Metaverse, a virtual reality universe accessible to all used for gaming, work, and socializing. The Metaverse-as we might know it in real life-is a virtual world being built by a variety of companies, including Facebook, Microsoft, and Sony. This visionary idea has influenced the development of open source virtual reality platforms like [Mozilla Hubs](https://hubs.mozilla.com/). Many of the OSS projects inspired by *Snow Crash* create immersive and collaborative virtual spaces that can be explored, built upon, and customized by users. + +## Artificial Intelligence: Inspired by *The Culture* +In Iain M. Banks' *Culture* series, artificial intelligence governs a post-scarcity society. The Minds, highly advanced AIs, serve as benevolent overseers, managing resources and ensuring a harmonious existence. This vision inspired open source AI projects like [TensorFlow](https://github.com/tensorflow). Many of these initiatives seek to democratize AI technology and create an accessible and positive space, like the AI-driven society in *The Culture*. + +## Holographic Displays: Inspired by Star Wars +The iconic holographic displays seen in the Star Wars saga have influenced the development of open source holographic projection technologies. Projects like [Looking Glass](https://lookingglassfactory.com/) and [Holovect](https://lookingglassfactory.com/) aim to bring 3D holographic displays into our everyday lives. By leveraging OSS principles, these projects allow for collaboration and innovation. + +## Voice Recognition and Virtual Assistants: Inspired by Star Trek +The voice-activated computer systems and virtual assistants seen in the Star Trek series have inspired real-life open source projects like [Mycroft AI](https://github.com/MycroftAI) and OpenAI's GPT models. These initiatives focus on creating open source voice recognition and virtual assistant technologies that can be freely accessed, modified, and integrated into various applications. The aim of these projects, like the Star Trek computer, is to create an interactive, natural, and intuitive technological experience. + +## Robotics: Inspired by Isaac Asimov's Works +Isaac Asimov's science fiction stories, particularly his Robot series, introduced the concept of humanoid robots governed by the Three Laws of Robotics. These narratives have influenced open source robotic platforms like ROS (Robot Operating System) and Arduino. These projects provide a framework for developing and controlling robots, fostering growth in the robotics community. + +Science fiction inspires and shapes our technological advancements. From virtual reality to artificial intelligence, holographic displays to voice recognition, and robotics to virtual assistants, science fiction has not only ignited our imagination but also motivated open source communities to bring these ideas to life. If you want to find more open source projects inspired by AI, check out OpenSauced's [Open Source AI insights](https://insights.opensauced.pizza/ai/) and check out the series. \ No newline at end of file diff --git a/blog/2023/2023-06-01-understanding-why-pull-requests-get-rejected-in-open-source-projects.md b/blog/2023/2023-06-01-understanding-why-pull-requests-get-rejected-in-open-source-projects.md new file mode 100644 index 00000000..304fa779 --- /dev/null +++ b/blog/2023/2023-06-01-understanding-why-pull-requests-get-rejected-in-open-source-projects.md @@ -0,0 +1,31 @@ +--- +title: Understanding Why Pull Requests Get Rejected in Open Source Projects +tags: [] +authors: BekahHW +slug: understanding-why-pull-requests-get-rejected-in-open-source-projects +description: "Uncover the common reasons why pull requests face rejection in open source projects. Explore misalignment with project goals, code quality issues, testing shortcomings, communication challenges, licensing violations, and the impact of duplicative or outdated changes. Enhance your understanding of open source collaboration and increase the chances of having your contributions accepted." +--- + +One of the reasons I love open source is because of the collaboration, community, and growth that often happens. Part of that growth includes having your pull request (PR) rejected. In fact, I think we should embrace this as part of the learning experience. To fully learn, you need to understand why your PR was rejected and what you can do to increase your chances of having your contributions accepted the next time you submit a PR. Below you'll find some of the reasons PRs are rejected. + + + +## Misalignment with Project Goals +I like to think of open source projects like a puzzle. Pull requests that are out of sync with the project's objectives are like a misplaced puzzle. Each pull request should contribute meaningfully to the larger picture the project is trying to achieve. Make sure you take the time to understand the project's scope, roadmap, and guidelines, so your changes fit into the project's vision. + +## Lack of Code Quality +Sometimes our code isn't strong enough to be merged in. Think of it like a foundation of a building. You want quality materials, and strong craftsmanship to ensure the strength of the building. Code that doesn't follow established conventions, lacks proper documentation, or contains bugs can undermine the stability and maintainability of the project. To build a solid structure write clean, readable code, adhere to coding standards, and provide comprehensive documentation if necessary. + +## Insufficient Testing +Often, projects require passing tests before a PR can be merged in. Submitting a pull request without testing is like releasing a product without quality control checks. Testing ensures the reliability of your changes and helps identify and prevent potential issues. Think of testing as stress-testing your contribution to guarantee it can hold up to real-world scenarios. + +## Poor Communication +Communication holds open source projects together. Submitting a pull request without a clear description or failing to address reviewer feedback is like sending a letter without an address or not responding to an email. Your ability to communicate demonstrates whether or not you'd be a good teammate, repeat contributor, or community member. Some tips for maintaining positive community include: provide context for your changes, respond to comments constructively, and demonstrate your willingness to collaborate effectively. + +## Violation of Licensing or Legal Issues +Including code that violates licensing restrictions or raises legal concerns in your pull request will result in an automatic rejection. Although I haven't personally seen this happen, it's worth noting and emphasizing the importance of respecting the project's chosen license and any legal requirements. + +## Duplicate PRs or Outdated Changes +This is one of the most common reasons I've seen issues or PRs rejected. Before creating a PR, ask to be assigned an issue to avoid both circumstances. If you want to raise an issue, check the project's existing issues and pull requests. Stay up to date on the repository and keep your fork up-to-date with the main branch of the project. + +It's ok to not have your PR merged in. It might not feel great, but it's part of the journey. And thinking of it as a learning experience that will guide your next PR or the revisions of your current PR, is an important part of that process. If you have questions about the open source journey, check out [opensauced.pizza](https://opensauced.pizza/) or check out our [Intro to Open Source course](https://github.com/open-sauced/intro) today. \ No newline at end of file diff --git a/blog/2023/2023-06-05-fueling-innovation-and-collaborative-storytelling.md b/blog/2023/2023-06-05-fueling-innovation-and-collaborative-storytelling.md new file mode 100644 index 00000000..dbcdf2db --- /dev/null +++ b/blog/2023/2023-06-05-fueling-innovation-and-collaborative-storytelling.md @@ -0,0 +1,28 @@ +--- +title: Fueling Innovation and Collaborative Storytelling +tags: [opensource] +authors: BekahHW +slug: fueling-innovation-and-collaborative-storytelling +description: "Explore the relationship between open source and science fiction. From bringing sci-fi gadgets to life with open source hardware to blurring the lines between fiction and interactive gaming experiences, discover how these two realms inspire and shape each other." +--- + +A couple of years ago, I got to see Neil Gaiman--the English author, creator, and creative genius--live. To say the experience was inspirational would be an understatement. There's something moving about hearing a person share their stories, listening to them read though. There's deeper meaning when you can see their expressions, the ways they move on the stage. You come out of the experience inspired to pursue the things you're passionate about. And it reminded me about [an interview](https://www.vox.com/2015/8/24/9196945/china-science-fiction) he gave a couple of years ago about his experience speaking about science fiction at the first-ever, state-sponsored science fiction convention. + + + +Gaiman asked some of the organizers: "Why are you now in 2007 endorsing a science-fiction convention?" According to Gaiman, the Chinese organizer said, "that the Party had been concerned that while China historically has been a culture of magical and radical invention, right now, they weren’t inventing things." To try to find that inspiration, they'd gone to the United States and "interviewed the people at Google and Apple and Microsoft, and talked to the inventors." What they found out was that all of these inventors had read science fiction when they were young. Science fiction and open source mutually influence and shape each other, creating connections and inspiring innovation. Below you'll find some of those ways. + +## Open Source Hardware: Bringing Sci-Fi Gadgets to Life +With the advent of open source hardware platforms like [Arduino](https://www.arduino.cc/) and [Raspberry Pi](https://www.raspberrypi.org/), enthusiasts and inventors can bring these fictional devices to life. From home automation systems to wearable devices, open source hardware provides a platform for collaboration and innovation, blurring the lines between fiction and reality. For example, one group used Arduino to create a real-life version of the lightsaber from Star Wars. The lightsaber is fully functional and can be used to deflect blaster bolts and cut through objects. + +## Open Source Gaming: Blurring the Lines Between Fiction and Interactive Experiences +Science Fiction has introduced us to worlds we could only imagine, but open source has helped to create a space for us to explore them. Open source gaming platforms like [Unity](https://unity.com/) and [Unreal Engine](https://www.unrealengine.com/en-US) have harnessed the imagination and creativity of developers, enabling them to build captivating gaming universes. Through open source collaboration, developers can create games that transport players to extraordinary realms, blurring the boundaries between fiction and interaction. For example, Star Citizen is a space combat simulator currently in development as an OSS project. The game is being created using the Unreal Engine, and one of the most ambitious open source gaming projects ever undertaken, promising to be a truly immersive experience, with players able to explore a vast universe, pilot their own ships, and engage in combat with other players. + + +## Open Source Data Analysis: Unleashing the Power of Big Data +This might not be at the top of your list, but science fiction often presents advanced data analysis and visualization technologies. Open source data analysis tools such as Python's [Pandas]( https://pandas.pydata.org/) and R's [ggplot2](https://ggplot2.tidyverse.org/) have revolutionized the field, making complex data manipulation and visualization accessible to all. In the science fiction novel *The Martian*, astronaut Mark Watney uses a variety of data analysis and visualization tools to survive on Mars. He uses Python's Pandas to clean and organize data, and he uses R's ggplot2 to create visualizations of his data. These tools allow him to make sense of the vast amounts of data and help him to make critical decisions about his survival. + +## Open Source Soundscapes: Transforming Imaginary Soundtracks into Reality +Music and sound provide depth and development to science fiction worlds. Open source music production software like [Ardour](https://ardour.org/) and LMMS provide aspiring composers and sound designers with professional-grade tools to create atmospheric and futuristic soundscapes. The TV show The Expanse uses open source soundscaping tools to create realistic soundscapes of space travel. The soundscape helps to immerse the viewer in the world of the show, and it helps to make the space battles feel more real. + +The closer science fiction comes to open source, the more opportunities we have to contribute to the new realities that are created. I don't know about you, but that sounds exciting to me. If you want to be inspired by open source projects, check out [OpenSauced's insights](https://insights.opensauced.pizza/) and check back next week for the last post in the series. \ No newline at end of file diff --git a/blog/2023/2023-06-12-from-inspiration-to-impact.md b/blog/2023/2023-06-12-from-inspiration-to-impact.md new file mode 100644 index 00000000..ed434237 --- /dev/null +++ b/blog/2023/2023-06-12-from-inspiration-to-impact.md @@ -0,0 +1,32 @@ +--- +title: From Inspiration to Impact +tags: [] +authors: BekahHW +slug: from-inspiration-to-impact +description: "Explore the relationship between open source and science fiction. From bringing sci-fi gadgets to life with open source hardware to blurring the lines between fiction and interactive gaming experiences, discover how these two realms inspire and shape each other." +--- + +Welcome back to our final post in this series about Open Source in Science Fiction. We've looked at imaginary worlds inspiring real-world innovation, and real-life concepts inspiring science fiction. In this last post, we'll dive into the impact of open source in science fiction and the influence on the genre and tech landscape. + + + +## Collaborative World-Building: Transforming the Science Fiction Landscape + +Science fiction has long been a genre of creativity, with authors crafting intricate worlds and universes. But in many cases, it's been a solitary experience. If we apply open source principles, we can open up new worlds together. + +Collaborative platforms like [World Anvil](https://www.worldanvil.com/) allow writers and contributors to collaborate to build shared universes. These platforms allow for crowd-sourced contributions, where writers, artists, and fans collaborate to develop detailed mythologies, create expansive maps, and flesh out the intricate histories of their fictional worlds. Open source storytelling tools like [Twine](https://twinery.org/) provide accessible platforms for interactive storytelling, enabling anyone to contribute to the narrative tapestry. Through open source world-building, science fiction has become a collective endeavor, resulting in richer and more immersive fictional universes. + +## Open Source Fan Fiction: A Creative Continuation + +I don't know about you, but I know some really passionate science fiction fans. So passionate, in fact, that they're eager to contribute to the story. Open source has taken fan fiction to new heights, empowering fans to engage in creative collaborations and expand upon existing science fiction narratives. + +Projects like [Star Wars Uncut](https://www.starwarsuncut.com/) are a great example of open source fan fiction. In this ambitious undertaking, Star Wars fans from around the world were invited to recreate the original Star Wars movie scene by scene. Each contributor brought their unique style, interpretation, and creativity to the project, resulting in a stunning mosaic of fan-made scenes that captured the collective love for the franchise. Open source fan fiction allows fans to not only explore their creativity but also to contribute to the ongoing development of science fiction worlds. + +## Ethical Considerations in Open Source Science Fiction + +With the fast-paced technology landscape, we need to be continually mindful about the ethical considerations that arise. While open source fosters collaboration and innovation, it also raises important questions about copyright, intellectual property, and inclusivity within the genre. + +How do creators navigate the fine line between encouraging fan participation and protecting their original work? Open source fan fiction often operates in a legal gray area, and it is essential for creators and fans to respect the boundaries set by copyright laws while finding ways to embrace collaboration. + +My past experience as a college English teacher collided with my life in tech for this series, and I couldn't be more excited to see the continued collisions between open source and science fiction in the future. If you're ready to start your own journey into open source and make an impact, get started with [OpenSauced](https://insights.opensauced.pizza/) today. + diff --git a/blog/2023/2023-06-14-how-to-start-an-open-source-project-with-vs-code.md b/blog/2023/2023-06-14-how-to-start-an-open-source-project-with-vs-code.md new file mode 100644 index 00000000..bd3b2550 --- /dev/null +++ b/blog/2023/2023-06-14-how-to-start-an-open-source-project-with-vs-code.md @@ -0,0 +1,86 @@ +--- +title: How to Start an Open Source Project with VS Code +tags: [] +authors: BekahHW +slug: how-to-start-an-open-source-project-with-vs-code +description: "Learn how to start an open source projects using Visual Studio Code (VS Code). This step-by-step guide covers setting up your development environment, creating a new repository on GitHub, cloning it to your local machine, making commits, and pushing changes. Start your open source journey with VS Code today!" +--- + +The first time I pair programmed was with one of the founders of the bootcamp I attended. I was super nervous. We talked through some concepts I was working on, and he asked me to open up an editor. *Ok, side note, I had spent the previous years teaching college English. When someone said “editor,” I assumed a text editor.* I opened up google docs. It wasn’t until he said something like, “Do you have notepad or something else that we can use?” that I realized he was talking about a *code* editor. I think I was using the now-sunsetted Integrated Development Environment (IDE) Atom, but since then, I’ve been using Visual Studio Code (VS Code), which we’re going to be talking about in this blog post, as a way to get started with creating an open source repository. + + + +In this tutorial, we'll walk through the process of setting up your development environment, creating a new repository on GitHub, cloning it to your local machine, making a commit, and pushing your changes back to GitHub. By the end of this guide, you'll be on your way to making your first contribution to open source projects using VS Code–a free and open source IDE, available on Windows, macOS, and Linux. + +If you’d rather watch a video tutorial, you can skip to the end. + +## Step 1: Preparing Your Environment + +To get started, make sure you have the following installed: + +- [Git](https://git-scm.com/) +- [Visual Studio Code](https://code.visualstudio.com/) +- A [GitHub](https://github.com/) account + +## Step 2: Creating a New Repository on GitHub +*Fun fact, the first repository I created is `https://github.com/BekahHW/Portfolio`, an html and css project that never went live, but was the start of what would eventually become bekahhw.com.* + +1. To create your repository, go to [GitHub.com](https://github.com/) and sign in to your account. +2. Click the "New Repository" button. Alternatively, you can just type `https://github.new` into your address bar. +3. Give your repository a name and description. +4. Select the "Public" checkbox if you want your repository to be visible to everyone. +5. Click the "Create Repository" button. + + +![gif of the steps to create a repo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0w4ifmhawoihtlplc22f.gif) + + +## Step 3: Cloning the Repository to Your Local Machine + +1. Open a terminal window. +2. Navigate to the directory where you want to clone your repository. In this case, I like all of my repositories to be in my Projects folder, so I’ll need to cd into that folder. +3. Run the following command: + + ``` + git clone https://github.com/[your-username]/[your-repository-name].git + ``` +![gif of cloning the repo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9bhmie2a3uzyz81glwnw.gif) + +## Step 4: Opening the Repository in VS Code + +1. Open VS Code. +2. Click the "File" menu and select "Open Folder". +3. Navigate to the directory where you cloned your repository. +4. Click the "Open" button. + +## Step 5: Making Changes to the Repo & Pushing them to GitHub +*Personally, I like to use the built-in terminal for VS Code, but that’s not a requirement. If you’d like to use the built-in terminal, select the terminal tab and new terminal.* + +![New Terminal command](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u84gl3oe0s486s9wniot.png) + +1. If you haven’t initialized your project with a `README.md` file, go ahead and create a new file called `README.md`. Then, in the VS Code terminal, type `git add .` and hit Enter to add the file. + +> A README.md file is a Markdown file that typically contains documentation about a software project, such as its purpose, installation instructions, contact and contribution information, and usage examples. Markdown is a lightweight markup language that is often thought of as easier to read and write. + +2. Within that file write “Hello World!” and then save your changes. +3. In the VS Code terminal, type in your commit message preceded by your git commit command: + +`git commit -am "Add text"` + +> The command `git commit -am "Add text"` is used to create a new commit in a Git repository. The `-a` option tells Git to automatically add all modified files to the commit, and the `-m` option tells Git to use the specified message for the commit. In this case, the message is "Add text". + +4. Hit “Enter.” + +You’ve now committed the changes locally, but we still want to get them to our GitHub repository. To do that, we need to “push” the changes. + +5. In the VS Code terminal, type `git push` and hit “Enter.” + +Now if you navigate to your GitHub repository, you should see those changes! + +If you want to check out the video version of this post, you can find it below: + +[https://www.youtube.com/watch?v=GHHTqz5DmNo](https://www.youtube.com/watch?v=GHHTqz5DmNo) + +This video is part of our [Intro to Open Source course](https://github.com/open-sauced/intro) that takes you through the process of contributing to open source to making your first contribution! + +It’s worth mentioning that learning new terminology can be tricky. If you’d like an overview of terminology, check out [Open Source Terminology 101: A Primer for New Contributors](https://dev.to/opensauced/open-source-terminology-101-a-primer-for-new-contributors-k46). And if there’s terminology you think should be added, open an issue or a PR for our [course glossary](https://github.com/open-sauced/intro/blob/main/09-glossary.md). Are you a VS Code user? What are your favorite features or packages? Let us know in the comments below! \ No newline at end of file diff --git a/blog/2023/2023-06-21-open-source-101-a-beginners-guide-to-getting-started.md b/blog/2023/2023-06-21-open-source-101-a-beginners-guide-to-getting-started.md new file mode 100644 index 00000000..352d84e2 --- /dev/null +++ b/blog/2023/2023-06-21-open-source-101-a-beginners-guide-to-getting-started.md @@ -0,0 +1,125 @@ +--- +title: "Open Source 101: A Beginner's Guide to Getting Started" +tags: [] +authors: BekahHW +slug: open-source-101-a-beginners-guide-to-getting-started +description: " Learn the fundamentals of open source development, from choosing projects to making contributions, in this comprehensive beginner's guide. Support open source innovation with OpenSauced.pizza." +--- + +The story of open source is a story about community. It’s about people coming together, learning from each other, growing together, and creating, of bringing their talents and perspectives to build something great. It’s a story of what humanity can do when we work together. I don’t know what Linus Torvalds thought when he created the Linux operating system and released it to the public for free in the early 1990s, but I’m sure it was about doing things differently. + + + +At the time, most operating systems were proprietary software, and users had to pay for them. Linux was different. It was open source software, which meant that the source code was freely available for anyone to use, modify, and distribute. The story of open source is one of innovation, collaboration, and community. And it’s a story that invites you and me into it every day. + +> The term open source was originated by Christine Peterson. You can read about that [here](https://opensource.com/article/18/2/coining-term-open-source-software). + +In this beginner's guide, we'll explore the fundamentals of open source development, including project selection and meaningful contributions–how we can be part of the story. And if you’re ready to start on your open source journey or to share your work in open source, sign up for [OpenSauced.pizza](https://insights.opensauced.pizza/)! + +## Benefits to Contributing to Open Source +My favorite benefit of contributing to Open Source is meeting new people and being a part of new communities. The long-term benefits I’ve had because of those relationships have been incredibly rewarding. But that’s not the only reason to contribute. Here are a few more reasons: + +- Learn new skills: Open source projects are a great way to learn new programming skills. You can learn from the code of other developers, and you can get feedback on your own code from the community. +- Make a difference: Open source software is used by millions of people around the world. By contributing to open source projects, you can help make that software. +- Gain real-work experience: When you contribute to an open source project, you are demonstrating your skills in a number of areas, including: +- Programming: Writing code that is both functional and readable. +- Problem-solving: Identifying and solving problems in code. +- Collaboration: Working with other developers to achieve a common goal. +- Communication: Communicating your ideas clearly and concisely, whether that’s in writing documentation or discussing the issue you’re working on. + +You can check out more reasons in [Beyond Content Creation: How Open Source Contributions Can Help You Get Noticed](https://dev.to/opensauced/beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed-4l5n). + + +## Getting Started with Open Source +There are a lot of things to consider when you’re trying to get started. If you need help understand the terminology, start with this post: [Open Source Terminology 101: A Primer for New Contributors](https://dev.to/opensauced/open-source-terminology-101-a-primer-for-new-contributors-k46 +). Once you’re familiar with the terminology, you need to find the right project. Check out [Choose Your Own Adventure in Open Source: Paths to Success](https://dev.to/opensauced/choose-your-own-adventure-in-open-source-paths-to-success-167p) to explore different reasons for getting involved in open source projects to help you figure out where to get started. Some other considerations when you’re getting started, include: +Find an active project. If a repository hasn’t been updated in a while and the maintainers aren’t responding to issues, discussions, or comments, that’s a sign that the project isn’t active. + +If you look at their repository, you should be able to see when the last PR was merged in. + +![last contribution](https://cdn.sanity.io/images/r7m53vrk/production/1d580ab74f4ed7a48391532dd480022dff1507cc-591x62.png?w=450) + + +- Talk to people who are contributing to open source. The best introduction to a new project is often a personal one. Ask people in tech communities you’re a part of, or go to [OpenSauced Insights](https://insights.opensauced.pizza), and check out the [list of contributors](https://insights.opensauced.pizza/javascript/contributors/filter/recent) for the technology you’re interested in and reach out to them to learn more about their experiences contributing to the projects they’re a part of. +- Find a project that has beginner-friendly issues. Projects with "good first issues" or "beginner-friendly" labels are often good for beginners. + +![good first image](https://cdn.sanity.io/images/r7m53vrk/production/23ddbe0889ac541dc4f475e8cef280f82e78bb6b-613x145.png?w=450) + + +If there aren’t any labels for beginners, don’t forget that the [best first issue is the one that you write yourself](https://opensauced.pizza/blog/good-first-issues-dont-exist). + +- Read the project documentation. Once you’ve found a project that you want to contribute to, it’s important to read the project documentation. This will help you understand the project's goals, its codebase, and its coding standards. Always read through the README and CONTRIBUTING guides. Not only can you get a better understanding of the project, but the expectations for how to contribute should be explained and clear. + +> **Check out [OpenSauced Community Health Files](https://github.com/open-sauced/.github/tree/main).** + +- Engage with the Community. Join the project’s communication channels, like Slack or [Discord](https://discord.gg/6KYErCXf), their discussions, their blog, and introduce yourself. Ask questions and express your interest in contributing. Becoming a part of the community will expand your connections, help you to gain insights into ongoing discussions and development timelines, and may be an opportunity for mentorship from experienced contributors. +- Start small. Look for issues that are small and easy to fix. As you gain experience, you can start working on larger issues or taking on more responsibility. Don’t be afraid to ask for help or to let the maintainers know if you’ve taken on an issue that you can’t complete. It’s all part of the process. +- Be patient. It takes time to learn how to contribute to an open source project. Don't get discouraged if you don't get everything right the first time. Just keep learning and practicing, and you'll eventually get the hang of it. + + +## Community Collaboration +Being part of an open source project is being part of a community. They are there to support and help you within their capacity. Here are some tips to get the most out of the community experience. + +- Review the Code of Conduct (COC)–or if they don’t have one, create an issue asking for one. The COC is there to keep the community safe and supported and it’s essential to understand what that means in the context of your community. +- Ask for help. If you’re stuck, not sure what to do or how to communicate, ask a question. **Be specific about the issue you're facing and the steps you've already taken to address it.** +- Offer Support and Assistance. It doesn’t matter how much experience you have, there’s always someone a step behind you that you can help, and recognizing that you can help others at all stages by providing your support and unique insight can help strengthen the community and foster a positive environment for learning and growth. Actively participate in discussions, share insights, and contribute to the project and community. +- Code reviews are an important part of the open source contribution process. Embrace code reviews as opportunities for growth and improvement, and respect the feedback and suggestions provided by reviewers and project maintainers, even if they challenge your initial approach. Incorporate the feedback gracefully, and strive to understand the concerns raised. + + +## Documentation and Technical Writing +Contributing to documentation is an impactful way to support an open source project. Some ways to do this include: + +- Identify areas where documentation can be improved, like missing or outdated information, unclear instructions, or incomplete explanations. Improving the documentation makes it easier for new contributors to understand and contribute to the project, which leads to a more inclusive and welcoming environment. +- Document your changes clearly and concisely. Explain any code modifications, including considerations. Clear documentation helps future developers understand and maintain the codebase effectively. +- Creating guides or tutorials is another way to contribute. Share your knowledge and expertise by creating or improving user guides, tutorials, or other educational materials. Having resources helps to effectively onboard new users and empower them to make the most of the project's capabilities. + +## Contributing Beyond Code +You don’t have to know how to code to contribute to open source. [Non-code contributions]( https://dev.to/opensauced/how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions-59e5) can have a huge impact. Here are some other ways to contribute: + +- **Project management**: organize issues, create project roadmaps, or coordinate releases. +- **Translations**:Many projects need translations to make the project accessible to a wider audience. +- **Triaging**: Helping with bug triaging or participating in forums supports the community. You can address user-reported issues, reproduce bugs, or offer help. This improves the project's stability and the user experience. +- **Promotion**: Actively sharing the project helps raise awareness and attract more contributors and users. Sharing your positive experiences with the project, writing blog posts or articles about it, or speaking at conferences or meetups about it, helps its growth and impact. + +## Dealing with Challenges and Learning Opportunities +Imposter syndrome and self-doubt can affect anyone, especially when you’re starting out. It's normal to feel uncertain. Everyone’s journey will look different. It’s important to surround yourself with supportive community members, seek encouragement, and remember that this is a learning journey–there will be growing pains. + +Part of this journey means that you’ll receive feedback and constructive criticism. These are opportunities to grow. Listen, understand the perspectives of others, and use feedback to grow as a contributor. + +Embrace collaboration as an opportunity to learn from others, share ideas, and build meaningful relationships. + +## Learning the Basics of Contributing +As you progress, it’s important to learn the basics as you begin your open source journey. Here are some key concepts to understand. + +### Version Control System +Version control systems (VCS) are tools that help developers manage changes to source code and other files in a collaborative development environment. This means that multiple people can work on the same codebase simultaneously while keeping track of changes, facilitating collaboration, and providing a history of modifications made over time. Git is one of the most widely used VCS, allowing for capabilities like forking, cloning, and pulling. You can check out the [official documentation for Git](https://git-scm.com/doc) for more information. + +### Coding Techniques +Every project will have its own strategies for writing efficient, maintainable, and high-quality code. Some of those considerations include: + +- **Code Organization**: How the code is structured will impact readability and maintainability. To learn more about how these decisions are made, look into concepts like modularization, separation of concerns, and design patterns. +- **Code Readability**: Writing code that’s easy to understand helps in collaboration and reduces the likelihood of bugs. Ways to do that include using descriptive variable names, writing clear comments, and consistent formatting. +- **Performance Optimization**: Writing efficient code can improve the speed and resource usage. Ways to improve performancing include: algorithm optimizations, data structure choices, caching, and profiling. +- **Error Handling**: When we ship software, it’s important to think about how to handle errors. What happens when an error occurs? +- **Code Testing**: Each project will have different approaches and use different software for writing tests. They might implement unit testing, integration testing, and test-driven development (TDD) or other methods or combinations of methods to ensure they’re shipping reliable code. + +### Project Contribution Workflows +Because open source projects have maintainers and contributors collaborating to create, it’s important that there are processes that help to ensure a positive experience working together, ensure code quality, and maintain a healthy codebase. As part of this, there are some workflows implemented, including: + +- **Code Versioning and Collaboration**: We talked about this above with Version Control Systems. It’s important to learn how to clone repositories, create branches, commit changes, and push code as well as understand collaboration workflows like forking, branching, and pull requests. I highly recommend creating your own projects for practicing, and even better, bring in a friend who’s new to coding and practice together! For more information on how to do this, check out our Intro to Open Source section on [How to submit a contribution](https://github.com/open-sauced/intro/blob/main/05-how-to-contribute-to-open-source.md) +- **Issue Tracking**: Issues are used to report bugs, suggest features, or discuss improvements. Understand how the project you’re working on uses issues, labeling, and prioritization. You can check out how we handle issues in our [Insights repository](https://github.com/open-sauced/insights/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). +- **Communication**: Take some time to explore how the project communicates. Are they using discussion boards or async communication platforms like Slack or Discord? +- **Contributing**: Before contributing, review the project's guidelines and standards. Be prepared to update your Pull Request (PR) based on feedback and work collaboratively with other contributors. There’s a lot that happens after your PR is submitted. So much so, that I wrote [“What happens after you submit a PR to an Open Source Project?”](https://dev.to/opensauced/what-happens-after-you-submit-a-pr-to-an-open-source-project-4ed1). There can be a lot of reasons why a PR isn’t accepted. You can find out more about that [here](https://dev.to/opensauced/understanding-why-pull-requests-get-rejected-in-open-source-projects-1jd0). + + +### First Time Contributor Resources +For more resources on getting started, check out the following: + +- [Git documentation](https://git-scm.com/doc) +- [GitHub documentation](https://docs.github.com/en/) +- [Open Source Guides](https://opensource.guide/) +- [Intro to Open Source](https://github.com/open-sauced/intro/) +- [How to Start an Open Source Project with VS Code](https://dev.to/opensauced/how-to-start-an-open-source-project-with-vs-code-4106) +- [Writing Your First Pull Request: Tips, Best Practices, and AI-Powered Tools for Success](https://dev.to/opensauced/writing-your-first-pull-request-tips-best-practices-and-ai-powered-tools-for-success-3bg9). + +Contributing to open source is an opportunity to learn new skills, connect with other contributors, and to make a positive impact. Keep in mind that maintainers are human beings who work hard to keep projects going. Always be respectful, patient, and kind. Hopefully, this guide is helpful on your open source journey. If you have any questions, let us know! We look forward to [seeing your highlight on OpenSauced](https://insights.opensauced.pizza/feed) soon. \ No newline at end of file diff --git a/blog/2023/2023-06-26-building-your-devrel-resume-with-open-source.md b/blog/2023/2023-06-26-building-your-devrel-resume-with-open-source.md new file mode 100644 index 00000000..65818efd --- /dev/null +++ b/blog/2023/2023-06-26-building-your-devrel-resume-with-open-source.md @@ -0,0 +1,67 @@ +--- +title: Building Your DevRel Resume with Open Source +tags: [] +authors: BekahHW +slug: building-your-devrel-resume-with-open-source-4km3 +description: "Want to enhance your developer relations (DevRel) resume? Discover the power of open source and learn how to leverage it to showcase your skills, experience, and contributions in this informative blog post." +--- + +One of the questions I’ve heard quite a few times since starting at OpenSauced a couple of months ago is “How can I use open source to get into DevRel?” The answer is one word: Contribute. Contribute to docs, contribute to code, contribute to the community. Contribute by writing, contribute by creating content, contribute by sharing. To be in Developer Relations, your journey will require technical expertise, communication skills, community-building skills, and, most importantly, empathy. In my [last post](https://dev.to/opensauced/devrel-and-open-source-a-powerful-combination-3ldp), I talked about the overlap of DevRel and Open Source. In this post, I’ll get more personal to help you create a plan to use open source to support your journey on the DevRel path. + + + +> **Resources to Learn More about the Different Types of DevRel** +> - [Measuring Developer Relations](https://www.swyx.io/measuring-devrel) +> - [What you need to know to get hired in DevRel](https://youtu.be/3X-EUEOg638) +> - [What is DevRel?](https://www.tessakriesel.com/what-is-devrel/) + + +Everyone’s path into DevRel is different. And there are a lot of different flavors of DevRel. That’s important to keep in mind as we go through this journey. Yours won’t look the same as someone else’s. But in all of the journeys, there will be some commonalities. + +## Listen to Contributors +One of the most important skills you need in Developer Relations is the ability to listen, hear what other people are saying, and respond to that feedback. Because so much of open source requires a need for community, it’s a perfect opportunity to work on your listening skills. Listen to what people in the community are saying. Where are the commonalities? What can you take away from those conversations? Listen to the feedback community members are giving. How do the maintainers respond? How does the tone impact the way the information is received? How does listening impact the health of the community? What conclusions can you make from your experience? By actively listening, you can gain valuable insights, identify common patterns, and draw meaningful conclusions from your experiences. + +## Showcase Your Skills +Open source projects provide a public way to showcase your technical skills and expertise. By actively contributing to a project, you not only demonstrate your coding or technical abilities but also how you interact and collaborate with the developer community. Actively contribute to projects, highlighting your coding expertise, problem-solving capabilities, and community interaction. When listing open source contributions on your resume, make sure to provide details of the projects, the role you played, and any significant impact your contributions had. + +> A great way to showcase your skills is to add it to [OpenSauced's Highlight Feed](https://insights.opensauced.pizza/feed) and then share it to social media! + +Communication is an important part of DevRel. Although your code and other contributions matter, how you communicate will showcase whether or not your skills are strong enough to be in Developer Relations. Does it show that you understand the choices you made in your PR? Does it show that you communicated respectfully with maintainers? That you asked questions when you weren’t sure? That your goal was to grow and support the team? + +> Pro Tip: emphasize your effective communication throughout the process, demonstrating your ability to understand and respect others' perspectives as well. + +## Gain Practical Experience +Open source projects offer a unique opportunity to gain practical experience and enhance your understanding of real-world development processes and to work with diverse teams, communicate with different audiences, collaborate on code reviews, and follow best practices—all valuable skills that you don’t get by working on your own projects. Remember, this is a hands-on learning experience. + +## Networking and Collaboration +The open source community provides networking opportunities, allowing you to connect with other contributors, industry experts, and potential employers. Being able to collaborate with so many different developers allows you to gain a depth of experience that’s nearly impossible outside of open source. As you collaborate, you’re building in public, and sharing the process you take to solve complex problems. It also provides you with the opportunity to receive feedback or mentorship from experienced contributors or maintainers. All of these collaborative open source experiences demonstrate your ability to work effectively within a team and learn from others. + +## Building a Portfolio +In the realm of DevRel, having a portfolio of your work is crucial. Open source projects can serve as a source of content for your portfolio, showcasing your coding skills, problem-solving abilities, and community involvement. After you’ve contributed to a project consider using that as content to develop to share with an audience who wants to learn more about the project. For example, [@Ahmed](https://dev.to/deadreyo) worked on a feature for OpenSauced and then wrote a blog post called [Personalized Social Images: Enhancing User Profiles with Opengraph](https://dev.to/opensauced/personalized-social-images-enhancing-user-profiles-with-opengraph-1iio) about how he did that. Other options would be to record a video about the process, write a talk about the experience, create a presentation, or any other option for engaging with an audience. The point is, teaching an audience through content is a key skill for Developer Advocates. If you’re not ready to create a larger piece of content, start by [creating a highlight](https://insights.opensauced.pizza/feed) to share with others or use the highlight to share your larger creations. + +Describe your contributions, and link to the repositories, pull requests, or documentation you worked on. This not only adds credibility but also allows potential employers to see what you’ve done firsthand. + +## Organize an Open Source Event +Talk to a maintainer and see if you can help organize open source events, hackathons, or initiatives that bring contributors together. This could be as simple as a coffee chat or a more in-depth meetup, a workshop, or a virtual event. Organizing events, showcases your leadership, community-building skills, and passion for connecting code and community. + +## Create and Maintain Your Own Open Source Projects +Starting your own open source projects is another great way to demonstrate your initiative, leadership, and problem-solving abilities. It also gives you the opportunity to showcase your communication skills, organizational management, and support of contributors. + +## Practical Application Storytime +Meet Alex, a passionate software developer who enjoys creating innovative apps. As Alex grew in their first role as a developer, they discovered they loved sharing what they learned about in tech, especially when they're able to build a project. With this realization, they started considering becoming a Developer Advocate to blend their technical expertise with their love for public speaking. + +So Alex comes up with a game plan to make this career shift. They start looking at how to showcase their foundation, practical skills, and portfolio. Because they were pretty limited in their day-to-day job, they decided that utilizing open source projects would be a great path for inspiration and growth. + +Alex started by getting involved in the open source community. They explored popular projects relevant to their interests. They work with JavaScript and want to learn more about machine learning libraries. By checking out these projects, Alex gained insights into the inner projects, how to use them, and best practices. + +After understanding how they can combine some of his favorite libraries, Alex started actively contributing, starting by helping to triage, then adding to docs and then moving on to bug fixes. Through their contributions, Alex sharpened their coding skills and became a well-known member of the open source community. + +As part of the process, Alex starts to incorporate their open source contributions into their demos and presentations. They share how they solved complex challenges, improved efficiency, and how they implemented unique features using open source libraries. By sharing their real-life examples in their talks, Alex builds their credibility and authenticity. + +Alex's open source journey didn't stop there. They actively engaged with the open source community, participating in discussions, seeking feedback, and collaborating with other contributors. Through this experience, they expanded their network, deepened their understanding of the challenges faced by developers, and demonstrated their ability to community and advocate for the open source community. + +As part of this journey, Alex's portfolio grew with demos built on open source technologies, submitted talks to share at conferences and meetups, and built their reputation. + +When Alex stepped on stage, they shared their experiences, insights, and practical solutions derived from their open source journey. They inspired developers with their experience and shared the value of community collaboration. Alex's portfolio reflected a strong candidate for a DevRel role. + +Each of our journeys will be different. They'll have different focuses, they'll be different lengths of time, and we'll learn and grow in different ways. What's important to remember is that the opportunities are out there. Sometimes, you'll find them on your own. Sometimes, you'll need to ask for help. Sometimes, you'll create them yourself. And if you want help, we're always here to support you in your open source journey. \ No newline at end of file diff --git a/blog/2023/2023-07-03-devex-and-oss--elevating-developer-experience-through-open-source-collaboration.md b/blog/2023/2023-07-03-devex-and-oss--elevating-developer-experience-through-open-source-collaboration.md new file mode 100644 index 00000000..07b7d868 --- /dev/null +++ b/blog/2023/2023-07-03-devex-and-oss--elevating-developer-experience-through-open-source-collaboration.md @@ -0,0 +1,36 @@ +--- +title: DevEx and OSS- Elevating Developer Experience through Open Source Collaboration +tags: [] +authors: BekahHW +slug: devex-and-oss-elevating-developer-experience-through-open-source-collaboration +description: "Explore the overlap of Developer Experience (DevEx) and Open Source Software (OSS) as we look at how collaboration enhances the overall developer experience. Discover how OSS empowers DevEx by providing tooling, fostering collaboration, and enabling continuous improvement." +--- + +In my last role, I focused on the community side of developer relations. Part of that included creating open source projects to help onboard new developers and to create opportunities for community members to interact. When I started at [OpenSauced](https://opensauced.pizza/) as a Developer Experience Lead, there wasn’t a huge jump from community to developer experience. In fact, I wrote a little more about it in [this LinkedIn post](https://www.linkedin.com/posts/bekah-hawrot-weigel_developerexperience-communityexperience-tech-activity-7064691900682801153-w_g2?utm_source=share&utm_medium=member_desktop) if you’re interested. The overlapping goals of Developer Experience, Community, and Open Source to empower community members, have a growth mindset, and believe in collaboration culminate into the potential to be part of something incredible. In this final blog post in our series, we'll explore how DevEx and OSS combine forces to elevate developer experience, enabling developers to work more efficiently, collaborate effectively, and create great open source projects. + + +> **Developer Experience (DevEx)** focuses on improving the developer journey and their experience using a particular technology or platform. Part of this can include providing strong documentation and tutorials and creating tools and resources that make it easier to develop and debug code. + +## Empowering DevEx with Robust Tooling +Open source projects often offer a wide range of tools and frameworks that enhance the developer experience. These tools are often built and maintained by a core group of maintainers along with the support of the community, providing opportunities for developers and contributors to leverage their expertise, grow in their skills, and make meaningful progress. By embracing open source tooling, DevEx teams can provide developers with powerful, flexible, and customizable solutions, tailored to their specific needs. + +### Examples of popular OSS tools + So what are we talking about when we say tooling? Glad you asked! Development environments, code editors, package managers, testing frameworks, and deployment automation. These kinds of tools help streamline development workflows and promote consistency, productivity, and efficiency. + +If you want to learn more about using Git and VS Code Editor, you can check out my blog post [How to Start an Open Source Project with VS Code](https://dev.to/opensauced/how-to-start-an-open-source-project-with-vs-code-4106). + +## Fostering Collaboration through Open Source +Collaboration is the heart of both DevEx and open source. Open source projects thrive on the power of collaboration, with developers from around the world contributing to improve the software that we use everyday. DevEx teams can leverage this collaboration to nurture community, encourage knowledge sharing, and drive innovation. + +By actively participating in open source projects, DevEx teams can engage with developers, provide guidance, gather valuable feedback, and learn how other teams create a great developer experience. By contributing code, offering support, and facilitating discussions around best practices, they can develop their understanding of what the developer community wants and needs and the best practices for communicating with them. + +This is one of the reasons, we’ve been working on a collaborations feature at OpenSauced. We want to support contributors working together. If you want to find out when this feature will go live, sign up for our [newsletter](https://news.opensauced.pizza/#/portal/signup). + +![Collaboration request with the text "Hey bdougie! I'd love to collaborate on the intro to open source documentation!"](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5aj09tdbvz1jlih0n46k.png) + +## Enabling Continuous Improvement +One of the core tenets of both DevEx and open source is continuous improvement. Because DevEx focuses on people, the work is never done. We’re all constantly growing, changing, learning. And because of this, our needs will change. Developer Experience needs to change with the developers. Open source projects embrace iterative development, encouraging developers to contribute enhancements, fix bugs, and suggest new features. DevEx teams, on the other hand, are constantly striving to improve the developer experience by incorporating user feedback, addressing pain points, and finding helpful solutions. + +Through collaboration with open source projects, DevEx teams can actively learn about developers’ needs, motivations, and how they can best support their developers. By submitting bug reports, proposing feature enhancements, and participating in discussions, DevEx teams can contribute to the greater OSS ecosystem *and* help to create a better developer experience for everyone in open source. + +As the worlds of DevEx and OSS continue to intersect, developers can look forward to better experiences, accelerated innovation, and more supportive communities that embrace their needs. What are some of the most innovative ways that you have seen open source used to improve the developer experience? \ No newline at end of file diff --git a/blog/2023/2023-07-10-how-to-talk-about-your-open-source-experience-in-a-tech-interview.md b/blog/2023/2023-07-10-how-to-talk-about-your-open-source-experience-in-a-tech-interview.md new file mode 100644 index 00000000..3d2e9f5e --- /dev/null +++ b/blog/2023/2023-07-10-how-to-talk-about-your-open-source-experience-in-a-tech-interview.md @@ -0,0 +1,135 @@ +--- +title: How to Talk About Your Open Source Experience in a Tech Interview +tags: [] +authors: BekahHW +slug: how-to-talk-about-your-open-source-experience-in-a-tech-interview +description: "Learn how to effectively discuss your open source experience in a tech interview. Discover tips on highlighting relevance, describing contributions, showcasing collaboration skills, discussing learning experiences, and emphasizing community involvement. Impress interviewers and stand out from the competition with your open source journey." +--- + + +Interviewing is a skill that can be strengthened. Interviews can be frustrating, demoralizing, casual, intense, and occasionally fun. They can make you doubt yourself or they can validate your skillset. There’s a lot being evaluated in these interviews and I know, personally, that nerves have gotten the better of me in that process. But just like any other skill, the more you learn about how to do it, the more you practice, the better you get. When you’re interviewing for a tech job, you’re going to be asked about your experience. Contributions to open source projects are a great way to demonstrate your skills because they can demonstrate your technical skills, showcase your collaboration, problem-solving abilities, and passion for your work. Even if you’ve had a stellar experience as a contributor, you need to know how to effectively talk about your open source experience during the tech interview. In this blog, we’ll explore how to talk about your open source experience in a tech interview. + + + +> **More Resources on How to Land a Job with Open Source** +> - [How I Got Hired Contributing to open source projects](https://dev.to/opensauced/how-i-got-hired-contributing-to-open-source-projects-546i) +> - [Building Your DevRel Resume with Open Source](https://dev.to/opensauced/building-your-devrel-resume-with-open-source-4km3) +> - [How to Contribute to Open Source without Knowing How to Code: A guide with project suggestions](https://dev.to/opensauced/how-to-contribute-to-open-source-without-knowing-how-to-code-a-guide-with-project-suggestions-59e5) +> - [Beyond Content Creation: How Open Source Contributions Can Help You Get Noticed](https://dev.to/opensauced/beyond-content-creation-how-open-source-contributions-can-help-you-get-noticed-4l5n) + +## Highlight the Relevance +When talking about your open source experience, emphasize its relevance to the position you're interviewing for. Make a connection between your contributions and the skills required for the role. Discuss specific projects or aspects of the open source community that align with the company's tech stack or the job description. This demonstrates your ability to bridge the gap between open source and the company's goals. + + +### Example Response - Developer Advocate Role +**Interviewer**: Can you provide an example of a time when you partnered with an engineering team to deliver educational content to community members, leading to enhancing their skills and product knowledge while also promoting advocacy? + +**Mia**: One significant open source project I contributed to was a developer toolkit for a programming language that closely resembles the tech stack utilized by your company. This project allowed me to immerse myself in the language and gain an in-depth understanding of its intricacies. + + +As part of the documentation issue that I worked on, my main responsibility was to create educational content, including tutorials, to empower fellow developers using the language. I wanted to ensure that the community had the resources they needed to fully leverage the language's capabilities. + +To achieve this, I collaborated closely with the engineering team and community members to identify common pain points and areas that required further clarification. I actively engaged in discussions on forums and organized workshops that specifically focused on your company's technology stack. + +Through my open source contributions, I not only enhanced my technical expertise in the language but also developed strong communication skills. I was able to effectively articulate complex technical concepts to a diverse audience, building their skills and product fluency while advocating for the open source project and its relevance to the developer community. + + +## Describe Your Contributions +Start by explaining the problem you aimed to solve or the feature you worked on, providing context for your involvement. If you faced challenges, highlight how you overcame them. If you know the impact of your contributions, such as the number of users, positive feedback, or adoption by other developers, share this information as well. Emphasize the lessons you learned during the process and how they have shaped your technical growth. + +[![babblebey's highlight](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ts5my5oud3g7esll1mki.png)](https://insights.opensauced.pizza/feed/207) + +### Example Response - Front-End Developer + +**Interviewer**: Can you tell me about a problem or feature you worked on, providing context for your involvement? + +**Tomás**: Absolutely! One project I recently contributed to was an open source web application called "Contributions Connect." It aimed to connect local communities and facilitate collaboration among their members. As a frontend developer, my role was to enhance the user experience by improving the application's UI and optimizing its performance. + +**Interviewer**: Did you face any challenges during the project? How did you overcome them? + +**Tomás**: One of the main challenges I encountered was optimizing the application's performance and speed on the front end. The initial version of the UI was visually appealing but lacked the necessary responsiveness. To overcome this, I focused on identifying bottlenecks and implementing performance optimizations, such as minimizing HTTP requests, compressing assets, and leveraging browser caching. By implementing these techniques, I significantly improved the overall loading time and responsiveness of the application. + +While working on Contributions Connect, I actively collaborated with the open source community, receiving positive feedback and engagement from both users and fellow developers. Our improvements in UI and performance not only led to an enhanced user experience but also resulted in increased adoption by other developers within the community. This was evident through the growing number of forks, stars, and contributions to the project on GitHub. + +**Interviewer**: What lessons did you learn from this experience and how have they shaped your technical growth? + +**Tomás**: This experience taught me the importance of striking a balance between aesthetics and performance in frontend development. I learned that building a visually pleasing UI is only part of the equation; ensuring optimal performance and speed is equally crucial. Through this project, I developed a deep understanding of performance optimization techniques, such as lazy loading, code splitting, and caching strategies. These lessons have not only enhanced my technical abilities but also instilled in me a passion for creating efficient and reusable code. + +## Showcase Collaboration and Communication Skills +Open source projects are collaborative by nature, so it's important to showcase your ability to work effectively in a team. Talk about how you interacted with other contributors, how you shared ideas, and how you resolved conflicts or differences of opinion. Highlight any leadership roles or responsibilities you had within the open source community, such as being a maintainer or a project lead. Emphasize how you effectively communicated with the project community, both online and offline. + +[![CBID2's highlight](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cvmb2ijw09og21bm0b9q.png)](https://insights.opensauced.pizza/feed/197) + +### Example Response - Project Manager + +**Interviewer**: Can you tell me about your experience and skills as a project manager? + +**Gift**: Certainly! While I'm transitioning from a developer to a project management role, my experience with open source projects has provided me with valuable insights into effective project management practices. During my time as a developer and transitioning into project management, I had the opportunity to work on various open source projects. One notable experience was my involvement with an open source project called "AwesomeWebApp." As a contributor, I actively engaged with the project community, collaborating with other contributors and sharing ideas to enhance the project's functionality. + +In terms of interacting with other contributors, I firmly believe in fostering a positive and inclusive environment. I regularly participated in online discussions, providing constructive feedback and suggestions to fellow contributors. By actively listening to different perspectives, I ensured that everyone's ideas were considered and respected. This approach helped us maintain a harmonious and productive work atmosphere. + +To resolve conflicts or differences of opinion, I employed a diplomatic and solution-oriented approach. One instance comes to mind when our team encountered a disagreement regarding the implementation of a new feature. I initiated a discussion to understand the varying viewpoints, encouraging open dialogue and mutual understanding. Through effective communication and compromise, we were able to reach a consensus that satisfied all parties involved. + +In terms of leadership roles, I took on the responsibility of being a project maintainer for the "AwesomeWebApp" project. As a maintainer, I oversaw the project's progress, reviewed and merged contributions, and facilitated discussions among contributors. This experience provided me with valuable insights into coordinating efforts and ensuring the project's overall success. + +When it comes to communication within the project community, I recognized the importance of maintaining strong connections both online and offline. I actively participated in online forums, providing timely updates and clarifications to project-related queries. Additionally, I organized and attended meetups and conferences, where I had the opportunity to interact with fellow contributors face-to-face, fostering personal connections and strengthening the project's community spirit. + +Overall, my experience as a developer working on open source projects has equipped me with essential skills in teamwork, communication, conflict resolution, and leadership. I believe these experiences have laid a solid foundation for my transition into project management, as they have honed my abilities to work effectively within diverse teams and engage with stakeholders at various levels. + + +## Discuss Your Learning Experience +Open source projects provide an excellent platform for continuous learning and skill development. Share how your open source experience has expanded your technical knowledge and honed your problem-solving abilities. Discuss the new programming languages, frameworks, or tools you encountered during your contributions. Mention any feedback or code reviews you received and how they helped you improve as a developer. Demonstrate your enthusiasm for learning and growth. + + +[![Sunday's highlight](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8m0yioq0ifeupw4hahev.png)](https://insights.opensauced.pizza/feed/195) + +### Example Response - Full Stack Engineer + +**Interviewer**: Tell us about your open source experience and how it has expanded your technical knowledge and honed your problem-solving abilities. Specifically, could you share an example of a project or issue where you utilized your full stack skills? + +**Mari**: During my open source experience, I've had the opportunity to dive into various projects that have expanded my technical knowledge and sharpened my problem-solving abilities. One specific example of utilizing my full stack skills was when I took on an issue in a popular open source project called XYZ. + +The issue involved optimizing the performance of a RESTful API endpoint by implementing caching mechanisms. As a backend developer, I understood the importance of efficient data retrieval and transmission, but this challenge allowed me to explore the frontend side as well. I needed to assess the current caching strategy and propose improvements to enhance the overall user experience. + +To tackle this issue, I first familiarized myself with the project's codebase and the technology stack it utilized. It involved working with a combination of Node.js on the backend and React.js on the frontend. Although my professional experience was primarily focused on backend development, I was eager to expand my skill set and embrace the full stack nature of this challenge. + +I dove into the existing code, identified the areas that required optimization, and researched different caching techniques suitable for this scenario. Leveraging my backend knowledge, I suggested implementing a combination of server-side caching using Redis and client-side caching through the use of memoization techniques. I collaborated with the frontend team to ensure the integration of these caching mechanisms in the API response handling and UI components. + +Throughout this process, I actively sought feedback and engaged in code reviews with other contributors in the open source community. Their insights and suggestions not only helped me improve my code quality but also broadened my understanding of best practices in full stack development. Their expertise guided me in addressing edge cases and optimizing my implementation further. + +This experience demonstrated my enthusiasm for learning and growth as a developer. It showcased my ability to adapt to new programming languages, frameworks, and tools by utilizing my backend expertise while embracing the frontend responsibilities in a full stack context. Working on this open source issue allowed me to expand my technical horizons, reinforce my problem-solving skills, and solidify my desire to pursue a full stack role. + +## Talk About the Open Source Community +The open source community thrives on collaboration, knowledge sharing, and giving back. Talk about your involvement in the community beyond coding, such as participating in discussions, mentoring newcomers, or contributing to documentation. Discuss how the open source community has influenced your professional development and how you have contributed to its growth. Showcase your passion for open source and your dedication to making a positive impact on the developer community. + + +[![Nick Taylor's Highlight](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ao6nz87n6u9y7mlxih4.png)](https://insights.opensauced.pizza/feed/36) + + +### Example Response - Senior Software Engineer + +**Interviewer**: Can you provide an example of a leadership experience that demonstrates your ability to mentor and guide junior developers your team? + +**James**: I believe that leadership goes beyond just technical skills and encompasses the ability to inspire and guide others towards their growth and success. One particular experience comes to mind where I had the opportunity to mentor and support junior developers through their open source experience. + +At my previous company, we were working on an open source project aimed at simplifying deployment processes for cloud-based applications. As a Senior Software Engineer, I actively participated in the open source community, engaging in discussions, contributing to documentation, and mentoring newcomers who wanted to get involved. + +I realized that mentoring early career folks was not just about sharing technical knowledge but also about creating a supportive environment where they felt comfortable asking questions and exploring their ideas. To facilitate this, I organized regular virtual meetups where junior developers could share their progress, discuss challenges, and seek guidance. + +During one of these meetups, a junior developer was struggling with a particular feature implementation. Instead of simply providing a solution, I encouraged them to think critically, guided them in breaking down the problem, and suggested potential approaches. Together, we explored different options, discussed trade-offs, and eventually arrived at an elegant solution. It was a gratifying experience to witness their growth and see their confidence increase. + +To ensure a continuous learning experience, I also conducted code reviews, providing constructive feedback to help junior developers improve their coding practices and gain a deeper understanding of software development principles. I believe in leading by example, so I made sure to contribute high-quality code and follow best practices myself, setting a standard. + +Through this experience, I realized the immense impact mentoring can have on both the individual being mentored and the community as a whole. It's not just about helping someone with their code; it's about empowering them to become better developers and fostering a culture of knowledge-sharing and collaboration. + +I also actively encouraged the junior developers to contribute back to the open source project by taking ownership of smaller tasks, reviewing pull requests, and suggesting improvements. By doing so, they not only developed their technical skills but also gained a sense of ownership and pride in their contributions. + + +## Additional Consideration: Be Prepared to Show Your Code +Some tech interviews may require you to showcase your coding skills by sharing links to your open source contributions. Be ready to present your code or other contributions and explain the rationale behind your decisions. Practice explaining concisely and be prepared to answer questions related to the codebase you worked on. One great way to lead the hiring manager to the contributions you’re most proud of is to send them to [your highlights page](https://insights.opensauced.pizza/user/BekahHW/highlights). + + +![BekahHW's highlight page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kqrdlwr4mvkuwuwl7ton.png) + + +For most of us, it takes practice and experience to interview well. By highlighting the relevance of your contributions, describing your accomplishments, showcasing collaboration and communication skills, discussing your learning experience, and emphasizing your involvement in the open source community, you should be able to create an impression that interviewers will remember. And remember, this is a great opportunity to share your passion and demonstrate all the things you’ve learned through your open source journey. Good luck! diff --git a/blog/2023/2023-07-12-100daysofoss-growing-skills-and-real-world-experience.md b/blog/2023/2023-07-12-100daysofoss-growing-skills-and-real-world-experience.md new file mode 100644 index 00000000..f7db2d50 --- /dev/null +++ b/blog/2023/2023-07-12-100daysofoss-growing-skills-and-real-world-experience.md @@ -0,0 +1,77 @@ +--- +title: "#100DaysOfOSS: Growing Skills and Real-World Experience" +tags: [] +authors: BekahHW +slug: 100daysofoss-growing-skills-and-real-world-experience +description: "Join the #100DaysOfOSS challenge starting July 23rd! OpenSauced invites you to enhance your skills, contribute to open source software, and expand the OSS community. Participate in various ways, such as writing issues, submitting pull requests, creating content, or supporting projects. Post your progress with the hashtag #100DaysOfOSS." +--- + +Inspired by the great work of the [#100DaysOfCode challenge](https://www.100daysofcode.com/), we're launching #100DaysOfOSS, starting **July 23rd**, and running through the end of Hacktoberfest, October 31. + +With this challenge, OpenSauced hopes to help contributors enhance their skills, expand their abilities, and gain practical experience over 100 days, as well as support maintainers, onboard more contributors into open source, and expand the OSS community. With a focus on open source software (OSS), we encourage contributors of all technical backgrounds to immerse themselves in the world of collaborative development and engage with a supportive community. + + + +## How to Participate +The beauty of this challenge is that you're not required to code. The main purpose is to grow in your understanding of open source software (OSS), contribute in ways that are meaningful to you, and further develop the skills and knowledge you're interested in pursuing. It's all about personal growth and making a positive impact on the OSS community. Because this challenge is focused on growth, you can participate in any way that helps you achieve your goals-including taking days off when you need it. + +There are numerous ways to participate in the #100DaysOfOSS challenge, including: + +- write issues to identify bugs or suggest new features; +- triage existing issues to help with prioritization; +- submit pull requests to contribute code changes; +- engage in the community by sharing your insights and knowledge; +- create or participate in discussions related to OSS topics; +- write a blog post or create content that supports an OSS project; +- update or write documentation to improve clarity and usability +- create content: give a talk or presentation on OSS, participate in or even start a Twitter Space write a blog post or create a video; +- maintain a project: review pull requests, triage issues, and respond to questions; +- support contributors working on OSS projects, providing guidance and support. + +To keep track of your progress, post on social media, your blog, or any other platform you prefer with what progress you made, the day of the challenge indicated by 'D'and include the hashtag #100DaysOfOSS. For example, if you're on day one, you could say, "Today, I reviewed the documentation for the [OpenSauced/Insights](https://github.com/open-sauced/insights) repository. D1 #100daysOfOSS." Then, on day two, you would continue with D2, and so on. + +**Here's what you can do if you're ready to join this challenge:** +- [Sign up](https://app.opensauced.pizza/) with OpenSauced to to power-up your open source toolkit, and for the chance to opt in to receive updates, event invites, and resources to help you succeed. +- [Tweet out your commitment today](https://twitter.com/intent/tweet?text=I%27m%20joining%20the%20%23100DaysOfOSS%20challenge%20with%20%40saucedopen%20to%20grow%20my%20skills%2C%20gain%20real-world%20experience%20in%20open%20source%2C%20and%20to%20make%20a%20positive%20impact%20on%20the%20OSS%20Community!) or share on your platform of choice! + +## The Official Kickoff +We're starting 100 days from the end of [Hacktoberfest](https://hacktoberfest.com/), a month-long celebration of open source contributions. Starting **July 23rd**, we'll provide continuous support, daily inspirational tweets, and engaging events to help you stay motivated and make progress. + +Don't worry if you're unable to start on the same day as everyone else. The #100DaysOfOSS challenge is flexible, and you can join in whenever you're ready. Just jump in at any point and begin with day one of your personal challenge. + +## Support +To make the most of your #100DaysOfOSS journey, here are some additional resources and events you can explore: + +1. **Weekly Twitter Spaces:** Join our weekly Twitter Spaces sessions where we discuss open source topics, share insights, and connect with like-minded individuals. Follow us on [Twitter](https://twitter.com/saucedopen) to stay updated on upcoming sessions. + +2. **Community Events:** Discover a wide range of events on our [community docs page](https://docs.opensauced.pizza/community/welcome-to-the-community). Whether it's hack days, workshops, or office hours, these events provide excellent opportunities to learn, collaborate, and find new projects to contribute to. + +3. **Weekly Contribution Opportunities:** If you're actively looking for open source projects to contribute to, check out the [weekly post](https://dev.to/bekahhw/series/23323) for new contribution opportunities. + +4. **Weekly Office Hours:** Have questions or need help? Join us on [Discord](https://discord.gg/dXvGd8mz) during our office hours or post in our #100DaysOfOSS channel. We're here to help you succeed! + +## Where to Start? +If you're ready to start your #100DaysOfOSS journey, here are some tips to help you get started: +- **Find a Project:** Explore the [OpenSauced](https://opensauced.pizza/) website to find a project that interests you. You can also check out the [weekly post](https://dev.to/bekahhw/series/) for exciting contribution opportunities. +- **Take our Intro To Open Source Course:** If you're new to open source, we recommend taking our [Intro to Open Source](https://github.com/open-sauced/intro) course to learn more about open source and how to get started. + +## The Power of the #100DaysOfOSS Challenge +The #100DaysOfOSS challenge offers a supportive community where developers can find encouragement, share experiences, and overcome roadblocks together. + +Our hope is that the community will provide a safe space to discuss challenges, celebrate achievements, and exchange insights, creating an environment that helps individuals stay on track and avoid giving up. + +## Why join the #100DaysOfOSS Challenge: + +1. **Skill Enhancement**: By working on real-world projects, you'll gain practical experience and exposure to different projects, documentation, communities, programming languages, frameworks, and tools. You'll also learn from experienced developers, receive feedback on your code, and improve your problem-solving abilities. + +2. **Collaboration and Networking**: You'll have the opportunity to work alongside other contributors, collaborate on shared goals, and build professional relationships. This experience can lead to networking opportunities, mentorship, and exposure to diverse perspectives in tech. + +3. **Resume and Portfolio Boost**: Experience in open source demonstrates your ability to work in a team, follow best practices, and contribute to larger codebases. Open source contributions are tangible evidence of your skills, commitment, and ability to grow. + +4. **Learning from Peers**: By examining the codebase, participating in discussions, engaging in the community, and reviewing pull requests, contributors can gain insights into different approaches to community, projects, coding styles, architecture patterns, and software development best practices, accelerating a developer's learning curve. + +5. **Making a Positive Impact**: Your contributions benefit other contributors who rely on these projects, fostering a sense of fulfillment and giving back to the community. + +For more information on the challenge, like our upcoming events, including our Intro to Open Source Workshops, check out our [#100DaysOfOSS docs page](https://docs.opensauced.pizza/community/100-days-of-oss/). We'll have more great information and resources there on our launch day to help you on your journey. We'll also be dropping daily prompts on Twitter, so feel free to follow [@saucedopen](https://twitter.com/saucedopen) there for more inspiration. + +If you have any questions or suggestions, feel free to drop them below, so we can continue to work on supporting you in your open source adventure. \ No newline at end of file diff --git a/blog/2023/2023-07-17-the-power-of-git-a-guide-to-collaborative-version-control.md b/blog/2023/2023-07-17-the-power-of-git-a-guide-to-collaborative-version-control.md new file mode 100644 index 00000000..2b3bc0ea --- /dev/null +++ b/blog/2023/2023-07-17-the-power-of-git-a-guide-to-collaborative-version-control.md @@ -0,0 +1,162 @@ +--- +title: "The Power of Git: A Guide to Collaborative Version Control" +tags: [] +authors: BekahHW +slug: the-power-of-git-a-guide-to-collaborative-version-control +description: "Unlock the power of Git, a distributed version control system, in our guide. Learn how to manage code changes, collaborate seamlessly, and maintain an organized codebase. Discover essential Git functionalities, from committing and branching to merging and resolving conflicts." +--- + +When I started learning to code, no one told me what Git was or why it was important. It was one of those words that I pretended that I understood because everyone just assumed that I knew what it meant. But up to that point, I had been using built in IDEs, and I hadn’t used git. For one of my bootcamp projects, I had to have a certain number of commits to pass. I forgot about commits, and only had about three. I went through and did the whole project over so I could add the required number of commits. When you’re working on a simple project like I was, one that no one else would check out or contribute to, it can be less than intuitive to remember to commit. I just wanted my project to work as quickly as possible. I know now that I was probably taking the wrong approach to learning. Because moving into tech, I’d be working collaboratively, and these tools could be incredibly helpful to ensuring that collaborative relationships worked well. Hopefully, this beginner’s guide to Git will help you understand the usefulness of Git and how you can use it as part of your toolbox. + + + +## What is Git? +Git is a distributed version control system that allows developers to manage their source code and collaborate on projects. It allows you to track changes made to files over time, and creates a centralized repository and a comprehensive history of changes, which allows for a more seamless teamwork experience and organized code management. + +I like to think of Git as a time machine for your code. + +Imagine you're writing a book. You start with your first draft and make changes as you go along. Git acts as your trusty time machine, allowing you to travel back and forth in time, capturing each version of your story. + +Each time you make changes to your book, you create a "commit" in Git, which is kind of like taking a picture of your story at that specific moment. These commits are organized in chronological order, which gives you a timeline of your writing process. + +If you decide to experiment with a different plotline or character development, you can create a new "branch" in Git. This branch is like a parallel universe where you can make changes without affecting the main storyline. You can switch between branches, explore different ideas, and later merge them back into the main story. + +Git's version control features allow you to navigate through the history of your book effortlessly. You can compare different versions, see what changes were made, and even change back to an earlier draft if needed. + +Just like a time machine can help writers manage the evolution of their stories, Git helps developers track and manage the the changes to a codebase, collaborate with others, experiment with new features, and create a record of the project's history. + +## Benefits of Git in Collaborative Development + +Historically, collaborating on code involved manual file sharing or maintaining multiple versions. If you’re lucky, you don’t know how confusing and inefficient this often turned out to be. Git addressed these challenges by providing central code storage and records of changes. + +### Features and Benefits of Git + +1. **Decentralized Development**- With Git, each team member has their own repository on their local machine-also called a local copy-which allowed for independent work without requiring an internet connection. + +2. **Effortless Synchronization**- By cloning repositories, team members can create local copies of the codebase. This means that everyone has their own version to work on and they can use Git to share the changes between repositories. + +## Getting Started with Git +If you want to get some hands-on experience using git, check out OpenSauced's [Intro to Open Source Course](https://github.com/open-sauced/intro) or sign-up for one of our workshops that are listed on the bottom of our [#100DaysOfOSS Challenge docs](https://docs.opensauced.pizza/community/100-days-of-oss/). + +### Remote Repositories and Collaboration +Git allows for collaboration by enabling developers to work on the same codebase from remote locations. + +#### Cloning a Repository +Cloning is the process of creating a copy of a remote repository onto your local machine. When you clone a repository, you create a local version that includes the entire codebase, commit history, branches, and other repository-related information. + +``` +To clone a remote repository: +$ git clone +``` +### Branching +Branching and merging allows multiple developers to be working on the same code base at the same time and reduces the incidence of conflicts. + +``` +To create a new branch: +$ git branch +``` +You should replace `` with the name for your new branch. For example, if you want to create a branch called "feature-x", you would use the following command: + +``` +$ git branch feature-x +``` + +### Committing Changes +Committing changes is part of Git's core functionality. Remember, committing is like capturing a snapshot of what the codebase looks like at that moment. A commit message is a description of what changes you’ve made. Here's an example: + +``` +To commit changes: +$ git commit -m "Your commit message" +``` +**Scenario**: Imagine you've added a new feature and want to save your progress. By committing your changes, you create a snapshot of the code at that specific point, making it easy to track and revert if needed. + +### Pushing Changes +When you push changes, that means that you send your local code changes, commits, and branches to a remote repository. You’re updating the remote repository with your local commits and making them accessible to others who have access to the same repository. + +``` +To push changes to a remote repository: +$ git push origin +``` +By pushing changes, your saved local changes are shared with others. Other team members can then fetch and merge your changes into their local repositories, creating an up-to-date version of the project. + +### Merging and Fetching +**Merging**: Merging is the process of combining changes from one branch or commit into another branch. + +The command `git merge ` is used to merge changes from one branch into another. In this case, replace `` with the name of the branch you want to merge into your current branch. For example, if you want to merge changes from a branch named "main" into your current branch, you would use the following command: + +``` +$ git merge main +``` +**Scenario**: You're working on a team project and need to develop a new feature without interfering with the main codebase. By creating a branch, you can isolate your work, commit changes, and merge them back into the main branch when you’re ready. If updates have been made to the main branch that you need to add to your branch, you can merge those in as well. + +**Fetching**: The process of retrieving changes from a remote repository without automatically merging them into your local branch. When you fetch, Git compares the commit history between your local repository and the remote repository, identifying any new commits or branches in the remote repository that you don't have locally. +``` +To fetch changes from a remote repository: +$ git fetch +``` + +Sometimes there are merge conflicts (for example, changes to the same lines of code). When that happens, Git will ask you to manually resolve the conflicts. + +To resolve merge conflicts you’ll need to look at the conflicting sections, edit the files remove the conflict, and then commit the new changes. + +If you want to fetch and merge at the same time-which is convenient but allows for less flexibility-you can run this command: +``` +$ git pull origin +``` + +### Git Stash +Imagine you’re in the middle of working on a feature branch, but you suddenly need to switch to another branch for a bug fix. Instead of committing unfinished changes or losing them, you can use Git stash to temporarily save your modifications. This lets you to switch to the bug fix branch, address the issue, and then return to your feature branch and apply the saved stash to continue working from where you left off. + + To stash your changes, run the following command: +``` + $ git stash save "Stash message" +``` +To see a list of your stashes, you can use the command: + +``` +$ git stash list +``` +When you're ready to apply your stashed changes back to your working directory, use the command: +``` +$ git stash apply +``` +If you have multiple stashes, you can specify a specific stash using its ID or index (`git stash apply stash@{2}`). + +If you no longer need a stash, you can remove it from your stash list by running: +``` +$ git stash drop +``` +To apply a stash and remove it from the stash list in one step, you can use the command: +``` +$ git stash pop +``` +This is equivalent to running git stash apply followed by git stash drop for the most recent stash. + +### Git Rebase +Say you have been working on a feature branch for a while, but during that time, the main branch has had several new commits. Before merging your feature branch, you can use Git rebase to incorporate the latest changes from the main branch into your branch. This makes sure your feature branch is up to date and avoids potential conflicts during the merge process. + +Here's an overview of how to use Git rebase: + +1. **Start a Rebase**: To start a rebase, make sure you are on the branch that you want to apply the changes to (the target branch). Then, run the following command: + ``` + $ git rebase + ``` +Make sure you replace `` with the name of the branch containing the commits you want to apply onto the target branch. + +2. **Resolve Conflicts**: During the rebase process, Git may encounter conflicts if there are conflicting changes between the commits being applied and the existing commits on the target branch. Git will pause the rebase and ask you to resolve these conflicts manually. You can use Git's conflict resolution tools, such as editing the conflicting files, selecting the desired changes, and using `git add` to mark the conflicts as resolved. + +3. **Continue the Rebase**: After resolving conflicts for a particular commit, you can continue the rebase process by running: + ``` + $ git rebase --continue + ``` + This will apply the resolved commit and proceed with the remaining commits in the sequence. + +4. **Abort the Rebase**: If you decide to cancel the rebase, you can abort the rebase by running: + ``` + $ git rebase --abort + ``` +This will revert your branch to its state before the rebase started. + +It's important to note that Git rebase rewrites the commit history by applying the changes from one branch on top of another branch. + +There’s a lot more that you can do with Git, and I know it might seem overwhelming, but think of it like a toolbox. There’s lots of different tools in there and you might only know how to use the screwdriver in the hammer, but as you progress through different projects, you can continue to learn how to use the other tools in there. And when you do, you’ll find that collaborating on projects becomes easier because you’re using the right tools. diff --git a/blog/2023/2023-07-24-setting-goals-for-your-open-source-contributions.md b/blog/2023/2023-07-24-setting-goals-for-your-open-source-contributions.md new file mode 100644 index 00000000..3519f857 --- /dev/null +++ b/blog/2023/2023-07-24-setting-goals-for-your-open-source-contributions.md @@ -0,0 +1,67 @@ +--- +title: Setting Goals for Your Open Source Contributions +tags: [] +authors: BekahHW +slug: setting-goals-for-your-open-source-contributions- +description: "Discover the power of open-source software with #100DaysOfOSS challenge! Explore, learn, and grow while contributing to the vibrant open-source community. Join now and embark on an enriching journey into the world of collaboration and innovation." +--- + +We are very excited to kick off [#100DaysOfOSS](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k), a challenge where no matter where you are on your tech journey you can deepen your knowledge and understanding of the world of open-source software. Whether or not you plan on participating, we want to provide resources for anyone interested in growing their experience through open source. A great way to make progress and to grow is by starting with some goal setting and then exploring the different paths you can take. The first part of this post should help you to set those goals, and the second will go into more detail about the types of paths you can take as part of your open source journey. + + + +## Open Source Goal Setting Framework + +You’re more likely to succeed in what you do if you if you set goals and you create accountability. I know, that stuff takes time, and if you’re like me, sometimes you just want to jump in and explore without taking the time to set up a plan. That’s totally fine and a valid approach, but if there’s something you’re aiming for like getting a job, a promotion, or growing a certain skillset, taking that time to set some goals will allow you to be more efficient. Here’s a framework I use to help me set goals that I’ve adapted for your open source journey: + +1. **Self-Assessment and Skill Evaluation**. Reflect on your current skill set, interests, and past experiences in open-source. Where have you done well? Where do you want to improve? If you’ve never contributed to open source, that’s a great place to start: with a fresh page! Consider what your current skillset is and how you can translate that to open source. Are you good at writing, working with data, css, communication? All of these can be a part of your open source journey. + +2. **Define Specific and Measurable Goals**. Set clear, achievable objectives for the challenge. Do you want to get better at writing? Then maybe your goal is to write a blog post once a month during the challenge. Do you want to improve your understanding of how to use APIs? Make a goal to explore different open source projects that help you make progress on that goal. Do you want to find a job? What skills do you need to deepen or demonstrate as part of that search? For example, if one of your weaknesses is writing tests, you might set a goal to explore three open source testing frameworks and write tests in each of those frameworks. + +3. **Break Goals into Milestones**. Divide your overarching goals into smaller milestones that can be achieved within a week or two. Setting milestones will help you to see the progress that you’re making and help you maintain motivation. + +4. **Research and Plan**. Research potential open-source projects or communities that align with your goals. Familiarize yourself with their contribution guidelines, existing issues, an opportunities that align with your goals. + +5. **Prioritize and Time Management**. Prioritize your goals and create a schedule that divides time for contributions, learning, and community engagement. Remember, the goal of #100DaysOfOSS is to help you grow. You don’t want to burn out. So be realistic about the time that you have to devote to open source projects. And remember, it’s ok and good to schedule days off as part of your schedule. + +6. **Set Accountability Measures**. Establish ways to track your progress, such as using our [journal template](https://github.com/open-sauced/100-days-of-oss-template), adding [a highlight to your OpenSauced profile](https://insights.opensauced.pizza/feed), and/or using the #100DaysOfOSS hashtag on social media. You can also share your goals in the [OpenSauced Discord](https://discord.gg/opensauced) for added support. + +7. **Embrace Flexibility**. Stay open to adjusting your goals or setting new ones as you go along with the challenge. You might find there are new opportunities, that you need a break, or that you’re able to spend more time than you initially anticipated. + +8. **Regularly Evaluate and Adjust**. Continuously evaluating your progress is an important part of the process of learning, self-discovery, and participating in a way that works for you. Adjust your goals and milestones as you need to. + +9. **Celebrate Achievements**. We love to see people celebrating their successes, no matter how small. We want to be there to cheer you on and for you to use them as motivation to keep pushing forward. + +## What are some paths I can take? +There are a lot of different ways to approach this challenge or growing as an open source contributor. + +### Goal 1: General Exploration +Explore open-source projects that interest you and understand their goals and development processes. You might do this by making small contributions, fixing bugs, improving documentation, submitting feature requests, writing about your experience, or creating guides or demos. Take some time to engage with the project's community for guidance and feedback, and consider making contributions to different areas. Make sure you reflect on your experiences, identify areas for further exploration, and adjust your focus as you learn more about what interests you. + +#### Additional Resources + +- [Practical advice for finding GitHub issues to work on](https://dev.to/opensauced/practical-advice-for-finding-github-issues-to-work-on-2g4o) +- [Choose Your Own Adventure in Open Source: Paths to Success](https://dev.to/opensauced/choose-your-own-adventure-in-open-source-paths-to-success-167p) + +### Goal 2: Goal to Get a Job +This is a great way to enhance your portfolio, contribute meaningfully to projects, and network with potential employers. As part of this process, make sure you assess your skills, research open-source projects aligned with the job you want to have, make meaningful contributions, and engage with the community, This part of the journey should allow you to polish your portfolio, update your resume, and network with potential employers as you make contributions to different repositories. +#### Additional Resources +- [How to Talk About Your Open Source Experience in a Tech Interview +](https://dev.to/opensauced/how-to-talk-about-your-open-source-experience-in-a-tech-interview-3l96) +- [How I Got Hired Contributing to open source projects](https://dev.to/opensauced/how-i-got-hired-contributing-to-open-source-projects-546i) + +### Goal 3: To Mentor +Identify projects or open source communities that are welcoming new contributors. As part of this process, think about how you can engage newcomers, offer guidance, and provide regular support. Make sure you build in frequent evaluations to identify the impact of your mentorship. And if you’re open to mentorship, feel free to comment at the bottom of this post! + +### Goal 4: To Maintain and Onboard New Contributors +If you don’t have your own project, select a project you're excited about, learn about the maintenance and onboarding processes. Another great way to help new contributors is to triage and address issues. Take this opportunity to collaborate with core contributors, propose improvements, and share your insights. + +### Goal 5: To Level Up Your Skill Set +Identify specific skills to focus on, look for issues that will challenge you beyond your current skill level. Look at projects that provide feedback and a community that can support or mentor you. Remember that your skill set isn’t just your technical skills. Communication is a huge part of showcasing your skills. Be sure to work on communicating with maintainers, asking questions, and imagining yourself as part of the team. + +#### Additional Resources +- [Building Your DevRel Resume with Open Source](https://dev.to/opensauced/building-your-devrel-resume-with-open-source-4km3) + +`#100DaysOfOSS` is an opportunity to be a part of the open source community, get support from others, and to set and accomplish goals. If you haven’t signed up yet, you can Sign up with OpenSauced to receive a coupon code for 12 months of free access to all OpenSauced's paid features, and for the chance to opt in to receive updates, event invites, and resources to help you succeed or if you want to get started without signing up, you can tweet out your commitment today or share on your platform of choice! + +Let’s embrace the challenge together, cheer each other on as part of the community, and spend time finding new opportunities for growth and learning. Don’t forget to share your progress using the hashtag #100DaysOfOSS on whatever platform you’re on and inspire others to join the journey. diff --git a/blog/2023/2023-07-27-open-source-abcs-bug.md b/blog/2023/2023-07-27-open-source-abcs-bug.md new file mode 100644 index 00000000..1cb56225 --- /dev/null +++ b/blog/2023/2023-07-27-open-source-abcs-bug.md @@ -0,0 +1,19 @@ +--- +title: "Open Source ABCs: Bug" +tags: [] +authors: BekahHW +slug: open-source-abcs-bug-1god +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to Day 5 of our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "B" for Bug. + + + +**Bug**: A bug refers is an error, flaw, or defect in code that impacts the proper functioning of the software. Open-source projects often rely on community contributions to identify and fix bugs. + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "B"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. diff --git a/blog/2023/2023-07-31-keeping-your-branch-up-to-date-and-handling-merge-conflicts-while-waiting-for-pr-reviews.md b/blog/2023/2023-07-31-keeping-your-branch-up-to-date-and-handling-merge-conflicts-while-waiting-for-pr-reviews.md new file mode 100644 index 00000000..c4b32f87 --- /dev/null +++ b/blog/2023/2023-07-31-keeping-your-branch-up-to-date-and-handling-merge-conflicts-while-waiting-for-pr-reviews.md @@ -0,0 +1,120 @@ +--- +title: Keeping Your Branch Up to Date and Handling Merge Conflicts While Waiting for PR Reviews +tags: [] +authors: BekahHW +slug: keeping-your-branch-up-to-date-and-handling-merge-conflicts-while-waiting-for-pr-reviews +description: " Learn how to keep your branch up to date and to handle Git merge conflicts in this step-by-step guide. " +--- + +I’ve been running an Intro to Open Source workshop for a couple of months now, and one of the biggest challenges for participants often dealing with is keeping their branch up to date and managing merge conflicts. Listen, if you see that “merge conflicts” message and you panic, you’re not alone. I may or may not have used the strategy of deleting my entire local repository, forking, recloning, and redoing my code to avoid navigating merge conflicts more than once. Luckily, there are much better ways of dealing with updating your branch and merge conflicts than that. If you’ve ever felt that panic and wanted to burn it all down, take a deep breath and read the post below that walks you through the process of keeping your branch up to date while waiting for reviews. Keeping your branch in sync with the main repository helps to avoid conflicts and create a smooth(er) merging process. + + + +If you want to follow the steps below, I’ll be focusing on the scenario where you've forked and cloned the [guestbook repository](https://github.com/open-sauced/guestbook) and are adding yourself using a CLI tool, but this is generally applicable to staying up to date. + +## Identifying Merge Conflicts +![This is fine burning gif](https://media.giphy.com/media/NTur7XlVDUdqM/giphy.gif) +Before making any updates to your branch, it's important to check for merge conflicts. Merge conflicts occur when changes in the branch of the repository that you're asking to merge into conflict with your local changes. +When you create a pull request to merge your changes into a specific branch of the repository, Git will check for conflicts between your changes and the latest changes in that specific branch. If there are conflicting changes, Git will raise a merge conflict, indicating that manual intervention is required to resolve the discrepancies between the two sets of changes. + +To identify merge conflicts, follow these steps: + +- Ensure you are on your feature branch–the branch you’re trying to merge your changes into: +``` +git checkout +``` + +- Fetch the latest changes from the main repository: +``` +git fetch upstream +``` + +- Compare your branch with the main repository's main branch: +``` +git diff upstream/main +``` +Any conflicting lines will be highlighted in the output, indicating potential merge conflicts. + +For our `guestbook` repository, if you’ve created a PR, you can scroll to the bottom of the PR and see whether or not you have conflicts. If you do, it will look like this if you have conflicts: + +![merge conflicts with the all-contributors file](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4ivmzbnnhv5aocfn2lw.png) + + +## Keeping Your Branch Updated +To keep your branch up to date with the latest changes from the main repository, there are a couple of different approaches. I think GitHub has a really user friendly way to keep it updated. + +When you look at your fork, it will let you know if you’re behind. If you are, you can choose to sync your fork with the branch you’ve forked off of like this: + + +![syncing a fork on GitHub](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d1nwr5qki5g4kxmq6c07.gif) + +If you want to use git, you can do it like this: +- Stash or commit your local changes (if any): +``` +git stash save "Your descriptive stash message" # Or commit your changes +``` + +- Pull the latest changes from the main repository's master branch: +``` +git pull upstream +``` + +- Apply your stashed changes (if any) back to your branch: +``` +git stash apply +``` + +> If you want to learn more about Git commands, check out the [previous post](https://dev.to/opensauced/the-power-of-git-a-guide-to-collaborative-version-control-dl6). + + +### Resolving Merge Conflicts + + +After pulling the latest changes, Git may detect conflicts between the changes you’ve made and the main repository's changes. I want to emphasize that if you see merge conflicts, don’t feel like you’ve done something wrong. There’s a roadblock, and now you just need to figure out how to unblock it. For example, you might see something like this: + +![image of code with conflicts](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qk1yv7g0nctai5oc3ijv.png) + + +Here are some steps you can use to resolve merge conflicts: +1. Remember, conflicts are a natural part of collaboration. Open the conflicted files using a text editor and look for the conflict markers `(<<<<<<<, =======, and >>>>>>>)` to understand where the conflicting changes are. +2. Edit the conflicting section, removing the conflict markers and deciding which changes to keep. Create a version that incorporates the best of both changes if that aligns with the project's goals. +3. After resolving conflicts, save the file and stage it. +``` +git add +``` +4. Commit the changes. +``` +git commit -am "Resolve merge conflicts with upstream" +``` +### Preparing Your Pull Request +As you work through the issue and keep your branch updated, your pull request should be in good shape for merging. A couple of things to keep in mind: + +1. Test your changes and add relevant documentation. + +2. Make your pull request descriptive and provide context for the changes you've made–you can use the [OpenSauced chrome extension](https://opensauced.ai/) to generate the first draft of your PR description! + +3. Sync your fork and/or rebase your feature branch on the latest upstream branch before creating the pull request. + +``` +git fetch upstream +git rebase upstream/main +``` + +## Submitting Your Pull Request +With your branch up to date and conflicts resolved, it's time to submit your pull request. The maintainers of the repository will review your changes and, if everything looks good, merge them into the main repository. + +When you’ve submitted your PR to our repository, you should see all checks passing and no indications of merge conflicts, like this: + + +![passing tests and no conflicts message](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wnp2nro83nuj6tovbwd.png) + + +### Handling Feedback +Be prepared to receive feedback from the maintainers and community members. This is an opportunity to improve your contribution and to showcase your communication skills. Make the necessary updates based on the feedback and push them to your feature branch. The pull request will automatically update with the new changes. + +If you want to learn more about what happens when you submit pull requests, check out: + +[https://dev.to/opensauced/what-happens-after-you-submit-a-pr-to-an-open-source-project-4ed1](https://dev.to/opensauced/what-happens-after-you-submit-a-pr-to-an-open-source-project-4ed1) + + +You might find that you need to update your branch more than once when you’re waiting to get your PR merged. That’s ok. What’s important is that you know how to do it now. By following these steps, you can contribute without that panic of not knowing what to do when you see that merge conflict message. If you still panic a little, that’s ok. And if you try to fix it and you’re still having trouble, reach out to a community, a maintainer, or a mentor. There’s lots of people out there willing to help. You just need to ask for it. diff --git a/blog/2023/2023-08-01-open-source-abcs-collaboration.md b/blog/2023/2023-08-01-open-source-abcs-collaboration.md new file mode 100644 index 00000000..591a724d --- /dev/null +++ b/blog/2023/2023-08-01-open-source-abcs-collaboration.md @@ -0,0 +1,19 @@ +--- +title: "Open Source ABCs: Collaboration" +tags: [] +authors: BekahHW +slug: open-source-abcs-collaboration +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to Day 9 of our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "C" for Collaboration. + + + +**Collaboration**: Collaboration is at the heart of open source. It's the cooperative effort among developers, contributors, and users to improve and enhance open source projects through shared knowledge and contributions. + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "C"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. diff --git a/blog/2023/2023-08-03-open-source-abcs-documentation.md b/blog/2023/2023-08-03-open-source-abcs-documentation.md new file mode 100644 index 00000000..e5b3d902 --- /dev/null +++ b/blog/2023/2023-08-03-open-source-abcs-documentation.md @@ -0,0 +1,19 @@ +--- +title: "Open Source ABCs: Documentation" +tags: [] +authors: BekahHW +slug: open-source-abcs-documentation +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to Day 11 of our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "D" for Documentation. + + + +**Documentation**: Documentation plays an important role in open-source projects. It includes guidelines, tutorials, and explanations that help users and developers understand and utilize the software effectively. + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "D"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. diff --git a/blog/2023/2023-08-07-you-dont-need-a-mentor-embracing-the-power-of-community.md b/blog/2023/2023-08-07-you-dont-need-a-mentor-embracing-the-power-of-community.md new file mode 100644 index 00000000..08484048 --- /dev/null +++ b/blog/2023/2023-08-07-you-dont-need-a-mentor-embracing-the-power-of-community.md @@ -0,0 +1,56 @@ +--- +title: "You Don’t Need a Mentor: Embracing the Power of Community" +tags: [] +authors: BekahHW +slug: you-dont-need-a-mentor-embracing-the-power-of-community +description: "Discover the power of community mentorship in tech. Embrace diverse perspectives, accessible knowledge, and a supportive network. " +--- + +I’ve heard the advice over and over, “find a mentor.” While having a mentor can be valuable, relying solely on one mentor isn’t the most effective approach to learning and growing. Instead, let's redefine what it means to receive mentorship to benefit the most people. What does that mean? It means that we see mentorship as daily opportunities to learn and grow with people that we may or may not have direct contact regularly. It means that we see communities as the most valuable resource for mentorship. That we can receive mentorship by interacting with people in online environments, and by seeing every conversation as an opportunity to learn something new. That we ask questions, provide feedback, and that we mentor ourselves as part of that journey. + + + +## Why Community Mentorship is Better than 1:1 Mentorship +I want to take a second to define what I mean here. When I say 1:1 mentorship, it means that you have a regular or semi-regularly scheduled time to meet with the same person for guidance and the opportunity to learn. I’m not saying you shouldn’t do this. But I am saying that community mentorship, or seeing a group of people and your interactions with them as mentorship, is better. Below you’ll find some of the reasons why. + +### Diverse Perspectives + +If you’re meeting 1:1, you’re limited to that person’s knowledge, exposure, and perspective. One of the key advantages of having a community of mentors is the diverse perspectives you’ll see and hear. Different voices and experiences provide a broader understanding of the industry, new ideas, and offer more opportunities. The community perspective can come from online communities on discord or slack, meetups, or by interacting with various authors through blogs and forums. That experience will allow you to hear a variety of viewpoints, allowing for a more well-rounded understanding of tech and best practices. + +### Supportive and Diverse Network + +Building a network can consist of peers, experienced techies, and even experts in the industry and benefit you throughout your career. Engaging with a diverse group of people in tech at all stages of the journey allows you to learn from different perspectives and also facilitates knowledge sharing, collaboration, and the formation of lasting connections that may lead to future opportunities. It becomes an opportunity to peer mentor and grow through teaching and collaborating with others, key skills we all need in tech. + +### Accessible Knowledge +What happens if you have a question that determines an important part of your tech journey and your mentor is unavailable for an extended period of time? Having the collective knowledge of a community allows for availability at all times. That means that you can seek guidance and answers to your questions whenever you need them, without being limited by a mentor's schedule. + +### Continuous Learning +Every interaction in a community is an opportunity to learn, whether that’s active or passive. Early in my career, I worked mostly 1:1 with an experienced developer. I learned a lot from that experience, but I learned the most when I actively engaged in a community. A lot of that learning came from reading slack conversations between developers. I was able to see how they asked each other questions, the processes they used to debug, and read different approaches to the same problems. Communities are a constant stream of fresh ideas and insights. + +### Supportive Environment +Community mentorship can create a continual support system. You might find that other community members have the same goals and you can support each other, sustain motivation, and get emotional support through the journey. One of the most beneficial experiences I had when I was learning to code was hearing people who were ahead of me in their journey saying that they experienced the same frustrations. I stopped feeling so alone and was able to gain confidence as they shared their stories and advice with me. + +### Continuous Opportunities for Growth +I strongly believe in horizontal mentorship–the ability to mentor at any stage. We all have our strengths and weaknesses, and you can always share those strengths to help others. Community mentorship often provides these opportunities for growth and development. You can contribute your expertise, collaborate on projects, and become a mentor yourself. + +### Resilience and Continuity +Having a community of mentors ensures that you’ll continue to be mentored even if one individual's mentorship ends. The collective support of a community empowers you to overcome challenges and setbacks. + +### Empowering Self-Directed Learning +Redefining mentorship as an amalgamation of learning experiences enables a more self-directed and proactive approach to skill development, and builds the skills you need to thrive as a person in tech who needs to problem-solve and learn to work independently. + +Rather than relying on a mentor's schedule, you can own your learning process and explore topics that interest you most at your own pace. This autonomy cultivates self-reliance. It can be challenging to discern what information is right, follows best practices, or isn’t there just for clickbait. This is where you leverage your community of mentors. Ask for recommendations and references. Let people know what’s worked for you in the past or what style of learning you find most effective. Once you’ve settled on resources, don’t forget that many of those learning resources come with a community built in. There might be a forum for the class or an async communication platform. + +The ability to create your own learning experience allows you to access the newest information, tailor your learning pace, and explore areas of tech that you most enjoy. + +If a structured learning experience isn’t for you, you can also find a particular content creator or content creators that you learn well from, and consume their content as a form of mentorship. As part of that, you might have the opportunity to ask questions, suggest future content, or let the creator know how valuable the information has been to your journey. + + +### The Power of Online Communities + +Over the last couple of years, online communities and forums have exploded with opportunity. I’m confident that there is a community that suits your needs out there already (but that doesn’t mean you can’t start your own if you can’t find one!) If you’re not sure where to start OpenSauced offers a lot of different opportunities to be part of a community and ask questions: +- [#100DaysOfOSS](https://docs.opensauced.pizza/community/100-days-of-oss/) +- [OpenSauced Discord](https://discord.gg/opensauced) +- [OpenSauced Twitter + Twitter Spaces](https://twitter.com/saucedopen) + +Actively participating in communities allows you to seek guidance, ask questions, and contribute your expertise. While mentors can provide awesome guidance, the traditional 1:1 mentorship model might not be the most effective or accessible option for everyone. Redefining mentorship to include various online resources and interactions can empower you to find your own path to success. Remember, it's not about having a single mentor; it's about building a network of support that uplifts and inspires you on your tech journey. diff --git a/blog/2023/2023-08-08-open-source-abcs-evolution.md b/blog/2023/2023-08-08-open-source-abcs-evolution.md new file mode 100644 index 00000000..13db8cd4 --- /dev/null +++ b/blog/2023/2023-08-08-open-source-abcs-evolution.md @@ -0,0 +1,19 @@ +--- +title: "Open Source ABCs: Evolution" +tags: [] +authors: BekahHW +slug: open-source-abcs-evolution +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "E" for Evolution. + + + +**Evolution**: Open-source projects are known for their evolutionary nature. As more contributors join, the software evolves over time, incorporating new features, improvements, and bug fixes. + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "E"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. \ No newline at end of file diff --git a/blog/2023/2023-08-10-open-source-abcs-fork.md b/blog/2023/2023-08-10-open-source-abcs-fork.md new file mode 100644 index 00000000..589a1aec --- /dev/null +++ b/blog/2023/2023-08-10-open-source-abcs-fork.md @@ -0,0 +1,19 @@ +--- +title: "Open Source ABCs: Fork" +tags: [] +authors: BekahHW +slug: open-source-abcs-fork +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "F" for Fork. + + + +**Fork**: Forking is the process of creating a new independent project from an existing open-source project. It allows developers to take the existing codebase in a new direction or make modifications while maintaining the original project's core principles. + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "F"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. \ No newline at end of file diff --git a/blog/2023/2023-08-14-what-does-an-open-source-triage-team-do.md b/blog/2023/2023-08-14-what-does-an-open-source-triage-team-do.md new file mode 100644 index 00000000..13c80fef --- /dev/null +++ b/blog/2023/2023-08-14-what-does-an-open-source-triage-team-do.md @@ -0,0 +1,59 @@ +--- +title: What Does an Open Source Triage Team Do? +tags: [] +authors: BekahHW +slug: what-does-an-open-source-triage-team-do +description: " Learn what it means to triage for open-source projects. Discover the responsibilities, skills, and strategies involved in efficiently managing and resolving issues to contribute effectively to the development community." +--- + +You might have seen the word triage thrown around when talking about open source. Maybe you wondered what it meant and how that role impacts open source. If we think of open source like a journey, then the role of someone on the triage team is an explorer who helps to discover hidden challenges and helps to chart a path forward. + + + +## What is Open Source Triage? +Open source triage involves evaluating and managing incoming issues and bug reports submitted by users and contributors. As a triage team member, your primary goal is to ensure that the project's issue tracker is well-organized and that reported problems receive the attention they deserve. + +In some ways, we can think of open source projects as a treasure map. A new feature release might be a small treasure. Maybe launching the product is the big X on the map. Along that map, you’ll find that there are challenges (bugs and issues) that need to be understood and categorized to make progress. A triage team member helps to understand and ask the right questions so the other explorers can continue on the journey. + + +## The Triage Team’s Responsibilities + +### Issue Triage +This means you’ll need to learn how to categorize and prioritize issues based on their severity, impact, and relevance to the project. + +For example, let’s say you’re triaging an open-source pizza delivery software project. A user reports an issue regarding incorrect pizza toppings being displayed in the order confirmation screen. To triage this issue, you carefully analyze its severity, impact, and relevance to the project. After some investigation, you identify the problem as medium severity because it affects the user experience but doesn't cause critical failures to the success of placing the order. It’s still incredibly important to the project's core functionality, so you prioritize this issue to ensure a timely resolution. + +At the time this post was written, our [Insights repo](https://github.com/open-sauced/insights/issues) had 104 open issues. Having someone there to triage the issues provides the development team with more time to work on resolving the issues. + +![OpenSauced/Insights repo issues](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/socs4044tq44nl5g937s.png) + +### Issue Verification +To verify issues, you need to replicate reported issues on your system. + +Continuing with our analogy, you encounter an issue reported by a user regarding a glitch in the pizza tracker, showing inaccurate delivery status. To verify the issue's validity, you follow the user's steps and use their order details to replicate the problem on your system. You’ll also check the software's logs to gather any other useful information. Once you’ve replicated the issue, you confirm the issue's validity and move forward. + +### Issue Management +Managing issues helps to create a more efficient development process. Understanding how to assign labels, milestones, and priorities to issues allows you to update the issue tracker to reflect the work that needs to be done and prioritized. + + +![Issue that needs triaged](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gtobroahm6hijreszog1.png)[Bug: duplicate extension logo issue that needs triaged](https://github.com/open-sauced/ai/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) + +For example, let’s say you come across an issue related to adding new pizza toppings to the menu—a request from the community. To manage this issue, you assign the appropriate labels, such as "enhancement" or "feature request." You add relevant milestones to indicate it as a target for the next software update. Because this is your most upvoted issue and your team has the capability to add this functionality, you prioritize this issue based on its popularity and the potential impact on the project's success. Throughout the process, you update the issue tracker with necessary details, providing the developers with a clear understanding of the community's desire for new pizza toppings. + +### Communication and Collaboration +Engaging with users, contributors, and maintainers, you act as a bridge between them and the development team to resolve issues + +As a triage team member for the pizza delivery software, you see an issue raised by a user who struggled with the pizza customization process in the app. You respond to the user via comments on their issue, asking clarifying questions to understand their specific difficulty. You actively collaborate with other members of the pizza software community to find possible solutions. As part of the process, you gather feedback from other users, identify common usability challenges, and discuss potential improvements with the development team. Effective communication and collaboration efforts bridge the gap between users and developers, leading to a better pizza customization experience for all users. + +## Getting Started as a Triage Team Member +If you want to grow in your open source journey, you might find that a good milestone is becoming a part of a triage team for an open source project. Here are some tips to follow that path: + +1. Choose a project you’re interested in and willing to commit to for an extended period. + +2. Check out the project's documentation, repositories, and issue tracker to understand its goals and contribution processes. + +3. Join the project's communication channels, introduce yourself, and let them know that you’re interested in becoming part of the triage team. Ask for help from experienced members. + +4. Even if you’re not a part of the team, that doesn’t mean that you can’t help. You can still offer contributors suggestions or direct them to answers if you’re able to. The key is to only do so if you know the answer. For example, maybe someone raised an issue that was already responded to. You can direct them to the previous answer. + +The triage team plays an important role in the long-term health of the project and supporting maintainers. Triage team members are the first point of contact for issues and bug reports and help to make the communication between the development team and the contributors seamless. Their work makes space for faster issue resolution, resource optimization, and knowledge sharing. It’s important to note that not all contributors have the technical expertise to contribute directly with the code. Triage creates an opportunity for non-developers to make meaningful contributions. A positive user experience often starts with the triage team. diff --git a/blog/2023/2023-08-15-open-source-abcs-git.md b/blog/2023/2023-08-15-open-source-abcs-git.md new file mode 100644 index 00000000..3d8c2e09 --- /dev/null +++ b/blog/2023/2023-08-15-open-source-abcs-git.md @@ -0,0 +1,21 @@ +--- +title: "Open Source ABCs: Git" +tags: [] +authors: BekahHW +slug: open-source-abcs-git +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "G" for Git. + + + +**Git**: Git is a popular distributed version control system widely used in open-source projects. It enables developers to collaborate, track changes, and manage source code efficiently. + +If you want to learn more about what you can do with Git, check out my [Git it! Series](https://dev.to/bekahhw/series/2398). + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "G"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. \ No newline at end of file diff --git a/blog/2023/2023-08-21-open-source-abcs-issues.md b/blog/2023/2023-08-21-open-source-abcs-issues.md new file mode 100644 index 00000000..4872b02a --- /dev/null +++ b/blog/2023/2023-08-21-open-source-abcs-issues.md @@ -0,0 +1,29 @@ +--- +title: "Open Source ABCs: Issues" +tags: [] +authors: BekahHW +slug: open-source-abcs-issues +description: "Join our #100DaysOfOSS blog series as we explore the world of Open Source Software (OSS) from A to Z! Every week, we'll discuss two new letters of the English alphabet. Share your thoughts, ideas, and favorite OSS projects for each letter. Let's celebrate the power of open source together! " +--- + +Welcome to our [#100DaysOfOSS series](https://dev.to/opensauced/100daysofoss-growing-skills-and-real-world-experience-3o5k). Until October 31, we'll be doing Open Source Software (OSS) terms from A to Z. We'll be diving into a different letter of the English alphabet, uncovering OSS concepts, and sharing our thoughts on them. + +Today, we're covering the letter "I" for Issues. + + + +**Issues**: An issue is a problem, suggestion, or task related to a repository that is tracked and managed using issue tracking systems. + +An issue can have a wide range of topics, including: + +**Bugs**: A bug report documents when software behaves unexpectedly, crashes, or produces incorrect results. Bug reports help developers identify, replicate, and fix the issues. + +**Feature Requests**: Users or contributors can propose new features, enhancements, or changes to the code or software. These requests are used to discuss and prioritize potential additions to the project. + +**Enhancements**: Similar to feature requests, these suggestions aim to improve the software's functionality, performance, or user experience. They might not introduce entirely new features but can involve refining existing ones. + +**Documentation**: Issues related to improving or clarifying the software's documentation. This could involve fixing errors, adding missing information, or making instructions more understandable. + +Now, we want to hear from you! What other OSS terms can you think of that start with the letter "I"? + +Remember to use the hashtag #100DaysOfOSS if you share on social media, and don't forget to tag us [@saucedopen](https://twitter.com/saucedopen) so we can follow along. \ No newline at end of file diff --git a/blog/2023/2023-08-22-navigating-open-source-my-journey-to-contributing-and-getting-my-first-freecodecamp-pr-accepted.md b/blog/2023/2023-08-22-navigating-open-source-my-journey-to-contributing-and-getting-my-first-freecodecamp-pr-accepted.md new file mode 100644 index 00000000..af5e03ac --- /dev/null +++ b/blog/2023/2023-08-22-navigating-open-source-my-journey-to-contributing-and-getting-my-first-freecodecamp-pr-accepted.md @@ -0,0 +1,156 @@ +--- +title: "Navigating Open Source: My Journey to Contributing and Getting My First freeCodeCamp PR Accepted" +tags: [] +authors: BekahHW +slug: navigating-open-source-my-journey-to-contributing-and-getting-my-first-pr-accepted-in-the-freecodecamp-repository +description: "Follow my journey of making my first successful pull request (PR) to the freeCodeCamp repository during a \"Build in Public\" challenge. Discover how I tackled challenges, leveraged TypeScript, and bridged communication between components to introduce category-based quizzes." +--- + +In July, I participated in a “Build in Public” monthly challenge. My goal was to contribute to an open source project that I hadn’t contributed to yet. Luckily, I found my issue pretty quickly and by one of my favorite methods: I let the community know what my goal was and they had a recommendation. [Jessica Wilkins](https://dev.to/codergirl1991) is both a member of the community sharing the challenge and a maintainer for freeCodeCamp Developer Quiz Site. When she shared the issue, I immediately said yes. I knew it would let me dust off my coding skills, have support, and contribute to an organization that I have a special connection to-this is where I started learning to code. + + + +![Jessica's message to me about the issue](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ntrdpxbrg1ego7a2ibr.png) + + +## The Repository and the Issue +- [[Feature] - Add ability for users to choose a category](https://github.com/freeCodeCamp/Developer_Quiz_Site/issues/657) + +### Context + +> “The developerquiz.org site is the companion to Learn to Code RPG Game, a visual novel game developed by freeCodeCamp to help you learn how to code. 😺” The site has over 1000+ multiple-choice questions covering a variety of topics, including HTML, CSS, JavaScript, Linux, Python, Git, SQL, IT, Quality Assurance, Agile, Security, and Computer Science Concepts. + +Prior to this issue, the questions were generated randomly. Now, because there were enough questions to populate each category, I needed to create a component that allowed the user to choose a category of questions. + +The project uses TypeScript, and I’m going to be honest, I’m still pretty new to TypeScript. I’ll talk about some of the challenges I had with it and how I navigated those challenges later though. + +## Approaching a New Codebase +I’ll give an overview of my approach, but I highly recommend Abbey Perini’s [Getting Started in a New Codebase](https://dev.to/abbeyperini/getting-started-in-a-new-codebase-e7b) as a resource for folks new to contributing. + +I have to resist the urge to just get started every time I’m in a new codebase. I know, it’s exciting jumping into the code, but it’s important to understand the organization, and repository, and to be able to run the project first. + +**1. Read the Documentation**. I took my time to read the Code of Conduct, Contributing guide, and the README. I event went back to the latter two before submitting my PR to make sure there wasn’t anything I missed. + +**2.Get the Project Running** +Using the instructions in the README, I forked and cloned the repository, and then I set up the environment locally. From there I was able to run the project as well. + +**3.Familiarize Myself with the Codebase** + +I started exploring the existing codebase to understand the project's structure, components, and overall functionality. Previously, users would select the number of questions, and a random quiz would be generated. My new component would need to come into the flow before this, so I’d have to figure out how the components were being displayed once a user made a selection. I also learned that the logic for the user’s flow was all in the `QuizTemplate` Component. + +**4. Component Implementation** +I began by creating a new `SelectCategory` component, which alloId users to pick a quiz category. I essentially copied the `SelectQuiz` component, and made updates specific to the categories. Within the `QuizTemplate` component, I import two components: `SelectCategory` and `SelectQuiz`. The `SelectCategory` component allows the user to choose a quiz category, and the `SelectQuiz` component lets the user choose the number of questions for the quiz. + + +**5. Logic & Code** +Next, I needed to add new state variables to manage the selected category and quiz length: + +```jsx +const [selectedCategory, setSelectedCategory] = useState(""); // Initialize with an empty string +const [selectedQuiz, setSelectedQuiz] = useState(0); // Initialize with 0 +``` + +In order to handle category selection, I created the `selectQuiz` function. When a user selects a category, the `selectedCategory` and `selectedQuiz` state variables update. `showOptions` gets set to `true` to show the quiz options (number of questions) and `isResults` to `false` to hide the results component initially. This reflects the current structure of what component was being rendered. + +The `selectQuiz` function also filters the questions based on the selected category using the `ALL_CATEGORIES` array and stores the filtered questions in the `filteredQuestions` state variable. + +```jsx +const selectQuiz = (category: string, index: number) => { + setSelectedCategory(category); // Set the selected category + setSelectedQuiz(selectQuizArr[index]); // Set the selected quiz length + setShowOptions(true); // Show the options for quiz length selection + setIsResults(false); // Set to false to hide the Results component + + // Filter questions based on the selected category + const filteredQuiz = ALL_CATEGORIES.filter(q => q.Category === category); + setFilteredQuestions(filteredQuiz); +}; + +``` + +I also had to modify the rendering logic to include the `SelectCategory` component for category selection. + +```jsx +return ( + <> +