<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Lauren Stephenson</title>
    <description>The latest articles on Forem by Lauren Stephenson (@compscilauren).</description>
    <link>https://forem.com/compscilauren</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F244978%2F79de385b-9fe6-4a42-bc5c-18a263857ace.jpg</url>
      <title>Forem: Lauren Stephenson</title>
      <link>https://forem.com/compscilauren</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/compscilauren"/>
    <language>en</language>
    <item>
      <title>How to organize your school projects on GitHub</title>
      <dc:creator>Lauren Stephenson</dc:creator>
      <pubDate>Mon, 31 Aug 2020 22:16:17 +0000</pubDate>
      <link>https://forem.com/compscilauren/how-to-organize-your-school-projects-on-github-3km2</link>
      <guid>https://forem.com/compscilauren/how-to-organize-your-school-projects-on-github-3km2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Cover Image by &lt;a href="https://pixabay.com/users/Memed_Nurrohmad-3307648/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2013200"&gt;Memed_Nurrohmad&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2013200"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whether you're doing your own lesson plan as a self-taught programmer, attending a bootcamp, going to a college, or are in any other learning situation, it's important to stay organized and keep track of projects you care about or need to submit.&lt;/p&gt;

&lt;p&gt;How you choose to organize your projects is up to you. I'm in my final semester of college, and I've seen it done in a variety of ways. I also see this question asked online occasionally, and it's one I asked before too. There are a few good tips I've learned, and I thought I'd share them in a short post.&lt;/p&gt;

&lt;p&gt;I currently keep my projects in GitHub repositories and will refer to that method in this article, but you can check out some good alternatives &lt;a href="https://itsfoss.com/github-alternatives/"&gt;here&lt;/a&gt; as well.&lt;/p&gt;

&lt;h1&gt;
  
  
  Public vs private repo
&lt;/h1&gt;

&lt;p&gt;Hands down, you want to make your GitHub repository private.&lt;/p&gt;

&lt;p&gt;Typically, other students are also in the class working on the project at the same time as you. If you make your repo a public one, that means everyone can see your code. That includes your classmates.&lt;/p&gt;

&lt;p&gt;Many, many, many professors and teachers will say that if someone else uses your code, you are also at fault for letting them have access to it. Doesn't matter if you intended for it or not.&lt;/p&gt;

&lt;p&gt;Even when the class is over, I wouldn't recommend making it public. Future students may copy the code, and that serves no good purpose.&lt;/p&gt;

&lt;p&gt;Plus, your class may have some special rules about whether you're allowed to make certain code public or not. It's always best to err on the side of caution and keep the repo private.&lt;/p&gt;

&lt;p&gt;If you want to show someone your code, you can always share it with them privately. A simple way to do that would be to send them the project in a zipped file via email or on the cloud (OneDrive, Google Drive, etc). If you need to work with a partner on a project, you can add them as a collaborator and that will let them access the private repo.&lt;/p&gt;

&lt;h1&gt;
  
  
  One course per repo or one project per repo?
&lt;/h1&gt;

&lt;p&gt;Should you make one GitHub repo for each programming class? And then store every project in that repo?&lt;/p&gt;

&lt;p&gt;Or is it better to make one repo for every project?&lt;/p&gt;

&lt;p&gt;Again, it's really up to you. You could try both out and see which&lt;br&gt;
one you like more.&lt;/p&gt;

&lt;p&gt;Here are a couple of pros and cons for using one repo for one class, with a sub-folder for each project.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;All the code for your class is in a single location.&lt;/td&gt;
&lt;td&gt;Harder to use the GitHub search feature for an individual project. If you search for a particular phrase, any relevant results will appear, possibly for multiple projects. This can make it harder to navigate the results.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quickly refer to the other files when working on a project in your code editor.&lt;/td&gt;
&lt;td&gt;If each project is a stand-alone project, and especially if they are unique to each other, then it may not make sense to keep them together in one repo aside from the fact that they were part of the same class curriculum.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I usually prefer to make one repo for every project. It feels more organized to me that way, generally speaking.&lt;/p&gt;

&lt;p&gt;But I have used a single repo to keep multiple projects that were part of the same class a couple of times before. In those cases the projects were either building on top of the same code (so really it was one project split into multiple), or they were just very closely related so it made sense from an organizational perspective to me.&lt;/p&gt;
&lt;h1&gt;
  
  
  The README
&lt;/h1&gt;

&lt;p&gt;Always include a README. If you have one repo for each project, then you should have one README for each of them.&lt;/p&gt;

&lt;p&gt;If you have one repo with multiple projects, I'd suggest a main README for the repo as well as one README inside each project folder.&lt;/p&gt;

&lt;p&gt;The main repo could just have the basic description of the class or types of projects, and you could even have a section that describes each project with a link to that project folder.&lt;/p&gt;
&lt;h3&gt;
  
  
  README basics
&lt;/h3&gt;

&lt;p&gt;Don't get stuck on trying to make your READMEs look perfect. Remember, you can always add onto them later. For now, just include the most basic essentials.&lt;/p&gt;

&lt;p&gt;It may depend on your project, but generally you will want the following in your project README:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Project description&lt;/li&gt;
&lt;li&gt;How to run the project&lt;/li&gt;
&lt;li&gt;Any special requirements to run it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As you work through the project or towards the end, you can add other features too. Screenshots are wonderful to include, or examples of using the project or what the output will be, and if necessary what it means.&lt;/p&gt;

&lt;p&gt;Since it's a private school project, you will probably be the only person to ever see the code. However, keep in mind that you may want to show someone your work later on (like when applying for a job). Even if you are the only person who will ever see it, it is still a good idea to document the project as if someone else may eventually see it or work on it.&lt;/p&gt;

&lt;p&gt;Writing a good README will become easier as you get more practice. Another nice thing is that after you have a README for one project, you can always copy that file and use it as a starting point for future projects.&lt;/p&gt;

&lt;p&gt;You can even use a README generator such as &lt;a href="https://github.com/kefranabg/readme-md-generator"&gt;this one&lt;/a&gt; if that makes it easier for you. For private school projects though, this probably isn't needed quite as much.&lt;/p&gt;
&lt;h3&gt;
  
  
  README usefulness
&lt;/h3&gt;

&lt;p&gt;You might not think you need a README at the time of working on the project. After all, you're well aware of how to run it while you're actually working on it. However, it may prove to be very helpful to you later on.&lt;/p&gt;

&lt;p&gt;Maybe months later you will be working on something else, and realize that you have a problem similar to one you experienced in a past project. So you want to look at it again.&lt;/p&gt;

&lt;p&gt;Well what if there is no README? You'll have to remember which project it was (perhaps solely based on the repo title) and how to run it. Even if it seems obvious to you at the time, it may not be obvious at all after you've moved on from it.&lt;/p&gt;
&lt;h3&gt;
  
  
  README template
&lt;/h3&gt;

&lt;p&gt;If you don't have any READMEs to go off of yet, I have a couple of resources for you. One is a list of &lt;a href="https://github.com/matiassingers/awesome-readme"&gt;awesome READMEs&lt;/a&gt;. This is a great source for inspiration.&lt;/p&gt;

&lt;p&gt;You can also copy the snippet below into a README.md file as a basic starting point.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Project Title

&amp;gt; Short description of project.

## Quick Start

1. Clone or download the repo
2. Run `npm install`
3. Run `npm start`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you need a cheat sheet for markdown (used for formatting README files), there is a great resource for that &lt;a href="https://www.markdownguide.org/cheat-sheet"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;How you organize your school projects is ultimately up to you. You should do whatever will help you be most successful! That can look different from person to person. If you aren't sure what that looks like for you yet, don't worry. Just try out things you think might be good, see how you feel about it, and make changes as needed.&lt;/p&gt;

&lt;p&gt;Just remember to make your school repos private and always include a basic README file. You'll thank yourself later!&lt;/p&gt;

&lt;p&gt;This article was originally published on my personal website's blog, &lt;a href="https://www.compscilauren.com/blog/how-to-organize-your-school-projects-on-github"&gt;Joy Bytes&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>github</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Lessons learned as a software intern during a pandemic</title>
      <dc:creator>Lauren Stephenson</dc:creator>
      <pubDate>Sat, 01 Aug 2020 21:53:35 +0000</pubDate>
      <link>https://forem.com/compscilauren/lessons-learned-as-a-software-intern-during-a-pandemic-1dj9</link>
      <guid>https://forem.com/compscilauren/lessons-learned-as-a-software-intern-during-a-pandemic-1dj9</guid>
      <description>&lt;p&gt;Interning is tough enough even when there isn’t a pandemic. I feel for every person who has had to stress over the well-being of their loved ones or worry a lot for their own health and safety. I’ve been extremely fortunate in that my level of pandemic-related stress has probably been average, or maybe even below-average.&lt;/p&gt;

&lt;p&gt;I just want to say that for anyone who has had to deal with a high amount of stress because of this pandemic, or any reason really, you’re not alone and it’s okay if you feel like you aren’t excelling as much as you would under regular circumstances. I’ve dealt with stressful situations and I know that sometimes just getting through the work day or school day is an accomplishment in itself. It’s hard to give it your all when you’re already dealing with so much as it is.&lt;/p&gt;

&lt;p&gt;I've been lucky to be able to spend time this summer focusing a lot on my internship, and what I want in my career. I'm lucky to have had a strong support system to help me as I navigated my virtual internship too.&lt;/p&gt;

&lt;p&gt;Everyone who helps run the summer internship program at Cerner has been absolutely amazing and gone out of their way to help everyone succeed. They provided guidance and helped us all navigate our virtual internships.&lt;/p&gt;

&lt;p&gt;I also had a ton of support from my team, other associates at Cerner, and some wonderful friends. They know who they are and I will be forever grateful to each of them.&lt;/p&gt;

&lt;p&gt;At the end of the day, I think having a strong support system and others who can help guide you is one of the best things for your career or any other major endeavor.&lt;/p&gt;

&lt;p&gt;Being an intern in a virtual setting has really made it clear to me that my career is truly in my own hands. Even from the first day of work, it was clear.&lt;/p&gt;

&lt;p&gt;It was up to me to login and figure out how to set everything up so that I could make it to that first day of training. Once I had my first real task to do, it was on me to get it done.&lt;/p&gt;

&lt;p&gt;That’s true even under regular circumstances. But when you’re alone in a room all day, it feels more apparent. There was no one to physically stop by my desk and check in with me.&lt;/p&gt;

&lt;p&gt;If anything, I think working remotely made me even more determined to do well. The last thing I wanted was for anyone to think that I wasn’t giving it my best effort.&lt;/p&gt;

&lt;p&gt;If people couldn’t physically observe me working, then I needed to make sure that they saw it in the work I was pushing out.&lt;/p&gt;

&lt;p&gt;I think success is something that looks different for everyone. What you want to prioritize is up to you and can change over time, and that’s the real beauty of it. For me, I’ve been studying for years to become a software engineer and I’m beyond excited to be so close to reaching that goal. With this being my final internship and only one more semester to go, I’ve felt easily motivated and eager to make as much progress as I reasonably can.&lt;/p&gt;

&lt;p&gt;For me, my focus is currently on my career. And I've been lucky to have a ton of inspirational people to learn from at this internship, including other interns. I’ve seen people accomplish some amazing things this summer, and it has definitely inspired me.&lt;/p&gt;

&lt;p&gt;Being committed to doing good work and finding ways to make valuable contributions helps everyone, including yourself.&lt;/p&gt;

&lt;p&gt;Everyone make mistakes sometimes. I know I did. But I think at the end of the day, if you're putting in effort, have a positive attitude, and can learn from those mistakes, you'll do great.&lt;/p&gt;

&lt;p&gt;All that said, it was also critical to know when to take a break and prevent burnout. It’s easy to lose track of time when there’s no physical disconnect between work and personal life. Living in a small apartment also meant that I couldn’t have a whole room dedicated to doing just work.&lt;/p&gt;

&lt;p&gt;I also learned that I actually feel better when I can move around occasionally. Whether it was doing some work on the couch or sitting outside when the weather was nice, sometimes a change of scenery was surprisingly helpful.&lt;/p&gt;

&lt;p&gt;Working remotely has its perks. There’s no commute. That’s the best perk in my mind. I’ve saved an impressive amount of time and money by not having to drive to and from work each day.&lt;/p&gt;

&lt;p&gt;It also has some pitfalls to avoid. Like making sure you aren’t all alone when you’re working. It’s easy to just spend the day doing work and going to meetings, but not talking to anyone outside of that.&lt;/p&gt;

&lt;p&gt;Normally you could walk down a hallway or step into the break room and talk with people. Or stop by someone’s desk to have a quick chat. That just isn’t a thing in remote work.&lt;/p&gt;

&lt;p&gt;It was also important to keep in mind that this was not the typical situation for remote work.&lt;/p&gt;

&lt;p&gt;Working remotely during a pandemic is not going to feel the same as it would under regular circumstances. So keeping an eye on how I was feeling and making sure I was doing okay was crucial.&lt;/p&gt;

&lt;p&gt;I learned how to reach out to people. Whether it was a teammate, a fellow intern friend, or someone else I’d met virtually. It could be about work, or maybe we would just catch up for a bit. It was nice to just chat occasionally, like you would if you were working in the same building.&lt;/p&gt;

&lt;p&gt;One of the best things the summer internship program involved was the Friday “lunch roulettes”. Every Friday we were assigned a new group and we could meet up to get virtual lunch together.&lt;/p&gt;

&lt;p&gt;I was able to meet lots and lots of other interns this way, and it was a blast. I even met with a few interns on other days of the week to do our own lunch get-togethers, and it was awesome.&lt;/p&gt;

&lt;p&gt;I also met a lot of people just through virtual chatting and through special events, like at the ShipIt hackathon and the DevCon conference.&lt;/p&gt;

&lt;p&gt;I wasn’t sure if I would make any friends in a remote setting like this, but I was pleasantly surprised to meet a lot of great people who I hope to stay in touch with even after the internship is over.&lt;/p&gt;

&lt;p&gt;I'm grateful to have had an internship at all this summer, and I'm especially glad that it was with Cerner. Making healthcare better is something that I find extremely meaningful, and I'm proud to have made some contributions to that through this virtual internship.&lt;/p&gt;

&lt;p&gt;Tomorrow is my last day, and even though everyone warned me it would go by fast, I’m still shocked. It may have gone by fast, but I’ve learned a great deal. I don’t know exactly what my final semester of classes will look like, or how long I’ll continue to do work remotely. But I know that this internship has made me more than prepared to adapt and take on whatever comes next.&lt;/p&gt;

&lt;p&gt;This article was originally published on my personal website's blog, &lt;a href="https://www.compscilauren.com/blog/lessons-learned-as-a-software-intern-during-a-pandemic"&gt;Joy Bytes&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>internship</category>
    </item>
    <item>
      <title>10 tips for maintaining an open source project</title>
      <dc:creator>Lauren Stephenson</dc:creator>
      <pubDate>Sat, 01 Aug 2020 21:40:08 +0000</pubDate>
      <link>https://forem.com/compscilauren/10-tips-for-maintaining-an-open-source-project-2non</link>
      <guid>https://forem.com/compscilauren/10-tips-for-maintaining-an-open-source-project-2non</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Cover Image by &lt;a href="https://pixabay.com/users/Tumisu-148124/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=5218160" rel="noopener noreferrer"&gt;Tumisu&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=5218160" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Becoming an open source project maintainer is as easy as creating a public repository on GitHub, or on any &lt;a href="https://itsfoss.com/github-alternatives/" rel="noopener noreferrer"&gt;other open source hosting services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But what can you do to make sure you're being a good maintainer?&lt;/p&gt;

&lt;p&gt;If you're familiar with &lt;a href="https://dev.to/compscilauren/why-contribute-to-open-source-and-how-to-get-started-4mf2"&gt;contributing to open source&lt;/a&gt;, you probably have an idea of what a beginner-friendly repository looks like.&lt;/p&gt;

&lt;p&gt;A lot of these tips are things that benefit new project contributors, but all of them are things that improve the experience for everyone.&lt;/p&gt;

&lt;p&gt;Here are a few things that I've learned, both as a maintainer and as someone looking to contribute to other projects.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Choose a license
&lt;/h1&gt;

&lt;p&gt;This is easy to overlook. You might think, who cares? My project is small, and I don't care what people do with my code.&lt;/p&gt;

&lt;p&gt;Well, a license doesn't just protect you or your project.&lt;/p&gt;

&lt;p&gt;It gives people confidence in using and/or contributing to your project.&lt;/p&gt;

&lt;p&gt;I've seen people online say that if your project doesn't have a license, they won't contribute to it or use your code in any of their work.&lt;/p&gt;

&lt;p&gt;If the rules aren't clear, why risk getting involved?&lt;/p&gt;

&lt;p&gt;Visit &lt;a href="https://choosealicense.com/" rel="noopener noreferrer"&gt;choosealicense.com&lt;/a&gt; to quickly and easily find out which license suits your project best. Having a license is a best practice. Don't skip this step!&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Add documentation
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbdq3onnwnnociodkv17b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbdq3onnwnnociodkv17b.png" alt="Screenshot showing list of common community-based documentation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is absolutely critical if you want anyone to contribute to your project.&lt;/p&gt;

&lt;p&gt;Nobody is going to bother with your project if you don't even have a README.&lt;/p&gt;

&lt;p&gt;Think about it. When you look at other people's projects, what's the first thing you look for? You look for written information, right? Anything that tells you what you're looking at, what it's for, how to use it.&lt;/p&gt;

&lt;p&gt;Make it easy for people to find the information they want. A good README goes a really long way.&lt;/p&gt;

&lt;p&gt;Whenever I need some inspiration, I scroll through the &lt;a href="https://github.com/matiassingers/awesome-readme" rel="noopener noreferrer"&gt;Awesome README repo&lt;/a&gt;. Definitely check it out for some fantastic content and layout ideas.&lt;/p&gt;

&lt;p&gt;Finally, go to your GitHub repo, click on the "Insights" tab, and click on the "Community" tab.&lt;/p&gt;

&lt;p&gt;This shows a list of common documentation you should have. The more of these things that you have, the friendlier your project will appear to potential contributors.&lt;/p&gt;

&lt;p&gt;Including these pieces will make it easier for people to start contributing. It will also lay out the ground rules to help you maintain a productive and positive community. Nobody wants to be in a toxic environment.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Create Issues for each task and label them
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr03cq9u1v9zeifwd7f69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr03cq9u1v9zeifwd7f69.png" alt="Screenshot of a GitHub Issues page on a GitHub repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the Issue
&lt;/h2&gt;

&lt;p&gt;When you know of a bug or feature that needs to be worked on, make a GitHub Issue for it. Encourage others to create Issues as needed.&lt;/p&gt;

&lt;p&gt;If you followed step 2, you should have Issue templates for people to use. These are helpful for you as well!&lt;/p&gt;

&lt;p&gt;Fill out the Issue with enough information so that someone could look at it and know if it's something they'd be interested in taking on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add labels
&lt;/h2&gt;

&lt;p&gt;Don't forget to add labels to your Issues. These can provide a lot of information at a quick glance.&lt;/p&gt;

&lt;p&gt;Is this Issue beginner-friendly? Is it being worked on by anyone yet? Is it a bug or is it a new feature?&lt;/p&gt;

&lt;p&gt;Help people find the answers to these questions quickly by using labels.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Share on social media and any relevant websites
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F05pl6s39ujw8kd9wk2jg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F05pl6s39ujw8kd9wk2jg.jpg" alt="A person logging into Facebook on their phone and looking at a generic website on their laptop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/FirmBee-663163/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=614213" rel="noopener noreferrer"&gt;William Iven&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=614213" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Social media is a fantastic place to learn from different perspectives, meet other coders, and share your project with potential users.&lt;/p&gt;

&lt;p&gt;Look for places that would be relevant to share your project, and follow their posting guidelines. Try not to post it so often or in such a way that it comes off as spam.&lt;/p&gt;

&lt;p&gt;You could tweet about your project, post it in various communities on Reddit, even share it on Instagram. You can bring it up in comments wherever it's relevant.&lt;/p&gt;

&lt;p&gt;You can also change up the reason behind posting. You can share it just to let people know about the project. You can also mention it but with the focus of asking for advice or feedback about a particular aspect of it. If there's a new update that's just been released, you can post about that too.&lt;/p&gt;

&lt;p&gt;You might just make posts about it from a personal account. You can also consider creating an account specifically for the project.&lt;/p&gt;

&lt;p&gt;If you opt for that second option, then when you make a post it will appear to come from the official account rather than the creator of it. This can be more enticing for users to follow, but it really just depends on the situation.&lt;/p&gt;

&lt;p&gt;If you're looking for users specifically, see if there's a website dedicated to the kind of thing your project is about.&lt;/p&gt;

&lt;p&gt;For example if you make mods for a video game, there's probably a website where you can upload your mod. You can also create your own website to showcase the project. Again it just depends on the situation.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Make the most out of Hacktoberfest
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdallh8ejseoufudm795d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdallh8ejseoufudm795d.png" alt="Hacktoberfest 2019 t-shirt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image from &lt;a href="https://www.digitalocean.com/blog/recapping-hacktoberfest-6/?" rel="noopener noreferrer"&gt;Recapping Hacktoberfest&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt; is the best opportunity of the year to attract new contributors to your project.&lt;/p&gt;

&lt;p&gt;Everyone will be out searching for projects they can contribute to, and a project with a lower barrier to entry is bound to gain some attention.&lt;/p&gt;

&lt;p&gt;If you want to make the most of this month-long spike of contributions, make sure you've followed the previous (and following) steps.&lt;/p&gt;

&lt;p&gt;This is an especially great time to be a little more active on social media. Share your project on relevant posts, and make your own posts too.&lt;/p&gt;

&lt;p&gt;If you come across a list of beginner-friendly projects and yours is indeed friendly, see if you can get yours added to the list.&lt;/p&gt;

&lt;p&gt;If you do start getting comments anywhere or contributions (yay!), make sure you're friendly in your interactions.&lt;/p&gt;

&lt;p&gt;If you get a contribution from someone but you'd like to request or make a change, that's totally fine. There's nothing wrong with politely letting them know that you have some requested changes.&lt;/p&gt;

&lt;p&gt;Remember, this is an event that attracts lots of beginner contributors. We want them to feel welcome! Don't make anyone feel bad for not knowing something or if you need them to modify part of their contribution. Be patient and kind, as you hopefully are even when it isn't Hacktoberfest.&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Assume good intent until clearly shown otherwise
&lt;/h1&gt;

&lt;p&gt;It might surprise you, but this is an easy one to mess up on.&lt;/p&gt;

&lt;p&gt;One of my first contributions got a comment on it saying that the text on a README file was too wordy. I figured that was fine, I can make it more concise. I updated the file.&lt;/p&gt;

&lt;p&gt;Someone else commented and said that the file was "quite verbose".&lt;/p&gt;

&lt;p&gt;Quite verbose? Are you serious?&lt;/p&gt;

&lt;p&gt;That hurt. I was trying to contribute something that I had put a lot of thought into, and I didn't like the phrase "quite verbose". Especially right after I had already made the text shorter.&lt;/p&gt;

&lt;p&gt;I was upset, and my response made it apparent to that person. Luckily for me, they responded kindly and we were able to work through it.&lt;/p&gt;

&lt;p&gt;It was easy for me to get hung up on that phrase they used. But I should have assumed good intent.&lt;/p&gt;

&lt;p&gt;Not everyone uses the same words to describe things. And what they said wasn't clearly intended to be toxic or hurtful. Plus, it was kind of true honestly.&lt;/p&gt;

&lt;p&gt;It's tough! You put your heart into something, and then you have to let people critique it. That's how code and other contribution reviews work.&lt;/p&gt;

&lt;p&gt;The best advice I have here, is just remember that reviews aren't an attack on your character or how good of a programmer or writer you are. It's simply a review of the contribution itself.&lt;/p&gt;

&lt;p&gt;Everyone wants whatever is best. No contribution is absolutely perfect. So try to assume good intent unless it's clearly toxic language or behavior.&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Ask a friend for feedback
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fklsdzak7e3eebmikjjas.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fklsdzak7e3eebmikjjas.jpg" alt="Three friends sitting on a blanket in the grass and looking at something on a laptop together"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/sasint-3639875/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1807505" rel="noopener noreferrer"&gt;Sasin Tipchai&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1807505" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What's better than getting advice from Internet strangers? Getting advice from a trusted friend, of course!&lt;/p&gt;

&lt;p&gt;Whether it's a question about your code, or your social media outreach, or which website layout looks best, don't forget you can always ask a friend for feedback.&lt;/p&gt;

&lt;p&gt;If your friends aren't available to help with this kind of thing, you can try to connect with someone on social media.&lt;/p&gt;

&lt;p&gt;Making friends on social media can be fun and really helpful. You'll be able to bounce ideas off each other, support each other, and ask each other for feedback.&lt;/p&gt;

&lt;p&gt;If you're going to ask for feedback from someone directly on social media, remember to be considerate. If they say no thank you, be polite and don't continue asking them.&lt;/p&gt;

&lt;p&gt;If you can't find a specific person who would be good to ask, remember you can always make a public post for anyone to comment on.&lt;/p&gt;

&lt;h1&gt;
  
  
  8. Show appreciation and share sense of ownership
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6vzo8zrp9ff0slk10v58.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6vzo8zrp9ff0slk10v58.jpg" alt="Two people shaking hands but one of the hands is coming out of the digital screen of a laptop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/geralt-9301/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=3382503" rel="noopener noreferrer"&gt;Gerd Altmann&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=3382503" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Always be kind and remember to show appreciation to the people who help you, and to the users of your project.&lt;/p&gt;

&lt;p&gt;Give contributors a sense of ownership. People care about the things they own.&lt;/p&gt;

&lt;p&gt;I don't mean that you need to literally tell people that they "own" the project. But don't make it feel like they're separated from the project either.&lt;/p&gt;

&lt;p&gt;Don't look at it as "this is MY project, MY code, MY community". Think of it as a collaborative effort by everyone. You can just use that kind of phrasing when you speak. "WE did a good job, WE have an awesome community" and so on.&lt;/p&gt;

&lt;p&gt;If you look at it as a community thing and not as a "this is all mine" kind of thing, it will show in the language you use. The language you use can make people feel a stronger sense of belonging, or it can make them feel distanced from the project.&lt;/p&gt;

&lt;h1&gt;
  
  
  9. Build with the user in mind
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz7xufjne7v5qw302fw9s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz7xufjne7v5qw302fw9s.jpg" alt="A collage showing lots of different people and phones along the middle horizontal area"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/geralt-9301/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=3148100" rel="noopener noreferrer"&gt;Gerd Altmann&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=3148100" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Remember that at the end of the day, you want your open source project to be useful to other people.&lt;/p&gt;

&lt;p&gt;Make sure it's easy enough for users to get started with your project. If you find users asking the same questions, address those frequently asked questions in the instructions or setup process.&lt;/p&gt;

&lt;p&gt;Keep in mind what your users would like to see. If they offer you feedback, listen to them and consider the things they say.&lt;/p&gt;

&lt;p&gt;Lastly, be sure to always act ethically and have their best interests at heart.&lt;/p&gt;

&lt;h1&gt;
  
  
  10. Take care of yourself
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc0vwsa76e1dizbnf5quw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc0vwsa76e1dizbnf5quw.jpg" alt="A cup of tea and a tea bag with a heart in the middle sitting on top of a journal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/photos/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=381235" rel="noopener noreferrer"&gt;Free-Photos&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=381235" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Really, truly, take care of yourself.&lt;/p&gt;

&lt;p&gt;Contributing to open source can be hard, and maintaining an active open source project is typically even harder.&lt;/p&gt;

&lt;p&gt;You'll often find open source projects with tons of open pull requests and Issues.&lt;/p&gt;

&lt;p&gt;It can happen if a project is really popular, or if the maintainer becomes overwhelmed and slows down on how many Issues or pull requests they close.&lt;/p&gt;

&lt;p&gt;Having a high number of these can get overwhelming really quickly, especially if you don't have much help.&lt;/p&gt;

&lt;p&gt;Remember to take a breath. Do what you need to in order to be okay. Your well-being comes before the project.&lt;/p&gt;

&lt;p&gt;It's definitely good to consider having a second person who can help actively maintain the project, if things start to get busy.&lt;/p&gt;

&lt;p&gt;If you're in school or have a full-time job, it can be especially challenging to manage open source projects on top of it all.&lt;/p&gt;

&lt;p&gt;Remember that you're awesome, it's good to take breaks when you feel stressed, and it's okay to ask for help when you need it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;With the right balance and support, maintaining an open source project can be an awesome experience.&lt;/p&gt;

&lt;p&gt;I hope that by keeping the above tips in mind, you'll have even more success with your project.&lt;/p&gt;

&lt;p&gt;Did I miss anything? Feel free to share your own tips below!&lt;/p&gt;

&lt;p&gt;This article was originally published on my personal website's blog, &lt;a href="https://www.compscilauren.com/blog/10-tips-for-maintaining-an-open-source-project" rel="noopener noreferrer"&gt;Joy Bytes&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>Why contribute to open source and how to get started</title>
      <dc:creator>Lauren Stephenson</dc:creator>
      <pubDate>Sat, 01 Aug 2020 21:17:44 +0000</pubDate>
      <link>https://forem.com/compscilauren/why-contribute-to-open-source-and-how-to-get-started-4mf2</link>
      <guid>https://forem.com/compscilauren/why-contribute-to-open-source-and-how-to-get-started-4mf2</guid>
      <description>&lt;p&gt;Contributing to open source is a fantastic way to gain valuable experience collaborating with others and working on a "real-world" project.&lt;/p&gt;

&lt;p&gt;This is one of my favorite topics to talk about, especially with other students at my university. Open source isn't something you typically learn about in a computer science degree program.&lt;/p&gt;

&lt;p&gt;And yet, it can be an incredibly fun and useful way to gain real-world experience with software development.&lt;/p&gt;

&lt;p&gt;It is great experience to put on your resume, and can help you land your first internship or even a full-time job. It's useful regardless of whether or not you're a student.&lt;/p&gt;

&lt;p&gt;In this article, we'll go over the basics of open source and how to find interesting projects.&lt;/p&gt;

&lt;p&gt;We'll also look at a good resource for learning how to actually make a contribution to a project.&lt;/p&gt;

&lt;p&gt;If you're already familiar with contributing to open source and you're interested in &lt;a href="https://dev.to/compscilauren/10-tips-for-maintaining-an-open-source-project-2non"&gt;maintaining your own open source project&lt;/a&gt;, feel free to check out that article instead!&lt;/p&gt;

&lt;h1&gt;
  
  
  So, what is open source?
&lt;/h1&gt;

&lt;p&gt;When software is open source, it means that anybody can look at the code.&lt;/p&gt;

&lt;p&gt;Anybody can see how it was made, and they can typically make their own copy of the entire project.&lt;/p&gt;

&lt;p&gt;They can use their copy however they want, and change the code if they want. It won't affect the original repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftulufbqy8gv86kbbrlcz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftulufbqy8gv86kbbrlcz.jpg" alt="Conference room with glass windows all around it"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/photos/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=768441" rel="noopener noreferrer"&gt;Free-Photos&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=768441" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Open source projects are like rooms that you can easily look into and walk inside. You can interact with the things inside the room.&lt;/p&gt;

&lt;p&gt;This is different from proprietary software, whose code cannot be viewed openly by the public.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fojev0r3xm39qy7preya1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fojev0r3xm39qy7preya1.jpg" alt="A locked door"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/draconianimages-182808/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2352669" rel="noopener noreferrer"&gt;John Collins&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2352669" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can think of that like the company keeping their code behind a locked door, only available to people who have access to the room.&lt;/p&gt;

&lt;p&gt;It's worth noting that neither option is guaranteed to be more secure than the other. Each option comes with its own vulnerabilities.&lt;/p&gt;

&lt;p&gt;They are simply two different approaches, each with their own pros and cons.&lt;/p&gt;

&lt;p&gt;You can find all kinds of passionate debates about which one is better online. We won't cover that debate in this article, though.&lt;/p&gt;

&lt;h1&gt;
  
  
  Who uses open source software?
&lt;/h1&gt;

&lt;p&gt;Well, pretty much everyone. There are various places on the Internet that cite different statistics. I won't cite any here, but just know that it is incredibly common both as a user and a company.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhz428216vb8jwxegwydp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhz428216vb8jwxegwydp.png" alt="Examples of open source software"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a look at all of this. Each one of these is either fully open source or involved in open source in some meaningful way.&lt;/p&gt;

&lt;p&gt;And that's not even the surface of it. There is a ton of open source software out there. Many, many tools used to develop software are open source too.&lt;/p&gt;

&lt;p&gt;It's pretty much everywhere these days.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why people care about open source
&lt;/h1&gt;

&lt;p&gt;A lot of people are deeply passionate about open source (aka FLOSS; Free Libre Open Source Software). I love this quote, from an article titled "&lt;a href="https://www.control-escape.com/linux/opensource.html" rel="noopener noreferrer"&gt;What is Free/Libre, Open Source Software?&lt;/a&gt;"&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;By sharing our improvements and ideas, pooling our resources with thousands, even millions of others around the world via the Internet, the open source community is able to create powerful, stable, reliable software, at very little cost.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's one of the coolest parts about being in the open source community. And yes, it is very much a true community. It is full of wonderful people, and many tend to care deeply about ethics and freedom.&lt;/p&gt;

&lt;p&gt;When people in the community say "free software", they aren't referring to cost. The &lt;a href="https://www.fsf.org/" rel="noopener noreferrer"&gt;Free Software Foundation&lt;/a&gt; has this to say about it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Free software developers guarantee everyone equal rights to their programs; any user can study the source code, modify it, and share the program. By contrast, most software carries fine print that denies users these basic rights, leaving them susceptible to the whims of its owners and vulnerable to surveillance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  What you get from contributing to open source
&lt;/h1&gt;

&lt;p&gt;So how does it benefit you specifically? There's a lot of value in it, but here are some of the practical highlights.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Improve as a programmer&lt;/li&gt;
&lt;li&gt;Increase confidence&lt;/li&gt;
&lt;li&gt;Experience collaborating with others&lt;/li&gt;
&lt;li&gt;Community and recognition&lt;/li&gt;
&lt;li&gt;Build something, create an impact&lt;/li&gt;
&lt;li&gt;Stand out amongst other job applicants&lt;/li&gt;
&lt;li&gt;Experience joy and satisfaction&lt;/li&gt;
&lt;li&gt;Free t-shirt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wait wait wait, free t-shirt? Where?!&lt;/p&gt;

&lt;h2&gt;
  
  
  Hacktoberfest
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fden9bbvh60ekuuql6zgk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fden9bbvh60ekuuql6zgk.png" alt="Hacktoberfest 2019 t-shirt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image from &lt;a href="https://www.digitalocean.com/blog/recapping-hacktoberfest-6/?" rel="noopener noreferrer"&gt;Recapping Hacktoberfest&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's right, you can get a cool t-shirt if you contribute to open source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt; is an event that happens every year in October to promote open source and help people learn how to get involved.&lt;/p&gt;

&lt;p&gt;Typically, if you sign up on the Hacktoberfest website, you just need to make 4 or 5 open source contributions. Do that, and you can get yourself a snazzy shirt for free! And that's free in terms of cost. ;)&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting started with GitHub
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdkcol64uzn2uraysx4y6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdkcol64uzn2uraysx4y6.png" alt="GitHub logo and several GitHub cartoon character drawings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A great website for getting started with open source software is GitHub. It’s where you and anyone else can upload their coding projects for everyone else to see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; is a popular place to go for open source projects, and it's what I'll be using for this article. That said, here are some &lt;a href="https://itsfoss.com/github-alternatives/" rel="noopener noreferrer"&gt;other open source hosting services&lt;/a&gt; that you can check out.&lt;/p&gt;

&lt;p&gt;When you contribute to someone else’s public GitHub project, you are contributing to open source. If you upload your own project to GitHub and make it public, then your project is open source!&lt;/p&gt;

&lt;p&gt;It's highly recommended that projects include licenses to protect the project maintainer and the project itself. This is more important to consider if you want to maintain your own project.&lt;/p&gt;

&lt;p&gt;If you're only looking to contribute to a project, then you should be fine if you are acting with good ethics and read their contribution guidelines.&lt;/p&gt;

&lt;h1&gt;
  
  
  Finding a project
&lt;/h1&gt;

&lt;p&gt;There are &lt;a href="https://github.blog/2018-11-08-100M-repos/" rel="noopener noreferrer"&gt;over 100 million repositories&lt;/a&gt; on GitHub! With 1.6 new repositories created every second, the options are basically limitless. So how do you choose?&lt;/p&gt;

&lt;h2&gt;
  
  
  Strategy #1: Pick a "practice" project
&lt;/h2&gt;

&lt;p&gt;This is an ideal choice if you have never made a pull request to someone else's GitHub project before.&lt;/p&gt;

&lt;p&gt;The idea is to make a contribution to a project that exists solely for getting practice with the overall process.&lt;/p&gt;

&lt;p&gt;This is useful because you don't have to worry about what you're actually contributing. It's just so you can get familiar with the process itself.&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://github.com/firstcontributions/first-contributions" rel="noopener noreferrer"&gt;First Contributions&lt;/a&gt; repo if you want to try this strategy. It's a fantastic repo for learning how to actually make a contribution to a project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhvlleydpjn41erjx2ebw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhvlleydpjn41erjx2ebw.png" alt="Screenshot showing First Contributions repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Strategy #2: Collect interesting projects over time
&lt;/h2&gt;

&lt;p&gt;This is an ideal long-term strategy.&lt;/p&gt;

&lt;p&gt;The idea is to just keep an eye out for projects that are related to something you are interested in. After all, contributing to something you actually use or appreciate is the most fun.&lt;/p&gt;

&lt;p&gt;You can find ideas on GitHub, random blogs, social media, etc.&lt;/p&gt;

&lt;p&gt;As you go about your computer/phone activities, pay attention when you come across something you think you'd like to help out as a contributor.&lt;/p&gt;

&lt;p&gt;Search online to find out if it is open source or not. If it is, there's a good chance you can find them on GitHub.&lt;/p&gt;

&lt;p&gt;If they're on GitHub, you can “star” them as a way of bookmarking them. Over time, you’ll have a unique list of interesting projects you can contribute to!&lt;/p&gt;

&lt;p&gt;Feel free to check out &lt;a href="https://github.com/CompSciLauren?tab=stars" rel="noopener noreferrer"&gt;my starred projects&lt;/a&gt; for some examples.&lt;/p&gt;

&lt;p&gt;One beginner-friendly repository I really like is the &lt;a href="https://github.com/MunGell/awesome-for-beginners" rel="noopener noreferrer"&gt;Awesome First PR Opportunities&lt;/a&gt; repo.&lt;/p&gt;

&lt;p&gt;It is exactly what it sounds like. You can find lots of great open source projects on there that are beginner-friendly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm8o8p2a8la3g59l9m0ax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fm8o8p2a8la3g59l9m0ax.png" alt="Screenshot showing the Awesome First PR repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Strategy #3: Seek out specific opportunities
&lt;/h2&gt;

&lt;p&gt;There are specific programs and meetups you can find that are all about being involved in open source. The hardest part is just finding them.&lt;/p&gt;

&lt;p&gt;If you're a student, check out &lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;Google Summer of Code&lt;/a&gt;. You can get paid to work on open source over the summer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Many students lost their internships this summer due to COVID-19.&lt;/p&gt;

&lt;p&gt;In response to this, &lt;a href="https://mlh.io/" rel="noopener noreferrer"&gt;Major League Hacking&lt;/a&gt; started the &lt;a href="https://news.mlh.io/mlh-fellowship-the-future-of-tech-internships-05-04-2020?utm_source=MLH+Master+List&amp;amp;utm_campaign=21648c1bf4-MLH_Newsletter_APR_2020_2&amp;amp;utm_medium=email&amp;amp;utm_term=0_454e60092c-21648c1bf4-60725521&amp;amp;ct=t()&amp;amp;mc_cid=21648c1bf4&amp;amp;mc_eid=d11b1ed319" rel="noopener noreferrer"&gt;MLH Fellowship&lt;/a&gt; to help students get experience.&lt;/p&gt;

&lt;p&gt;That article came out in May, and stated that they would be paying students to work on open source this summer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We’re partnering up with GitHub to launch our inaugural 12-week program for Summer 2020. We’ll be funding up to 1,000 students to work full time on major open source projects under the mentorship of experienced engineers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course these opportunities are already under way. Still, various opportunities like these will continue to pop up each year.&lt;/p&gt;

&lt;p&gt;Finally, you can also search online for open source or coder meetups.&lt;/p&gt;

&lt;p&gt;I live near Kansas City, so I checked on meetup.com and found this &lt;a href="https://www.meetup.com/Open-Source-Analytics-Kansas-city-KS/" rel="noopener noreferrer"&gt;Open Source Analytics&lt;/a&gt; group.&lt;/p&gt;

&lt;p&gt;Looks interesting! This is yet another example of how you might find open source opportunities.&lt;/p&gt;

&lt;p&gt;Remember you can also reach out to people you know, whether on social media or in-person. Your friends or coworkers might know about some really great resources.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to actually make the contribution
&lt;/h1&gt;

&lt;p&gt;So to be honest I wasted like an hour writing a tutorial and taking screenshots for this, only to realize that it wasn't really necessary.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/firstcontributions/first-contributions" rel="noopener noreferrer"&gt;First Contributions&lt;/a&gt; repo has an excellent step by step guide on their README.&lt;/p&gt;

&lt;p&gt;Definitely check it out if you want to learn how to actually make a contribution to a project!&lt;/p&gt;

&lt;h1&gt;
  
  
  Figuring out what to contribute
&lt;/h1&gt;

&lt;p&gt;It can be tempting to jump straight into the code, but hold on a minute before you do that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pro Tip: Start with documentation first. You'll learn more about the project and can find easy typos or grammar issues to fix.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is my favorite way to jump into a new open source project. Even the best documentation writers are prone to accidental typos and grammar mistakes.&lt;/p&gt;

&lt;p&gt;Sometimes a section of the documentation is just a bit vague or hard to understand.&lt;/p&gt;

&lt;p&gt;As a new contributor to the project, you can provide a fresh pair of eyes to scan the project for easily overlooked problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if the project doesn't have documentation?
&lt;/h2&gt;

&lt;p&gt;Zero documentation makes a project difficult to learn about. You could help just by creating a README for the project.&lt;/p&gt;

&lt;p&gt;It doesn't even need to be totally filled out. Just add what information you can, like the project title and a short description describing its purpose, or how to run it on your local machine.&lt;/p&gt;

&lt;p&gt;If it's a project that involves visual elements, add a screenshot or GIF showing the project in action.&lt;/p&gt;

&lt;p&gt;I did this once for someone's open source project. It was a small improvement, but even adding a simple README can go a long way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps after documentation
&lt;/h2&gt;

&lt;p&gt;The easiest way to find specific problems to solve is by searching a project’s “Issues” to see what existing problems have been documented.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3geh6hc9oip35u6zcgav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3geh6hc9oip35u6zcgav.png" alt="Screenshot of a GitHub Issues page on a GitHub repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep an eye out for labels like “beginner-friendly”, “good first issue”, “first timers only”, and so on.&lt;/p&gt;

&lt;p&gt;You can even search for specific labels across all of GitHub using the main search bar.&lt;/p&gt;

&lt;p&gt;For example, to search for all Issues on all public GitHub repositories that use the "good first issue" tag, type &lt;code&gt;is:open is:issue label:"good first issue"&lt;/code&gt; into the search bar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2g3i6o9axmzg6jzgsq3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2g3i6o9axmzg6jzgsq3y.png" alt="Screenshot showing the filter option on a GitHub repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also filter the results on any repo by clicking the "Label" dropdown on its GitHub Issues page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsstkf9yb0q4bs9dqm9cw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsstkf9yb0q4bs9dqm9cw.png" alt="Screenshot showing how to search for GitHub Issues that use a specific tag"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you work on an existing issue or just try running the project and navigating it as a user, you might find bugs or notice things that could be added or improved upon.&lt;/p&gt;

&lt;p&gt;You can create a new issue on the project to document the problem or new feature idea.&lt;/p&gt;

&lt;p&gt;This gives project maintainers a chance to discuss the issue with you and hash out any important details before getting deep into writing the solution.&lt;/p&gt;

&lt;p&gt;It's common practice to make sure there is an issue documented on the Issues page before adding the change.&lt;/p&gt;

&lt;p&gt;If no one has added the issue yet, you can add it to the Issues page yourself.&lt;/p&gt;

&lt;p&gt;Still, every project has their own way of doing things. Make sure you read their contributing guidelines before you try to get your changes added to the project.&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting an employer to notice
&lt;/h1&gt;

&lt;p&gt;Put your GitHub account link on your resume. Share it on Linkedin, Twitter, or whatever other relevant social media you use.&lt;/p&gt;

&lt;p&gt;If you have a portfolio or personal website, use that instead.&lt;/p&gt;

&lt;p&gt;Consider adding a section for open source projects on your resume, or including it under any relevant list of projects/experiences.&lt;/p&gt;

&lt;p&gt;GitHub is not a replacement for a portfolio, but it is definitely good to show employers if you don’t have a portfolio built out already.&lt;/p&gt;

&lt;p&gt;Recruiters probably won’t spend much, if any, time looking at the projects. Hiring managers (and/or hiring teams) probably will.&lt;/p&gt;

&lt;p&gt;Keep in mind, it is totally fine that your code isn’t perfect. Hiring managers aren’t looking for perfection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3pjlw3d8mnbimkz1tfum.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3pjlw3d8mnbimkz1tfum.jpg" alt="Two women shaking hands, presumably after an interview has just ended"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/styles66-8817528/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=4835116" rel="noopener noreferrer"&gt;Sue Styles&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=4835116" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Be prepared to talk about your projects and/or open source contributions during your interview.&lt;/p&gt;

&lt;p&gt;They just want to see things you’ve worked on. It makes for a good talking point that either party can bring up during the interview.&lt;/p&gt;

&lt;p&gt;Make sure the link to your GitHub goes straight to your profile page.&lt;/p&gt;

&lt;p&gt;You can add up to 6 projects to your profile page as featured repositories. Add the ones you want them to see.&lt;/p&gt;

&lt;p&gt;Don't want anyone looking at your code? Totally normal to feel that way. But most developers are never completely satisfied with their code.&lt;/p&gt;

&lt;p&gt;Something to show is usually better than nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  How open source helped me get a job
&lt;/h2&gt;

&lt;p&gt;I landed my first coding job, in part, to my GitHub profile. At the time I had maybe 6 or 7 projects, and I thought just about every one of them were awful.&lt;/p&gt;

&lt;p&gt;I had never contributed to open source at this point, but my personal projects were all open source. Anyone could look at my code.&lt;/p&gt;

&lt;p&gt;I had one project I felt was decent enough. I pinned it to my profile, and linked my GitHub profile on my resume.&lt;/p&gt;

&lt;p&gt;During the interview, my GitHub profile was brought up.&lt;/p&gt;

&lt;p&gt;I don't remember if they brought it up or I did, but the point is that it was brought up. We discussed it, and that discussion contributed to me getting hired.&lt;/p&gt;

&lt;p&gt;After I had started the job, I talked to one of the people who had interviewed me. They flat-out told me that they were glad I had linked my GitHub on my resume.&lt;/p&gt;

&lt;p&gt;I was the only one who did, and it gave them better insight into what kind of coding experience I had.&lt;/p&gt;

&lt;p&gt;And the funny thing is, they said that while they were running it they managed to break it. There were bugs in my code and it was obvious.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdh3r8oqm42tl3f122x6l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdh3r8oqm42tl3f122x6l.jpg" alt="404 written using legos"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image by &lt;a href="https://pixabay.com/users/aitoff-388338/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2129569" rel="noopener noreferrer"&gt;Andrew Martin&lt;/a&gt; from &lt;a href="https://pixabay.com/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2129569" rel="noopener noreferrer"&gt;Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Seriously, a poorly-coded project played a big role in securing my first tech job.&lt;/p&gt;

&lt;p&gt;Even though it was far from perfect, it was better than nothing.&lt;/p&gt;

&lt;p&gt;I'm sure that my overall experience level was taken into account. I wasn't far along in college yet. My only other experience was working at my community college and being a crossing guard for a year.&lt;/p&gt;

&lt;p&gt;So bare in mind that there will be many factors considered.&lt;/p&gt;

&lt;p&gt;If you have 10 years of experience but only a few beginner-level projects, maybe don't link your GitHub.&lt;/p&gt;

&lt;p&gt;But if you're looking for an internship, or an entry-level coding position, this kind of thing could be really beneficial even if you think your code isn't very good.&lt;/p&gt;

&lt;p&gt;As you get better at coding, you'll have more and more interesting projects to show employers.&lt;/p&gt;

&lt;p&gt;The code will never be perfect, but you'll continue to improve over time and it will show in your projects.&lt;/p&gt;

&lt;h1&gt;
  
  
  Creating your own open source project
&lt;/h1&gt;

&lt;p&gt;Another interesting way to get involved in open source is to start your own open source project!&lt;/p&gt;

&lt;p&gt;The basics are pretty straightforward, but there are a few different key features that tend to get overlooked when you're maintaining one for the first time.&lt;/p&gt;

&lt;p&gt;There's also the task of getting people to actually use your project. Not to mention finding people who are willing to help contribute to it.&lt;/p&gt;

&lt;p&gt;I've made plenty of mistakes along the way with my own open source projects, and I can't wait to share what I've learned with you.&lt;/p&gt;

&lt;p&gt;Next week I'll cover how to get started with your own open source project, plus some tips for success.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I hope this article has helped you understand open source better. I also hope you will give contributing a try!&lt;/p&gt;

&lt;p&gt;Even if you decide you don't want to do it regularly, it's a good thing to try at least once.&lt;/p&gt;

&lt;p&gt;Remember to check back next week if you're interested in starting your own open source project, or learning some tips for success!&lt;/p&gt;

&lt;p&gt;Have you ever contributed to open source? Do you have any recommended beginner-friendly projects that new contributors could try? Let us all know in the comments below!&lt;/p&gt;

&lt;p&gt;This article was originally published on my personal website's blog, &lt;a href="https://www.compscilauren.com/blog/why-contribute-to-open-source-and-how-to-get-started" rel="noopener noreferrer"&gt;Joy Bytes&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>Improve your Git workflow and save time with Git hooks</title>
      <dc:creator>Lauren Stephenson</dc:creator>
      <pubDate>Mon, 15 Jun 2020 14:48:49 +0000</pubDate>
      <link>https://forem.com/compscilauren/improve-your-git-workflow-and-save-time-with-git-hooks-4457</link>
      <guid>https://forem.com/compscilauren/improve-your-git-workflow-and-save-time-with-git-hooks-4457</guid>
      <description>&lt;p&gt;If you're a software developer, you probably know about Git. You might use it for version control at work or for side projects. One interesting feature you may not have used yet, at least not intentionally, is a Git hook.&lt;/p&gt;

&lt;p&gt;Git hooks are custom scripts that you can use to automate tasks that will be triggered either immediately before or after a Git command is executed.&lt;/p&gt;

&lt;p&gt;The Git book explains it best in their &lt;a href="https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks"&gt;Customizing Git - Git Hooks&lt;/a&gt; section.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Like many other Version Control Systems, Git has a way to fire off custom scripts when certain important actions occur. There are two groups of these hooks: client-side and server-side. Client-side hooks are triggered by operations such as committing and merging, while server-side hooks run on network operations such as receiving pushed commits. You can use these hooks for all sorts of reasons.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, we will cover two things.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A simple way to add a new Git hook.&lt;/li&gt;
&lt;li&gt;How to setup Git hooks for a project in a way that allows everyone to use them automatically. This means no one else will need to manually set anything up for the hooks to work.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Has this ever happened to you?
&lt;/h1&gt;

&lt;p&gt;Do you ever push your code, only to realize you forgot to run that darn formatting command? There's a Git hook for that!&lt;/p&gt;

&lt;p&gt;Do you leave little comments in your code to remind yourself of things to fix, only to commit those comments by accident? Don't worry, there's a Git hook for that too!&lt;/p&gt;

&lt;p&gt;Ever wonder why your code doesn't work after checking out a new branch, only to realize it's because you forgot to update submodules (again)? Let's "Git" hooked on Git hooks. (Ha!)&lt;/p&gt;

&lt;h1&gt;
  
  
  Stepping through a simple example
&lt;/h1&gt;

&lt;p&gt;Okay, let's see what it looks like to go through each step of adding a Git hook to a project.&lt;/p&gt;

&lt;p&gt;First we need to think of a task that we could automate. Say you like to write "FIXME" as a comment next to whatever needs to be fixed in the code. You plan to fix them before committing. Once you are finished, you remove the comment.&lt;/p&gt;

&lt;p&gt;You probably remember to fix most of them, but once in a while you lose track and accidentally commit one or two of the comments or unfinished code sections. How can we prevent this from happening?&lt;/p&gt;

&lt;p&gt;We can add a Git hook that will prevent us from successfully commiting code if it detects the phrase "FIXME" in any of the modified files.&lt;/p&gt;

&lt;p&gt;First we need to write the hook. The simplest version might look something like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jiYy1vPp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/idljxgvudvmdkguf6h1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jiYy1vPp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/idljxgvudvmdkguf6h1e.png" alt="Code Snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/CompSciLauren/awesome-git-hooks/blob/c6942b03b74d0c583a858e89b58f761157df5c93/pre-commit-hooks/search-term.hook"&gt;View this code snippet on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What this code is doing
&lt;/h3&gt;

&lt;p&gt;This is our Git hook script. A script can be written in many different languages. This one happens to be written in Bash.&lt;/p&gt;

&lt;p&gt;You always use a shebang at the top of the hook script to specify which language you are writing it in. A shebang always starts with &lt;code&gt;#!/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Our shebang is &lt;code&gt;#!/bin/bash&lt;/code&gt; because we are writing our script in Bash. Other common shebangs you might see are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;#!/usr/bin/perl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#!/usr/bin/python3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#!/usr/bin/env bash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also need to specify the phrase that we want to search for in the code. Whatever phrase you put as the value for the variable "SEARCH_TERM" is what the script will detect and then prevent from being committed.&lt;/p&gt;

&lt;p&gt;The last block of code is where we do the legwork of searching for the term and the logic for handling that. If it detects the search term anywhere in the modified files, it will display the messages we've written and then exit with a status of 1.&lt;/p&gt;

&lt;p&gt;Exit 1 means that something went wrong, so the script stops and Git will not proceed with the commit.&lt;/p&gt;

&lt;p&gt;If the search term is not detected however, then the logic inside our if-statement is ignored and it reaches the end of our script. &lt;/p&gt;

&lt;p&gt;At this point it is implied that it exits with a status of 0. Exit 0 means that the script finished successfully, and so Git will proceed with the commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Putting our script to work
&lt;/h3&gt;

&lt;p&gt;Now that our hook is written, we just need to place it in the designated hooks folder in our project that uses Git.&lt;/p&gt;

&lt;p&gt;The folder we want to navigate to is the .git/hooks folder inside our local repository. The .git folder is hidden by default, but every repository that uses Git has one. Once there, we just need to place our new script inside.&lt;/p&gt;

&lt;p&gt;We create a new file here and paste the code snippet inside. When we save it, we will name the file "pre-commit", without any file extension. Doing this will tell Git that this file is a Git hook script, and is specifically a pre-commit hook.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jiYy1vPp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/idljxgvudvmdkguf6h1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jiYy1vPp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/idljxgvudvmdkguf6h1e.png" alt="Creating a New File"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll notice there are several types of Git hooks in the .git/hooks folder by default. Each file has an example of something you can do with that type of Git hook. For a full list of the types of Git hooks available, check out the &lt;a href="https://git-scm.com/docs/githooks"&gt;Git hooks documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Great! Now we're ready to see it in action. Let's say we have a file in our project with the comment "FIXME" above a block of code we're working on.&lt;/p&gt;

&lt;p&gt;Pretending we haven't noticed that code comment, we stage our file and then commit it. Oops! Luckily, our Git hook is ready to save the day. Let's see what happens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mCxuQlwt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/opn7racyjkwmyd9zofkp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mCxuQlwt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/opn7racyjkwmyd9zofkp.png" alt="Failed Commit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our pre-commit hook was triggered automatically, and scanned the file for the phrase "FIXME". It detected the phrase and forced our commit to fail.&lt;/p&gt;

&lt;p&gt;Good thing we left a useful error message so we weren't left totally confused. Now we can either finish fixing whatever the code issue was, or if it's done then we just need to remove the comment.&lt;/p&gt;

&lt;p&gt;After we remove that comment, we can successfully commit the code.&lt;/p&gt;

&lt;p&gt;A couple of things you might be wondering. Does this work if we write "FIXME" in lowercase? What if we write it like "FIXME:" instead? Also, is this hook checking for comments only, or if the phrase found its way into a block of text inside an HTML &amp;lt;p&amp;gt; tag, would it still stop the commit?&lt;/p&gt;

&lt;p&gt;The phrase is case-sensitive based on how we wrote our hook, so in this case it needs to be all uppercase. Any characters surrounding it won't matter though, as long as it says exactly "FIXME". Our hook is only checking for that phrase, so it will work even if it is found outside of a code comment.&lt;/p&gt;

&lt;p&gt;This is a simple example, but you can create more complex hooks to automate trickier Git workflows too.&lt;/p&gt;

&lt;p&gt;You can find a variety of Git hook examples on a GitHub repository that I have linked at the bottom of this article under the Conclusion section.&lt;/p&gt;

&lt;h1&gt;
  
  
  Adding Git hooks to a team project
&lt;/h1&gt;

&lt;p&gt;Manually adding a Git hook to your project is fine, especially if it's a solo project. But what about your team's project? How can we allow everyone to benefit from your Git hooks?&lt;/p&gt;

&lt;p&gt;It's actually pretty straightforward if you use &lt;a href="https://github.com/typicode/husky"&gt;Husky&lt;/a&gt;, a tool specifically developed to make sharing Git hooks easy.&lt;/p&gt;

&lt;p&gt;Let's say you want to add automatic code formatting to your project, to help keep the code looking consistent. We can use &lt;a href="https://prettier.io/"&gt;Prettier&lt;/a&gt;, a popular formatting tool. Here are the steps you'd take.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Prettier with &lt;code&gt;npm i prettier --save-dev&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install Husky and lint-staged with &lt;code&gt;npx mrm lint-staged&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add this as another script under your package.json scripts: &lt;code&gt;"prettier": "prettier --write '**/*.js'"&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's that easy! Once these changes are added to the project, the prettier formatter will automatically run on any modified files that do not match the formatting settings.&lt;/p&gt;

&lt;p&gt;Note that the files this example checks are any that match the glob pattern &lt;code&gt;**/*.js&lt;/code&gt; which means any JavaScript files in the project.&lt;/p&gt;

&lt;p&gt;To specify what types of files you want it to check, change the glob pattern. So if, for example, you wanted it to check both JavaScript and markdown files, you would change the glob pattern to &lt;code&gt;**/*.{js, md}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can also execute &lt;code&gt;npm run prettier&lt;/code&gt; manually to run it on all current files that match the glob pattern in the project. This is useful if you want to use prettier but already have a lot of existing code that needs the formatting updated.&lt;/p&gt;

&lt;p&gt;You can find more information on automating Prettier with Git hooks on the Prettier &lt;a href="https://prettier.io/docs/en/precommit.html"&gt;pre-commit hook&lt;/a&gt; documentation.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I wanted a place to keep a list of all the useful Git hooks I've come across or written over time, and that place is my &lt;a href="https://github.com/CompSciLauren/awesome-git-hooks"&gt;Awesome Git Hooks repository on GitHub&lt;/a&gt;. Feel free to check there for Git hook ideas.&lt;/p&gt;

&lt;p&gt;Have a useful Git hook to share? Please consider contributing it to the GitHub repo, if it's not already on there. Let's help each other make the most out of Git hooks!&lt;/p&gt;

&lt;p&gt;If you don't already use Git hooks in your day to day coding, I hope you'll give it a try. Automating your Git workflow will save you time and can prevent all kinds of mistakes from happening.&lt;/p&gt;

&lt;p&gt;Have you used Git hooks before? Which ones do you use the most? Let me know what you think about hooks in the comments below!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was originally published on my personal website's blog, &lt;a href="https://www.compscilauren.com/blog/improve-your-git-workflow-and-save-time-with-git-hooks"&gt;Joy Bytes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
