<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>open source Archives - Tech Chronicles</title>
	<atom:link href="http://kostacipo.stream/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>https://kostacipo.stream/tag/open-source/</link>
	<description>Ramblings of a Tech Dude</description>
	<lastBuildDate>Thu, 29 Oct 2020 23:35:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://kostacipo.stream/wp-content/uploads/2019/12/cropped-profile-32x32.jpg</url>
	<title>open source Archives - Tech Chronicles</title>
	<link>https://kostacipo.stream/tag/open-source/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Starting an Open Source Project</title>
		<link>http://kostacipo.stream/starting-an-open-source-project/</link>
					<comments>http://kostacipo.stream/starting-an-open-source-project/#respond</comments>
		
		<dc:creator><![CDATA[Majordomo]]></dc:creator>
		<pubDate>Thu, 29 Oct 2020 23:35:32 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[open source]]></category>
		<guid isPermaLink="false">http://www.kostacipo.stream/?p=1838</guid>

					<description><![CDATA[<p>Learn more about the world of open source and get ready to launch your own project. The “what” and “why” of open source So you’re thinking about getting started with open source? Congratulations! The world appreciates your contribution. Let’s talk about what open source is and why people do it. What does “open source” mean? [&#8230;]</p>
<p>The post <a href="http://kostacipo.stream/starting-an-open-source-project/">Starting an Open Source Project</a> appeared first on <a href="http://kostacipo.stream">Tech Chronicles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2 style="text-align: justify;">Learn more about the world of open source and get ready to launch your own project.</h2>
<h2 id="the-what-and-why-of-open-source" style="text-align: justify;">The “what” and “why” of open source</h2>
<p style="text-align: justify;">So you’re thinking about getting started with open source? Congratulations! The world appreciates your contribution. Let’s talk about what open source is and why people do it.</p>
<h3 id="what-does-open-source-mean" style="text-align: justify;">What does “open source” mean?</h3>
<p style="text-align: justify;">When a project is open source, that means <strong>anybody is free to use, study, modify, and distribute your project for any purpose.</strong> These permissions are enforced through <a href="https://opensource.org/licenses">an open source license</a>.</p>
<p style="text-align: justify;">Open source is powerful because it lowers the barriers to adoption and collaboration, allowing people to spread and improve projects quickly. Also because it gives users a potential to control their own computing, relative to closed source. For example, a business using open source software has the option to hire someone to make custom improvements to the software, rather than relying exclusively on a closed source vendor’s product decisions.</p>
<p style="text-align: justify;"><em>Free software</em> refers to the same set of projects as <em>open source</em>. Sometimes you’ll also see <a href="https://en.wikipedia.org/wiki/Free_and_open-source_software">these terms</a> combined as “free and open source software” (FOSS) or “free, libre, and open source software” (FLOSS). <em>Free</em> and <em>libre</em> refer to freedom, not price.</p>
<h3 id="why-do-people-open-source-their-work" style="text-align: justify;">Why do people open source their work?</h3>
<p style="text-align: justify;">There are many reasons why a person or organization would want to open source a project. Some examples include:</p>
<ul style="text-align: justify;">
<li><strong>Collaboration:</strong> Open source projects can accept changes from anybody in the world. <a href="https://github.com/exercism/">Exercism</a>, for example, is a programming exercise platform with over 350 contributors.</li>
<li><strong>Adoption and remixing:</strong> Open source projects can be used by anyone for nearly any purpose. People can even use it to build other things. <a href="https://github.com/WordPress">WordPress</a>, for example, started as a fork of an existing project called <a href="https://github.com/WordPress/book/blob/HEAD/Content/Part%201/2-b2-cafelog.md">b2</a>.</li>
<li><strong>Transparency:</strong> Anyone can inspect an open source project for errors or inconsistencies. Transparency matters to governments like <a href="https://medium.com/@bozhobg/bulgaria-got-a-law-requiring-open-source-98bf626cf70a">Bulgaria</a> or the <a href="https://sourcecode.cio.gov/">United States</a>, regulated industries like banking or healthcare, and security software like <a href="https://github.com/letsencrypt">Let’s Encrypt</a>.</li>
</ul>
<p style="text-align: justify;">Open source isn’t just for software, either. You can open source everything from data sets to books. Check out <a href="https://github.com/explore">GitHub Explore</a> for ideas on what else you can open source.</p>
<h3 id="does-open-source-mean-free-of-charge" style="text-align: justify;">Does open source mean “free of charge”?</h3>
<p style="text-align: justify;">One of open source’s biggest draws is that it does not cost money. “Free of charge”, however, is a byproduct of open source’s overall value.</p>
<p style="text-align: justify;">Because <a href="https://opensource.org/osd-annotated">an open source license requires</a> that anyone can use, modify, and share your project for nearly any purpose, projects themselves tend to be free of charge. If the project cost money to use, anyone could legally make a copy and use the free version instead.</p>
<p style="text-align: justify;">As a result, most open source projects are free, but “free of charge” is not part of the open source definition. There are ways to charge for open source projects indirectly through dual licensing or limited features, while still complying with the official definition of open source.</p>
<h2 id="should-i-launch-my-own-open-source-project" style="text-align: justify;">Should I launch my own open source project?</h2>
<p style="text-align: justify;">The short answer is yes, because no matter the outcome, launching your own project is a great way to learn how open source works.</p>
<p style="text-align: justify;">If you’ve never open sourced a project before, you might be nervous about what people will say, or whether anyone will notice at all. If this sounds like you, you’re not alone!</p>
<p style="text-align: justify;">Open source work is like any other creative activity, whether it’s writing or painting. It can feel scary to share your work with the world, but the only way to get better is to practice &#8211; even if you don’t have an audience.</p>
<p style="text-align: justify;">If you’re not yet convinced, take a moment to think about what your goals might be.</p>
<h3 id="setting-your-goals" style="text-align: justify;">Setting your goals</h3>
<p style="text-align: justify;">Goals can help you figure out what to work on, what to say no to, and where you need help from others. Start by asking yourself, <em>why am I open sourcing this project?</em></p>
<p style="text-align: justify;">There is no one right answer to this question. You may have multiple goals for a single project, or different projects with different goals.</p>
<p style="text-align: justify;">If your only goal is to show off your work, you may not even want contributions, and even say so in your README. On the other hand, if you do want contributors, you’ll invest time into clear documentation and making newcomers feel welcome.</p>
<p style="text-align: justify;">As your project grows, your community may need more than just code from you. Responding to issues, reviewing code, and evangelizing your project are all important tasks in an open source project.</p>
<p style="text-align: justify;">While the amount of time you spend on non-coding tasks will depend on the size and scope of your project, you should be prepared as a maintainer to address them yourself or find someone to help you.</p>
<p style="text-align: justify;"><strong>If you’re part of a company open sourcing a project,</strong> make sure your project has the internal resources it needs to thrive. You’ll want to identify who’s responsible for maintaining the project after launch, and how you’ll share those tasks with your community.</p>
<p style="text-align: justify;">If you need a dedicated budget or staffing for promotion, operations and maintaining the project, start those conversations early.</p>
<h3 id="contributing-to-other-projects" style="text-align: justify;">Contributing to other projects</h3>
<p style="text-align: justify;">If your goal is to learn how to collaborate with others or understand how open source works, consider contributing to an existing project. Start with a project that you already use and love. Contributing to a project can be as simple as fixing typos or updating documentation.</p>
<h2 id="launching-your-own-open-source-project" style="text-align: justify;">Launching your own open source project</h2>
<p style="text-align: justify;">There is no perfect time to open source your work. You can open source an idea, a work in progress, or after years of being closed source.</p>
<p style="text-align: justify;">Generally speaking, you should open source your project when you feel comfortable having others view, and give feedback on, your work.</p>
<p style="text-align: justify;">No matter which stage you decide to open source your project, every project should include the following documentation:</p>
<ul style="text-align: justify;">
<li><a href="https://help.github.com/articles/open-source-licensing/#where-does-the-license-live-on-my-repository">Open source license</a></li>
<li><a href="https://help.github.com/articles/create-a-repo/#commit-your-first-change">README</a></li>
<li><a href="https://help.github.com/articles/setting-guidelines-for-repository-contributors/">Contributing guidelines</a></li>
</ul>
<p style="text-align: justify;">As a maintainer, these components will help you communicate expectations, manage contributions, and protect everyone’s legal rights (including your own). They significantly increase your chances of having a positive experience.</p>
<p style="text-align: justify;">If your project is on GitHub, putting these files in your root directory with the recommended filenames will help GitHub recognize and automatically surface them to your readers.</p>
<h3 id="choosing-a-license" style="text-align: justify;">Choosing a license</h3>
<p style="text-align: justify;">An open source license guarantees that others can use, copy, modify, and contribute back to your project without repercussions. It also protects you from sticky legal situations. <strong>You must include a license when you launch an open source project.</strong></p>
<p style="text-align: justify;">Legal work is no fun. The good news is that you can copy and paste an existing license into your repository. It will only take a minute to protect your hard work.</p>
<p style="text-align: justify;"><a href="https://choosealicense.com/licenses/mit/">MIT</a>, <a href="https://choosealicense.com/licenses/apache-2.0/">Apache 2.0</a>, and <a href="https://choosealicense.com/licenses/gpl-3.0/">GPLv3</a> are the most popular open source licenses, but <a href="https://choosealicense.com">there are other options</a> to choose from.</p>
<p style="text-align: justify;">When you create a new project on GitHub, you are given the option to select a license. Including an open source license will make your GitHub project open source.</p>
<p style="text-align: justify;"><img decoding="async" src="https://opensource.guide/assets/images/starting-a-project/repository-license-picker.png" alt="Pick a license"></p>
<p style="text-align: justify;">If you have other questions or concerns around the legal aspects of managing an open source project, <a href="https://opensource.guide/legal/">we’ve got you covered</a>.</p>
<h3 id="writing-a-readme" style="text-align: justify;">Writing a README</h3>
<p style="text-align: justify;">READMEs do more than explain how to use your project. They also explain why your project matters, and what your users can do with it.</p>
<p style="text-align: justify;">In your README, try to answer the following questions:</p>
<ul style="text-align: justify;">
<li>What does this project do?</li>
<li>Why is this project useful?</li>
<li>How do I get started?</li>
<li>Where can I get more help, if I need it?</li>
</ul>
<p style="text-align: justify;">You can use your README to answer other questions, like how you handle contributions, what the goals of the project are, and information about licenses and attribution. If you don’t want to accept contributions, or your project is not yet ready for production, write this information down.</p>
<p style="text-align: justify;">Sometimes, people avoid writing a README because they feel like the project is unfinished, or they don’t want contributions. These are all very good reasons to write one.</p>
<p style="text-align: justify;">For more inspiration, try using <a class="user-mention" href="https://github.com/dguo">@dguo</a>’s <a href="https://www.makeareadme.com/">“Make a README” guide</a> or <a class="user-mention" href="https://github.com/PurpleBooth">@PurpleBooth</a>’s <a href="https://gist.github.com/PurpleBooth/109311bb0361f32d87a2">README template</a> to write a complete README.</p>
<p style="text-align: justify;">When you include a README file in the root directory, GitHub will automatically display it on the repository homepage.</p>
<h3 id="writing-your-contributing-guidelines" style="text-align: justify;">Writing your contributing guidelines</h3>
<p style="text-align: justify;">A CONTRIBUTING file tells your audience how to participate in your project. For example, you might include information on:</p>
<ul style="text-align: justify;">
<li>How to file a bug report (try using <a href="https://github.com/blog/2111-issue-and-pull-request-templates">issue and pull request templates</a>)</li>
<li>How to suggest a new feature</li>
<li>How to set up your environment and run tests</li>
</ul>
<p style="text-align: justify;">In addition to technical details, a CONTRIBUTING file is an opportunity to communicate your expectations for contributions, such as:</p>
<ul style="text-align: justify;">
<li>The types of contributions you’re looking for</li>
<li>Your roadmap or vision for the project</li>
<li>How contributors should (or should not) get in touch with you</li>
</ul>
<p style="text-align: justify;">Using a warm, friendly tone and offering specific suggestions for contributions (such as writing documentation, or making a website) can go a long way in making newcomers feel welcomed and excited to participate.</p>
<p style="text-align: justify;">For example, <a href="https://github.com/activeadmin/activeadmin/">Active Admin</a> starts <a href="https://github.com/activeadmin/activeadmin/blob/HEAD/CONTRIBUTING.md">its contributing guide</a> with:</p>
<blockquote><p>First off, thank you for considering contributing to Active Admin. It’s people like you that make Active Admin such a great tool.</p></blockquote>
<p style="text-align: justify;">In the earliest stages of your project, your CONTRIBUTING file can be simple. You should always explain how to report bugs or file issues, and any technical requirements (like tests) to make a contribution.</p>
<p style="text-align: justify;">Over time, you might add other frequently asked questions to your CONTRIBUTING file. Writing down this information means fewer people will ask you the same questions over and over again.</p>
<p style="text-align: justify;">For more help with writing your CONTRIBUTING file, check out <a class="user-mention" href="https://github.com/nayafia">@nayafia</a>’s <a href="https://github.com/nayafia/contributing-template/blob/HEAD/CONTRIBUTING-template.md">contributing guide template</a> or <a class="user-mention" href="https://github.com/mozilla">@mozilla</a>’s <a href="https://mozillascience.github.io/working-open-workshop/contributing/">“How to Build a CONTRIBUTING.md”</a>.</p>
<p style="text-align: justify;">Link to your CONTRIBUTING file from your README, so more people see it. If you <a href="https://help.github.com/articles/setting-guidelines-for-repository-contributors/">place the CONTRIBUTING file in your project’s repository</a>, GitHub will automatically link to your file when a contributor creates an issue or opens a pull request.</p>
<p style="text-align: justify;"><img decoding="async" src="https://opensource.guide/assets/images/starting-a-project/Contributing-guidelines.jpg" alt="Contributing guidelines"></p>
<h3 id="establishing-a-code-of-conduct" style="text-align: justify;">Establishing a code of conduct</h3>
<p style="text-align: justify;">Finally, a code of conduct helps set ground rules for behavior for your project’s participants. This is especially valuable if you’re launching an open source project for a community or company. A code of conduct empowers you to facilitate healthy, constructive community behavior, which will reduce your stress as a maintainer.</p>
<p style="text-align: justify;">In addition to communicating <em>how</em> you expect participants to behave, a code of conduct also tends to describe who these expectations apply to, when they apply, and what to do if a violation occurs.</p>
<p style="text-align: justify;">Much like open source licenses, there are also emerging standards for codes of conduct, so you don’t have to write your own. The <a href="https://contributor-covenant.org/">Contributor Covenant</a> is a drop-in code of conduct that is used by <a href="https://www.contributor-covenant.org/adopters">over 40,000 open source projects</a>, including Kubernetes, Rails, and Swift. No matter which text you use, you should be prepared to enforce your code of conduct when necessary.</p>
<p style="text-align: justify;">Paste the text directly into a CODE_OF_CONDUCT file in your repository. Keep the file in your project’s root directory so it’s easy to find, and link to it from your README.</p>
<h2 id="naming-and-branding-your-project" style="text-align: justify;">Naming and branding your project</h2>
<p style="text-align: justify;">Branding is more than a flashy logo or catchy project name. It’s about how you talk about your project, and who you reach with your message.</p>
<h3 id="choosing-the-right-name" style="text-align: justify;">Choosing the right name</h3>
<p style="text-align: justify;">Pick a name that is easy to remember and, ideally, gives some idea of what the project does. For example:</p>
<ul style="text-align: justify;">
<li><a href="https://github.com/getsentry/sentry">Sentry</a> monitors apps for crash reporting</li>
<li><a href="https://github.com/macournoyer/thin">Thin</a> is a fast and simple Ruby web server</li>
</ul>
<p style="text-align: justify;">If you’re building upon an existing project, using their name as a prefix can help clarify what your project does (for example, <a href="https://github.com/bitinn/node-fetch">node-fetch</a> brings <code class="language-plaintext highlighter-rouge">window.fetch</code> to Node.js).</p>
<p style="text-align: justify;">Consider clarity above all. Puns are fun, but remember that some jokes might not translate to other cultures or people with different experiences from you. Some of your potential users might be company employees: you don’t want to make them uncomfortable when they have to explain your project at work!</p>
<h3 id="avoiding-name-conflicts" style="text-align: justify;">Avoiding name conflicts</h3>
<p style="text-align: justify;"><a href="http://ivantomic.com/projects/ospnc/">Check for open source projects with a similar name</a>, especially if you share the same language or ecosystem. If your name overlaps with a popular existing project, you might confuse your audience.</p>
<p style="text-align: justify;">If you want a website, Twitter handle, or other properties to represent your project, make sure you can get the names you want. Ideally, <a href="https://instantdomainsearch.com/">reserve those names now</a> for peace of mind, even if you don’t intend to use them just yet.</p>
<p style="text-align: justify;">Make sure that your project’s name doesn’t infringe upon any trademarks. A company might ask you to take down your project later on, or even take legal action against you. It’s just not worth the risk.</p>
<p style="text-align: justify;">You can check the <a href="http://www.wipo.int/branddb/en/">WIPO Global Brand Database</a> for trademark conflicts. If you’re at a company, this is one of the things your legal team can help you with.</p>
<p style="text-align: justify;">Finally, do a quick Google search for your project name. Will people be able to easily find your project? Does something else appear in the search results that you wouldn’t want them to see?</p>
<h3 id="how-you-write-and-code-affects-your-brand-too" style="text-align: justify;">How you write (and code) affects your brand, too!</h3>
<p style="text-align: justify;">Throughout the life of your project, you’ll do a lot of writing: READMEs, tutorials, community documents, responding to issues, maybe even newsletters and mailing lists.</p>
<p style="text-align: justify;">Whether it’s official documentation or a casual email, your writing style is part of your project’s brand. Consider how you might come across to your audience and whether that is the tone you wish to convey.</p>
<p style="text-align: justify;">Using warm, inclusive language (such as “them”, even when referring to the single person) can go a long way in making your project feel welcoming to new contributors. Stick to simple language, as many of your readers may not be native English speakers.</p>
<p style="text-align: justify;">Beyond how you write words, your coding style may also become part of your project’s brand. <a href="https://angular.io/guide/styleguide">Angular</a> and <a href="https://contribute.jquery.org/style-guide/js/">jQuery</a> are two examples of projects with rigorous coding styles and guidelines.</p>
<p style="text-align: justify;">It isn’t necessary to write a style guide for your project when you’re just starting out, and you may find that you enjoy incorporating different coding styles into your project anyway. But you should anticipate how your writing and coding style might attract or discourage different types of people. The earliest stages of your project are your opportunity to set the precedent you wish to see.</p>
<h2 id="your-pre-launch-checklist" style="text-align: justify;">Your pre-launch checklist</h2>
<p style="text-align: justify;">Ready to open source your project? Here’s a checklist to help. Check all the boxes? You’re ready to go! <a href="https://help.github.com/articles/making-a-private-repository-public/">Click “publish”</a> and pat yourself on the back.</p>
<p style="text-align: justify;"><strong>Documentation</strong></p>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox1" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox1"> Project has a LICENSE file with an open source license </label></div>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox2" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox2"> Project has basic documentation (README, CONTRIBUTING, CODE_OF_CONDUCT) </label></div>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox3" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox3"> The name is easy to remember, gives some idea of what the project does, and does not conflict with an existing project or infringe on trademarks </label></div>
<div class="clearfix mb-4" style="text-align: justify;"><input id="cbox4" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox4"> The issue queue is up-to-date, with issues clearly organized and labeled </label></div>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><strong>Code</strong></p>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox5" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox5"> Project uses consistent code conventions and clear function/method/variable names </label></div>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox6" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox6"> The code is clearly commented, documenting intentions and edge cases </label></div>
<div class="clearfix mb-4" style="text-align: justify;"><input id="cbox7" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox7"> There are no sensitive materials in the revision history, issues, or pull requests (for example, passwords or other non-public information) </label></div>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;"><strong>People</strong></p>
<p style="text-align: justify;">If you’re an individual:</p>
<div class="clearfix mb-4" style="text-align: justify;"><input id="cbox8" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox8"> You&#8217;ve talked to the legal department and/or understand the IP and open source policies of your company (if you&#8217;re an employee somewhere) </label></div>
<p style="text-align: justify;">If you’re a company or organization:</p>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox9" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox9"> You&#8217;ve talked to your legal department </label></div>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox10" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox10"> You have a marketing plan for announcing and promoting the project </label></div>
<div class="clearfix mb-2" style="text-align: justify;"><input id="cbox11" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox11"> Someone is committed to managing community interactions (responding to issues, reviewing and merging pull requests) </label></div>
<div class="clearfix mb-4" style="text-align: justify;"><input id="cbox12" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox12"> At least two people have administrative access to the project </label></div>
<h2 id="you-did-it" style="text-align: justify;">You did it!</h2>
<p style="text-align: justify;">Congratulations on open sourcing your first project. No matter the outcome, working in public is a gift to the community. With every commit, comment, and pull request, you’re creating opportunities for yourself and for others to learn and grow.</p>
<p>The post <a href="http://kostacipo.stream/starting-an-open-source-project/">Starting an Open Source Project</a> appeared first on <a href="http://kostacipo.stream">Tech Chronicles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://kostacipo.stream/starting-an-open-source-project/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Contribute to Open Source</title>
		<link>http://kostacipo.stream/how-to-contribute-to-open-source/</link>
					<comments>http://kostacipo.stream/how-to-contribute-to-open-source/#respond</comments>
		
		<dc:creator><![CDATA[Majordomo]]></dc:creator>
		<pubDate>Thu, 22 Oct 2020 13:28:18 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[open source]]></category>
		<guid isPermaLink="false">http://www.kostacipo.stream/?p=1818</guid>

					<description><![CDATA[<p>Want to contribute to open source? A guide to making open source contributions, for first-timers and for veterans. Why contribute to open source? Contributing to open source can be a rewarding way to learn, teach, and build experience in just about any skill you can imagine. Why do people contribute to open source? Plenty of [&#8230;]</p>
<p>The post <a href="http://kostacipo.stream/how-to-contribute-to-open-source/">How to Contribute to Open Source</a> appeared first on <a href="http://kostacipo.stream">Tech Chronicles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Want to contribute to open source?</h2>
<h4>A guide to making open source contributions, for first-timers and for veterans.</h4>
<h2 id="why-contribute-to-open-source">Why contribute to open source?</h2>
<p>Contributing to open source can be a rewarding way to learn, teach, and build experience in just about any skill you can imagine.</p>
<p>Why do people contribute to open source? Plenty of reasons!</p>
<h3 id="improve-software-you-rely-on">Improve software you rely on</h3>
<p>Lots of open source contributors start by being users of software they contribute to. When you find a bug in an open source software you use, you may want to look at the source to see if you can patch it yourself. If that’s the case, then contributing the patch back is the best way to ensure that your friends (and yourself when you update to the next release) will be able to benefit from it.</p>
<h3 id="improve-existing-skills">Improve existing skills</h3>
<p>Whether it’s coding, user interface design, graphic design, writing, or organizing, if you’re looking for practice, there’s a task for you on an open source project.</p>
<h3 id="meet-people-who-are-interested-in-similar-things">Meet people who are interested in similar things</h3>
<p>Open source projects with warm, welcoming communities keep people coming back for years. Many people form lifelong friendships through their participation in open source, whether it’s running into each other at conferences or late night online chats about burritos.</p>
<h3 id="find-mentors-and-teach-others">Find mentors and teach others</h3>
<p>Working with others on a shared project means you’ll have to explain how you do things, as well as ask other people for help. The acts of learning and teaching can be a fulfilling activity for everyone involved.</p>
<h3 id="build-public-artifacts-that-help-you-grow-a-reputation-and-a-career">Build public artifacts that help you grow a reputation (and a career)</h3>
<p>By definition, all of your open source work is public, which means you get free examples to take anywhere as a demonstration of what you can do.</p>
<h3 id="learn-people-skills">Learn people skills</h3>
<p>Open source offers opportunities to practice leadership and management skills, such as resolving conflicts, organizing teams of people, and prioritizing work.</p>
<h3 id="its-empowering-to-be-able-to-make-changes-even-small-ones">It’s empowering to be able to make changes, even small ones</h3>
<p>You don’t have to become a lifelong contributor to enjoy participating in open source. Have you ever seen a typo on a website, and wished someone would fix it? On an open source project, you can do just that. Open source helps people feel agency over their lives and how they experience the world, and that in itself is gratifying.</p>
<h2 id="what-it-means-to-contribute">What it means to contribute</h2>
<p>If you’re a new open source contributor, the process can be intimidating. How do you find the right project? What if you don’t know how to code? What if something goes wrong?</p>
<p>Not to worry! There are all sorts of ways to get involved with an open source project, and a few tips will help you get the most out of your experience.</p>
<h3 id="you-dont-have-to-contribute-code">You don’t have to contribute code</h3>
<p>A common misconception about contributing to open source is that you need to contribute code. In fact, it’s often the other parts of a project that are <a href="https://github.com/blog/2195-the-shape-of-open-source">most neglected or overlooked</a>. You’ll do the project a <em>huge</em> favor by offering to pitch in with these types of contributions!</p>
<p>Even if you like to write code, other types of contributions are a great way to get involved with a project and meet other community members. Building those relationships will give you opportunities to work on other parts of the project.</p>
<h3 id="do-you-like-planning-events">Do you like planning events?</h3>
<ul>
<li>Organize workshops or meetups about the project</li>
<li>Organize the project’s conference (if they have one)</li>
<li>Help community members find the right conferences and submit proposals for speaking</li>
</ul>
<h3 id="do-you-like-to-design">Do you like to design?</h3>
<ul>
<li>Restructure layouts to improve the project’s usability</li>
<li>Conduct user research to reorganize and refine the project’s navigation or menus, <a href="https://www.drupal.org/community-initiatives/drupal-core/usability">like Drupal suggests</a></li>
<li>Put together a style guide to help the project have a consistent visual design</li>
<li>Create art for t-shirts or a new logo.</li>
</ul>
<h3 id="do-you-like-to-write">Do you like to write?</h3>
<ul>
<li>Write and improve the project’s documentation</li>
<li>Curate a folder of examples showing how the project is used</li>
<li>Start a newsletter for the project, or curate highlights from the mailing list</li>
<li>Write tutorials for the project.</li>
<li>Write a translation for the project’s documentation</li>
</ul>
<h3 id="do-you-like-organizing">Do you like organizing?</h3>
<ul>
<li>Link to duplicate issues, and suggest new issue labels, to keep things organized</li>
<li>Go through open issues and suggest closing old ones</li>
<li>Ask clarifying questions on recently opened issues to move the discussion forward</li>
</ul>
<h3 id="do-you-like-to-code">Do you like to code?</h3>
<ul>
<li>Find an open issue to tackle</li>
<li>Ask if you can help write a new feature</li>
<li>Automate project setup</li>
<li>Improve tooling and testing</li>
</ul>
<h3 id="do-you-like-helping-people">Do you like helping people?</h3>
<ul>
<li>Answer questions about the project on e.g., Stack Overflow (<a href="https://stackoverflow.com/questions/18664074/getting-error-peer-authentication-failed-for-user-postgres-when-trying-to-ge">like this Postgres example</a>) or Reddit</li>
<li>Answer questions for people on open issues</li>
<li>Help moderate the discussion boards or conversation channels</li>
</ul>
<h3 id="do-you-like-helping-others-code">Do you like helping others code?</h3>
<ul>
<li>Review code on other people’s submissions</li>
<li>Write tutorials for how a project can be used</li>
<li>Offer to mentor another contributor</li>
</ul>
<h3 id="you-dont-just-have-to-work-on-software-projects">You don’t just have to work on software projects!</h3>
<p>While “open source” often refers to software, you can collaborate on just about anything. There are books, recipes, lists, and classes that get developed as open source projects.</p>
<p>For example:</p>
<ul>
<li><a class="user-mention" href="https://github.com/sindresorhus">@sindresorhus</a> curates a <a href="https://github.com/sindresorhus/awesome">list of “awesome” lists</a></li>
<li><a class="user-mention" href="https://github.com/h5bp">@h5bp</a> maintains a <a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions">list of potential interview questions</a> for front-end developer candidates</li>
<li><a class="user-mention" href="https://github.com/stuartlynn">@stuartlynn</a> and <a class="user-mention" href="https://github.com/nicole-a-tesla">@nicole-a-tesla</a> made a <a href="https://github.com/stuartlynn/puffin_facts">collection of fun facts about puffins</a></li>
</ul>
<p>Even if you’re a software developer, working on a documentation project can help you get started in open source. It’s often less intimidating to work on projects that don’t involve code, and the process of collaboration will build your confidence and experience.</p>
<h2 id="orienting-yourself-to-a-new-project">Orienting yourself to a new project</h2>
<p>For anything more than a typo fix, contributing to open source is like walking up to a group of strangers at a party. If you start talking about llamas, while they were deep in a discussion about goldfish, they’ll probably look at you a little strangely.</p>
<p>Before jumping in blindly with your own suggestions, start by learning how to read the room. Doing so increases the chances that your ideas will be noticed and heard.</p>
<h3 id="anatomy-of-an-open-source-project">Anatomy of an open source project</h3>
<p>Every open source community is different.</p>
<p>Spending years on one open source project means you’ve gotten to know one open source project. Move to a different project, and you might find the vocabulary, norms, and communication styles are completely different.</p>
<p>That said, many open source projects follow a similar organizational structure. Understanding the different community roles and overall process will help you get quickly oriented to any new project.</p>
<p>A typical open source project has the following types of people:</p>
<ul>
<li><strong>Author:</strong> The person/s or organization that created the project</li>
<li><strong>Owner:</strong> The person/s who has administrative ownership over the organization or repository (not always the same as the original author)</li>
<li><strong>Maintainers:</strong> Contributors who are responsible for driving the vision and managing the organizational aspects of the project (They may also be authors or owners of the project.)</li>
<li><strong>Contributors:</strong> Everyone who has contributed something back to the project</li>
<li><strong>Community Members:</strong> People who use the project. They might be active in conversations or express their opinion on the project’s direction</li>
</ul>
<p>Bigger projects may also have subcommittees or working groups focused on different tasks, such as tooling, triage, community moderation, and event organizing. Look on a project’s website for a “team” page, or in the repository for governance documentation, to find this information.</p>
<p>A project also has documentation. These files are usually listed in the top level of a repository.</p>
<ul>
<li><strong>LICENSE:</strong> By definition, every open source project must have an <a href="https://choosealicense.com">open source license</a>. If the project does not have a license, it is not open source.</li>
<li><strong>README:</strong> The README is the instruction manual that welcomes new community members to the project. It explains why the project is useful and how to get started.</li>
<li><strong>CONTRIBUTING:</strong> Whereas READMEs help people <em>use</em> the project, contributing docs help people <em>contribute</em> to the project. It explains what types of contributions are needed and how the process works. While not every project has a CONTRIBUTING file, its presence signals that this is a welcoming project to contribute to.</li>
<li><strong>CODE_OF_CONDUCT:</strong> The code of conduct sets ground rules for participants’ behavior associated and helps to facilitate a friendly, welcoming environment. While not every project has a CODE_OF_CONDUCT file, its presence signals that this is a welcoming project to contribute to.</li>
<li><strong>Other documentation:</strong> There might be additional documentation, such as tutorials, walkthroughs, or governance policies, especially on bigger projects.</li>
</ul>
<p>Finally, open source projects use the following tools to organize discussion. Reading through the archives will give you a good picture of how the community thinks and works.</p>
<ul>
<li><strong>Issue tracker:</strong> Where people discuss issues related to the project.</li>
<li><strong>Pull requests:</strong> Where people discuss and review changes that are in progress.</li>
<li><strong>Discussion forums or mailing lists:</strong> Some projects may use these channels for conversational topics (for example, <em>“How do I…“</em> or <em>“What do you think about…“</em> instead of bug reports or feature requests). Others use the issue tracker for all conversations.</li>
<li><strong>Synchronous chat channel:</strong> Some projects use chat channels (such as Slack or IRC) for casual conversation, collaboration, and quick exchanges.</li>
</ul>
<h2 id="finding-a-project-to-contribute-to">Finding a project to contribute to</h2>
<p>Now that you’ve figured out how open source projects work, it’s time to find a project to contribute to!</p>
<p>If you’ve never contributed to open source before, take some advice from U.S. President John F. Kennedy, who once said, <em>“Ask not what your country can do for you &#8211; ask what you can do for your country.”</em></p>
<p>Contributing to open source happens at all levels, across projects. You don’t need to overthink what exactly your first contribution will be, or how it will look.</p>
<p>Instead, start by thinking about the projects you already use, or want to use. The projects you’ll actively contribute to are the ones you find yourself coming back to.</p>
<p>Within those projects, whenever you catch yourself thinking that something could be better or different, act on your instinct.</p>
<p>Open source isn’t an exclusive club; it’s made by people just like you. “Open source” is just a fancy term for treating the world’s problems as fixable.</p>
<p>You might scan a README and find a broken link or a typo. Or you’re a new user and you noticed something is broken, or an issue that you think should really be in the documentation. Instead of ignoring it and moving on, or asking someone else to fix it, see whether you can help out by pitching in. That’s what open source is all about!</p>
<blockquote><p><a href="https://www.igor.pro.br/publica/papers/saner2016.pdf">28% of casual contributions</a> to open source are documentation, such as a typo fix, reformatting, or writing a translation.</p></blockquote>
<p>If you’re looking for existing issues you can fix, every open source project has a <code class="language-plaintext highlighter-rouge">/contribute</code> page that highlights beginner-friendly issues you can start out with. Navigate to the main page of the repository on GitHub, and add <code class="language-plaintext highlighter-rouge">/contribute</code> at the end of the URL (for example <a href="https://github.com/facebook/react/contribute"><code class="language-plaintext highlighter-rouge">https://github.com/facebook/react/contribute</code></a>).</p>
<p>You can also use one of the following resources to help you discover and contribute to new projects:</p>
<ul>
<li><a href="https://github.com/explore/">GitHub Explore</a></li>
<li><a href="https://opensourcefriday.com">Open Source Friday</a></li>
<li><a href="https://www.firsttimersonly.com/">First Timers Only</a></li>
<li><a href="https://www.codetriage.com/">CodeTriage</a></li>
<li><a href="https://24pullrequests.com/">24 Pull Requests</a></li>
<li><a href="https://up-for-grabs.net/">Up For Grabs</a></li>
<li><a href="https://contributor.ninja">Contributor-ninja</a></li>
<li><a href="https://firstcontributions.github.io">First Contributions</a></li>
<li><a href="https://www.sourcesort.com/">SourceSort</a></li>
</ul>
<h3 id="a-checklist-before-you-contribute">A checklist before you contribute</h3>
<p>When you’ve found a project you’d like to contribute to, do a quick scan to make sure that the project is suitable for accepting contributions. Otherwise, your hard work may never get a response.</p>
<p>Here’s a handy checklist to evaluate whether a project is good for new contributors.</p>
<p><strong>Meets the definition of open source</strong></p>
<div class="clearfix mb-2"><input id="cbox1" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox1"> Does it have a license? Usually, there is a file called LICENSE in the root of the repository. </label></div>
<p><strong>Project actively accepts contributions</strong></p>
<p>Look at the commit activity on the master branch. On GitHub, you can see this information on a repository’s homepage.</p>
<div class="clearfix mb-2"><input id="cbox2" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox2"> When was the latest commit? </label></div>
<div class="clearfix mb-2"><input id="cbox3" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox3"> How many contributors does the project have? </label></div>
<div class="clearfix mb-4"><input id="cbox4" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox4"> How often do people commit? (On GitHub, you can find this by clicking &#8220;Commits&#8221; in the top bar.) </label></div>
<p>Next, look at the project’s issues.</p>
<div class="clearfix mb-2"><input id="cbox5" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox5"> How many open issues are there? </label></div>
<div class="clearfix mb-2"><input id="cbox6" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox6"> Do maintainers respond quickly to issues when they are opened? </label></div>
<div class="clearfix mb-2"><input id="cbox7" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox7"> Is there active discussion on the issues? </label></div>
<div class="clearfix mb-2"><input id="cbox8" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox8"> Are the issues recent? </label></div>
<div class="clearfix mb-4"><input id="cbox9" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox9"> Are issues getting closed? (On GitHub, click the &#8220;closed&#8221; tab on the Issues page to see closed issues.) </label></div>
<p>Now do the same for the project’s pull requests.</p>
<div class="clearfix mb-2"><input id="cbox10" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox10"> How many open pull requests are there? </label></div>
<div class="clearfix mb-2"><input id="cbox20" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox20"> Do maintainers respond quickly to pull requests when they are opened? </label></div>
<div class="clearfix mb-2"><input id="cbox11" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox11"> Is there active discussion on the pull requests? </label></div>
<div class="clearfix mb-2"><input id="cbox12" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox12"> Are the pull requests recent? </label></div>
<div class="clearfix mb-4"><input id="cbox13" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox13"> How recently were any pull requests merged? (On GitHub, click the &#8220;closed&#8221; tab on the Pull Requests page to see closed PRs.) </label></div>
<p>&nbsp;</p>
<p><strong>Project is welcoming</strong></p>
<p>A project that is friendly and welcoming signals that they will be receptive to new contributors.</p>
<div class="clearfix mb-2"><input id="cbox14" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox14"> Do the maintainers respond helpfully to questions in issues? </label></div>
<div class="clearfix mb-2"><input id="cbox15" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox15"> Are people friendly in the issues, discussion forum, and chat (for example, IRC or Slack)? </label></div>
<div class="clearfix mb-2"><input id="cbox16" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox16"> Do pull requests get reviewed? </label></div>
<div class="clearfix mb-4"><input id="cbox17" class="d-block float-left mt-1 mr-2" type="checkbox" value="checkbox"> <label class="overflow-hidden d-block text-normal" for="cbox17"> Do maintainers thank people for their contributions? </label></div>
<h2 id="how-to-submit-a-contribution">How to submit a contribution</h2>
<p>You’ve found a project you like, and you’re ready to make a contribution. Finally! Here’s how to get your contribution in the right way.</p>
<h3 id="communicating-effectively">Communicating effectively</h3>
<p>Whether you’re a one-time contributor or trying to join a community, working with others is one of the most important skills you’ll develop in open source.</p>
<p>Before you open an issue or pull request, or ask a question in chat, keep these points in mind to help your ideas come across effectively.</p>
<p><strong>Give context.</strong> Help others get quickly up to speed. If you’re running into an error, explain what you’re trying to do and how to reproduce it. If you’re suggesting a new idea, explain why you think it’d be useful to the project (not just to you!).</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f607.png" alt="😇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“X doesn’t happen when I do Y”</em></p>
<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“X is broken! Please fix it.”</em></p></blockquote>
<p><strong>Do your homework beforehand.</strong> It’s OK not to know things, but show that you tried. Before asking for help, be sure to check a project’s README, documentation, issues (open or closed), mailing list, and search the internet for an answer. People will appreciate when you demonstrate that you’re trying to learn.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f607.png" alt="😇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“I’m not sure how to implement X. I checked the help docs and didn’t find any mentions.”</em></p>
<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“How do I X?”</em></p></blockquote>
<p><strong>Keep requests short and direct.</strong> Much like sending an email, every contribution, no matter how simple or helpful, requires someone else’s review. Many projects have more incoming requests than people available to help. Be concise. You will increase the chance that someone will be able to help you.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f607.png" alt="😇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“I’d like to write an API tutorial.”</em></p>
<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“I was driving down the highway the other day and stopped for gas, and then I had this amazing idea for something we should be doing, but before I explain that, let me show you…“</em></p></blockquote>
<p><strong>Keep all communication public.</strong> Although it’s tempting, don’t reach out to maintainers privately unless you need to share sensitive information (such as a security issue or serious conduct violation). When you keep the conversation public, more people can learn and benefit from your exchange. Discussions can be, in themselves, contributions.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f607.png" alt="😇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>(as a comment) “@-maintainer Hi there! How should we proceed on this PR?”</em></p>
<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>(as an email) “Hey there, sorry to bother you over email, but I was wondering if you’ve had a chance to review my PR”</em></p></blockquote>
<p><strong>It’s okay to ask questions (but be patient!).</strong> Everybody was new to the project at some point, and even experienced contributors need to get up to speed when they look at a new project. By the same token, even longtime maintainers are not always familiar with every part of the project. Show them the same patience that you’d want them to show to you.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f607.png" alt="😇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“Thanks for looking into this error. I followed your suggestions. Here’s the output.”</em></p>
<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“Why can’t you fix my problem? Isn’t this your project?”</em></p></blockquote>
<p><strong>Respect community decisions.</strong> Your ideas may differ from the community’s priorities or vision. They may offer feedback or decide not to pursue your idea. While you should discuss and look for compromise, maintainers have to live with your decision longer than you will. If you disagree with their direction, you can always work on your own fork or start your own project.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f607.png" alt="😇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“I’m disappointed you can’t support my use case, but as you’ve explained it only affects a minor portion of users, I understand why. Thanks for listening.”</em></p>
<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f622.png" alt="😢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <em>“Why won’t you support my use case? This is unacceptable!”</em></p></blockquote>
<p><strong>Above all, keep it classy.</strong> Open source is made up of collaborators from all over the world. Context gets lost across languages, cultures, geographies, and time zones. In addition, written communication makes it harder to convey a tone or mood. Assume good intentions in these conversations. It’s fine to politely push back on an idea, ask for more context, or further clarify your position. Just try to leave the internet a better place than when you found it.</p>
<h3 id="gathering-context">Gathering context</h3>
<p>Before doing anything, do a quick check to make sure your idea hasn’t been discussed elsewhere. Skim the project’s README, issues (open and closed), mailing list, and Stack Overflow. You don’t have to spend hours going through everything, but a quick search for a few key terms goes a long way.</p>
<p>If you can’t find your idea elsewhere, you’re ready to make a move. If the project is on GitHub, you’ll likely communicate by opening an issue or pull request:</p>
<ul>
<li><strong>Issues</strong> are like starting a conversation or discussion</li>
<li><strong>Pull requests</strong> are for starting work on a solution</li>
<li><strong>For lightweight communication,</strong> such as a clarifying or how-to question, try asking on Stack Overflow, IRC, Slack, or other chat channels, if the project has one</li>
</ul>
<p>Before you open an issue or pull request, check the project’s contributing docs (usually a file called CONTRIBUTING, or in the README), to see whether you need to include anything specific. For example, they may ask that you follow a template, or require that you use tests.</p>
<p>If you want to make a substantial contribution, open an issue to ask before working on it. It’s helpful to watch the project for a while (on GitHub, <a href="https://help.github.com/articles/watching-repositories/">you can click “Watch”</a> to be notified of all conversations), and get to know community members, before doing work that might not get accepted.</p>
<h3 id="opening-an-issue">Opening an issue</h3>
<p>You should usually open an issue in the following situations:</p>
<ul>
<li>Report an error you can’t solve yourself</li>
<li>Discuss a high-level topic or idea (for example, community, vision or policies)</li>
<li>Propose a new feature or other project idea</li>
</ul>
<p>Tips for communicating on issues:</p>
<ul>
<li><strong>If you see an open issue that you want to tackle,</strong> comment on the issue to let people know you’re on it. That way, people are less likely to duplicate your work.</li>
<li><strong>If an issue was opened a while ago,</strong> it’s possible that it’s being addressed somewhere else, or has already been resolved, so comment to ask for confirmation before starting work.</li>
<li><strong>If you opened an issue, but figured out the answer later on your own,</strong> comment on the issue to let people know, then close the issue. Even documenting that outcome is a contribution to the project.</li>
</ul>
<h3 id="opening-a-pull-request">Opening a pull request</h3>
<p>You should usually open a pull request in the following situations:</p>
<ul>
<li>Submit trivial fixes (for example, a typo, a broken link or an obvious error)</li>
<li>Start work on a contribution that was already asked for, or that you’ve already discussed, in an issue</li>
</ul>
<p>A pull request doesn’t have to represent finished work. It’s usually better to open a pull request early on, so others can watch or give feedback on your progress. Just mark it as a “WIP” (Work in Progress) in the subject line. You can always add more commits later.</p>
<p>If the project is on GitHub, here’s how to submit a pull request:</p>
<ul>
<li><strong><a href="https://guides.github.com/activities/forking/">Fork the repository</a></strong> and clone it locally. Connect your local to the original “upstream” repository by adding it as a remote. Pull in changes from “upstream” often so that you stay up to date so that when you submit your pull request, merge conflicts will be less likely. (See more detailed instructions <a href="https://help.github.com/articles/syncing-a-fork/">here</a>.)</li>
<li><strong><a href="https://guides.github.com/introduction/flow/">Create a branch</a></strong> for your edits.</li>
<li><strong>Reference any relevant issues</strong> or supporting documentation in your PR (for example, “Closes #37.”)</li>
<li><strong>Include screenshots of the before and after</strong> if your changes include differences in HTML/CSS. Drag and drop the images into the body of your pull request.</li>
<li><strong>Test your changes!</strong> Run your changes against any existing tests if they exist and create new ones when needed. Whether tests exist or not, make sure your changes don’t break the existing project.</li>
<li><strong>Contribute in the style of the project</strong> to the best of your abilities. This may mean using indents, semi-colons or comments differently than you would in your own repository, but makes it easier for the maintainer to merge, others to understand and maintain in the future.</li>
</ul>
<p>If this is your first pull request, check out <a href="http://makeapullrequest.com/">Make a Pull Request</a>, which <a class="user-mention" href="https://github.com/kentcdodds">@kentcdodds</a> created as a walkthrough video tutorial. You can also practice making a pull request in the <a href="https://github.com/Roshanjossey/first-contributions">First Contributions</a> repository, created by <a class="user-mention" href="https://github.com/Roshanjossey">@Roshanjossey</a>.</p>
<h2 id="what-happens-after-you-submit-a-contribution">What happens after you submit a contribution</h2>
<p>You did it! Congratulations on becoming an open source contributor. We hope it’s the first of many.</p>
<p>After you submit a contribution, one of the following will happen:</p>
<h3 id="-you-dont-get-a-response"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f62d.png" alt="😭" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You don’t get a response.</h3>
<p>Hopefully you <a href="https://opensource.guide/how-to-contribute/#a-checklist-before-you-contribute">checked the project for signs of activity</a> before making a contribution. Even on an active project, however, it’s possible that your contribution won’t get a response.</p>
<p>If you haven’t gotten a response in over a week, it’s fair to politely respond in that same thread, asking someone for a review. If you know the name of the right person to review your contribution, you can @-mention them in that thread.</p>
<p><strong>Don’t</strong> reach out to that person privately; remember that public communication is vital to open source projects.</p>
<p>If you make a polite bump and still nobody responds, it’s possible that nobody will respond, ever. It’s not a great feeling, but don’t let that discourage you. It’s happened to everyone! There are many possible reasons why you didn’t get a response, including personal circumstances that may be out of your control. Try to find another project or way to contribute. If anything, this is a good reason not to invest too much time in making a contribution before other community members are engaged and responsive.</p>
<h3 id="-someone-requests-changes-to-your-contribution"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6a7.png" alt="🚧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Someone requests changes to your contribution.</h3>
<p>It’s common that you’ll be asked to make changes to your contribution, whether that’s feedback on the scope of your idea, or changes to your code.</p>
<p>When someone requests changes, be responsive. They’ve taken the time to review your contribution. Opening a PR and walking away is bad form. If you don’t know how to make changes, research the problem, then ask for help if you need it.</p>
<p>If you don’t have time to work on the issue anymore (for example, if the conversation has been going on for months, and your circumstances have changed), let the maintainer know so they’re not expecting a response. Someone else may be happy to take over.</p>
<h3 id="-your-contribution-doesnt-get-accepted"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f44e.png" alt="👎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Your contribution doesn’t get accepted.</h3>
<p>Your contribution may or may not be accepted in the end. Hopefully you didn’t put too much work into it already. If you’re not sure why it wasn’t accepted, it’s perfectly reasonable to ask the maintainer for feedback and clarification. Ultimately, however, you’ll need to respect that this is their decision. Don’t argue or get hostile. You’re always welcome to fork and work on your own version if you disagree!</p>
<h3 id="-your-contribution-gets-accepted"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Your contribution gets accepted.</h3>
<p>Hooray! You’ve successfully made an open source contribution!</p>
<h2 id="you-did-it">You did it!</h2>
<p>Whether you just made your first open source contribution, or you’re looking for new ways to contribute, we hope you’re inspired to take action. Even if your contribution wasn’t accepted, don’t forget to say thanks when a maintainer put effort into helping you. Open source is made by people like you: one issue, pull request, comment, or high-five at a time.</p>
<p>&nbsp;</p>
<p>The post <a href="http://kostacipo.stream/how-to-contribute-to-open-source/">How to Contribute to Open Source</a> appeared first on <a href="http://kostacipo.stream">Tech Chronicles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://kostacipo.stream/how-to-contribute-to-open-source/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
