<?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>DEV Community: Isabel Costa</title>
    <description>The latest articles on DEV Community by Isabel Costa (@isabelcmdcosta).</description>
    <link>https://dev.to/isabelcmdcosta</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%2F24240%2Fb5109484-d0b7-4191-8183-bfaeb85c4ff0.png</url>
      <title>DEV Community: Isabel Costa</title>
      <link>https://dev.to/isabelcmdcosta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/isabelcmdcosta"/>
    <language>en</language>
    <item>
      <title>How to find Open Source projects to contribute</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sat, 11 Jun 2022 02:20:55 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/how-to-find-open-source-projects-to-contribute-2o1e</link>
      <guid>https://dev.to/isabelcmdcosta/how-to-find-open-source-projects-to-contribute-2o1e</guid>
      <description>&lt;p&gt;I often get asked about how to find Open Source projects to contribute to. In this post, I’ll show you where you can find these projects. You can use these tips and adjust your search depending on what you are looking for in terms of the type of project you want to contribute to, the skills you want to practice, or the cause you want to support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Projects you already use
&lt;/h2&gt;

&lt;p&gt;If you’re a developer, most likely you have encountered &lt;strong&gt;libraries, frameworks, or programming languages that are open source&lt;/strong&gt;. In case you use packages from &lt;a href="https://www.npmjs.com/" rel="noopener noreferrer"&gt;NPM&lt;/a&gt; in your projects, you can find on the package page the link to the project's source code. Take the example of the &lt;a href="https://www.npmjs.com/package/react-kawaii" rel="noopener noreferrer"&gt;react-kawai package&lt;/a&gt; which points to the &lt;a href="https://github.com/miukimiu/react-kawaii" rel="noopener noreferrer"&gt;miukimiu/react-kawaii&lt;/a&gt; GitHub repository. Same works for Python packages from &lt;a href="https://pypi.org/" rel="noopener noreferrer"&gt;PyPI&lt;/a&gt;. Take as an example &lt;a href="https://pypi.org/project/fastapi/" rel="noopener noreferrer"&gt;fastapi package&lt;/a&gt; that points to &lt;a href="https://github.com/tiangolo/fastapi" rel="noopener noreferrer"&gt;tiangolo/fastapi&lt;/a&gt; GitHub repository.&lt;/p&gt;

&lt;p&gt;Some programming languages are developed in the open source community, where you can look up the source code, pull requests, and discussions around it. An example of this is &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;Python&lt;/a&gt; language where you can see &lt;a href="https://github.com/python/cpython/pulls?q=is%3Apr+is%3Aclosed" rel="noopener noreferrer"&gt;pull requests being merged into the source code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are a few random projects I’ve used before which are open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://fastapi.tiangolo.com/" rel="noopener noreferrer"&gt;fastapi&lt;/a&gt;, a web framework for building APIs with Python; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;python&lt;/a&gt;, the programming language;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.scala-exercises.org/" rel="noopener noreferrer"&gt;scala-exercises&lt;/a&gt;, website to learn how to code in Scala;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vimalloc/flask-jwt-extended" rel="noopener noreferrer"&gt;flask-jwt-extended&lt;/a&gt;, Flask extension that provides JSON Web Tokens (JWT) support;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.forem.com/" rel="noopener noreferrer"&gt;forem&lt;/a&gt;, software for building communities which powers &lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/As-Raparigas-do-Codigo/jogo-das-profissoes" rel="noopener noreferrer"&gt;jogo-das-profissoes&lt;/a&gt;, a Portuguese web-based memory game for children to learn about different professions;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zulip.com/" rel="noopener noreferrer"&gt;Zulip&lt;/a&gt;, a team collaboration tool that can be used for open source discussion forums.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can look at the issue tracker of the projects’ source repositories and see if there are any issues you can work on.&lt;/p&gt;

&lt;p&gt;Interacting with a project as an end-user gives you a great perspective to detect bugs or desirable features that other users of the project appreciate. So &lt;strong&gt;you can even open an issue to report a bug or suggest a change to the project&lt;/strong&gt;, which if validated you can potentially be the one solving it. Keep in mind that reporting useful issues is already an open source contribution.&lt;/p&gt;

&lt;p&gt;Now, I want to highlight that you may use a project in another role other than as a developer. For example, if you are using an end-user application (using a real-time chat app, like &lt;a href="https://zulip.com/" rel="noopener noreferrer"&gt;Zulip&lt;/a&gt;, to communicate with other people). You can still find the project source code repository, and contribute in many ways.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source initiatives
&lt;/h2&gt;

&lt;p&gt;The way I got started with open source was via an initiative to incentivize people to contribute during December, &lt;a href="https://24pullrequests.com/" rel="noopener noreferrer"&gt;24 Pull Requests&lt;/a&gt;. I decided to make a first small contribution using Markdown, which you can check out at &lt;a href="https://github.com/FrancesCoronel/hire-me/pull/9" rel="noopener noreferrer"&gt;FrancesCoronel/hire-me/pull/9&lt;/a&gt; on GitHub.&lt;/p&gt;

&lt;p&gt;Later, I participated in another program called &lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;Google Summer of Code&lt;/a&gt; (GSoC), which helped me learn a lot about contributing to open source. Participating in these programs, was the way I got involved with open source.&lt;/p&gt;

&lt;p&gt;Some time ago I wrote about &lt;a href="https://isabelcosta.github.io/posts/open-source-initiatives/" rel="noopener noreferrer"&gt;open source programs and initiatives&lt;/a&gt; such as &lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;Google Summer of Code&lt;/a&gt;, &lt;a href="https://www.outreachy.org/" rel="noopener noreferrer"&gt;Outreachy&lt;/a&gt;, and &lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt; among others.&lt;/p&gt;

&lt;p&gt;For &lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt;, you can find these projects mostly during October. Projects and issues participating will have the “Hacktoberfest” label. For &lt;a href="https://24pullrequests.com/" rel="noopener noreferrer"&gt;24 Pull Requests&lt;/a&gt;, you can find projects listed on the page while the program is active in December.&lt;/p&gt;

&lt;p&gt;What I usually suggest with regards to finding open source projects, is to &lt;strong&gt;look into organizations that have been participating in Google Summer of Code&lt;/strong&gt; and &lt;a href="https://www.outreachy.org/" rel="noopener noreferrer"&gt;Outreachy&lt;/a&gt;. Projects and organizations that participate in these programs tend to have a structure and clear guidelines on what work is available to be done so that the organization is prepared to receive participants and mentors during the program.&lt;/p&gt;

&lt;p&gt;On the GSoC website, you can find recognizable names in the open source world, but also other organizations which were still eligible to participate. You can find organizations with very different types of projects, for example, projects related to hardware, applications for supporting social causes, developer tooling, security, etc… To get an idea, take a look at past accepted organizations that participated in GSoC &lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;this year&lt;/a&gt; or in &lt;a href="https://summerofcode.withgoogle.com/archive/2021/organizations" rel="noopener noreferrer"&gt;2021&lt;/a&gt;, &lt;a href="https://summerofcode.withgoogle.com/archive/2020/organizations" rel="noopener noreferrer"&gt;2020&lt;/a&gt;, &lt;a href="https://summerofcode.withgoogle.com/archive/2019/organizations" rel="noopener noreferrer"&gt;2019&lt;/a&gt;, &lt;a href="https://summerofcode.withgoogle.com/archive/2018/organizations" rel="noopener noreferrer"&gt;2018&lt;/a&gt;, and so on.&lt;/p&gt;

&lt;p&gt;Here are a few organizations that I saw on the organization list ranging in categories: &lt;a href="https://librehealth.io/" rel="noopener noreferrer"&gt;LibreHealth&lt;/a&gt;, &lt;a href="https://www.postgresql.org/" rel="noopener noreferrer"&gt;Postgres&lt;/a&gt;, &lt;a href="https://numfocus.org/" rel="noopener noreferrer"&gt;NumFOCUS&lt;/a&gt;, &lt;a href="https://www.debian.org/" rel="noopener noreferrer"&gt;Debian&lt;/a&gt;, &lt;a href="https://world.openfoodfacts.org/discover" rel="noopener noreferrer"&gt;Open Food Facts&lt;/a&gt;, and &lt;a href="https://www.torproject.org/" rel="noopener noreferrer"&gt;The Tor Project&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aggregators of projects and issues
&lt;/h2&gt;

&lt;p&gt;Some websites aggregate open source projects or issues to make the process of finding projects to contribute easier. Some examples of these are &lt;a href="https://up-for-grabs.net/" rel="noopener noreferrer"&gt;Up For Grabs&lt;/a&gt;, &lt;a href="https://www.codetriage.com/" rel="noopener noreferrer"&gt;CodeTriage&lt;/a&gt;, &lt;a href="https://ovio.org/" rel="noopener noreferrer"&gt;Ovio&lt;/a&gt;, etc…&lt;/p&gt;

&lt;p&gt;Sometimes you might also find repositories that contain only informational content, and some, in particular, will have a compilation of projects. For projects in the Portuguese community, there’s a nice collection of Portuguese open source projects at the &lt;a href="https://github.com/OldMetalmind/PortugueseOpenSourceProjects" rel="noopener noreferrer"&gt;OldMetalmind/PortugueseOpenSourceProjects&lt;/a&gt; GitHub repository.&lt;/p&gt;

&lt;p&gt;Additionally, you can find sometimes posts on the &lt;a href="https://dev.to/"&gt;dev.to community&lt;/a&gt; where maintainers may be promoting their open source projects and specifically asking for contributors. &lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Explore
&lt;/h2&gt;

&lt;p&gt;Another tool that can be useful to know, is the &lt;a href="https://github.com/explore" rel="noopener noreferrer"&gt;GitHub Explore&lt;/a&gt; feature that can highlight projects that can suit your skills. You can find projects grouped in &lt;a href="https://github.com/collections" rel="noopener noreferrer"&gt;collections&lt;/a&gt; or &lt;a href="https://github.com/topics" rel="noopener noreferrer"&gt;topics&lt;/a&gt;, or that are &lt;a href="https://github.com/trending" rel="noopener noreferrer"&gt;trending&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some &lt;strong&gt;Collections&lt;/strong&gt; that I noticed are &lt;a href="https://github.com/collections/government" rel="noopener noreferrer"&gt;government apps&lt;/a&gt;, &lt;a href="https://github.com/collections/made-in-brazil" rel="noopener noreferrer"&gt;made in Brazil&lt;/a&gt;, &lt;a href="https://github.com/collections/machine-learning" rel="noopener noreferrer"&gt;getting started with machine learning&lt;/a&gt;, &lt;a href="https://github.com/collections/made-in-africa" rel="noopener noreferrer"&gt;made in Africa&lt;/a&gt;, …&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Topics&lt;/strong&gt; are like tags, which can be useful to find projects related to a specific tool, programming language, or type of project. Topics are usually explicitly set on a repository by the maintainer. During Hacktoberfest maintainers will add the &lt;a href="https://github.com/topics/hacktoberfest" rel="noopener noreferrer"&gt;Hacktoberfest topic&lt;/a&gt; to their projects to indicate they’re participating in the event. As an example, to find repositories with the Python topic you can go to &lt;a href="https://github.com/topics/python" rel="noopener noreferrer"&gt;github.com/topics/python&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now that you know where to find them…
&lt;/h2&gt;

&lt;p&gt;Be aware that once you find a project you’d like to contribute to, it’s possible the &lt;strong&gt;project is no longer being actively maintained&lt;/strong&gt;. So even if you wish to contribute directly to it, there may be no maintainers to accept your contribution.&lt;/p&gt;

&lt;p&gt;To understand if a &lt;strong&gt;project is active&lt;/strong&gt;, check &lt;strong&gt;if there are recent conversations in issues&lt;/strong&gt; and pull requests or commits to the main default branch. You can also look for any notice of the project no longer being maintained. Maintainers tend to leave a statement in the README or an issue, or even archive the repository if they are no longer maintaining the project.&lt;/p&gt;

&lt;p&gt;When you decide which project to contribute to, &lt;strong&gt;make sure to read the Contribution Guidelines and Code of Conduct&lt;/strong&gt; to interact with the project, the maintainer, and the project’s community in the way that is expected. This will make both your life as a contributor and the maintainer’s life easier. Also look for beginner-friendly labels, such as, “Good First Issue” or “First Timers Only” that are meant to help people find the first issues to contribute.&lt;/p&gt;

&lt;p&gt;Another piece of advice I have is, that if you are just starting to contribute to open source, it &lt;strong&gt;can be easier to contribute to less popular projects&lt;/strong&gt;, that may have less noise around issues and pull requests and the maintainer may be able to give you more attention. In any case, you can still look at popular projects that could have issues with the beginner-friendly labels I mentioned above. Although because of its popularity, it can be hard to contribute.&lt;/p&gt;

&lt;p&gt;Know that you can find an open source in a lot of places such as GitHub, and GitLab, however for certain projects, the organizations that maintain it keep the source code hosted using their infrastructure. An example of this is the Android open source project which you can find &lt;a href="https://source.android.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;I hope this helped give you an idea of how to find open source projects! Often when I contribute to projects that I’m not the maintainer of, it’s because I stumbled on a problem in a project, that I knew how to solve and noticed no one had reported yet.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>github</category>
    </item>
    <item>
      <title>I’ve been a contributor, mentor, and admin in Google Open Source programs</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Thu, 09 Jun 2022 23:04:20 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/ive-been-a-contributor-mentor-and-admin-in-google-open-source-programs-1j51</link>
      <guid>https://dev.to/isabelcmdcosta/ive-been-a-contributor-mentor-and-admin-in-google-open-source-programs-1j51</guid>
      <description>&lt;p&gt;I participated three times in open source programs created by &lt;a href="https://opensource.google/" rel="noopener noreferrer"&gt;Google Open Source&lt;/a&gt;. I participated in two editions of &lt;a href="https://summerofcode.withgoogle.com/" rel="noopener noreferrer"&gt;Google Summer of Code (GSoC)&lt;/a&gt; and one edition of &lt;a href="https://codein.withgoogle.com/" rel="noopener noreferrer"&gt;Google Code-in (GCI)&lt;/a&gt;. For all of these programs, I was part of &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;AnitaB.org Open Source&lt;/a&gt; (previously, &lt;a href="https://github.com/systers" rel="noopener noreferrer"&gt;Systers Open Source&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;All of these programs aim to help people get introduced to open source in a structured way. GCI was aimed at pre-university students (ages 13-17). GSoC was initially aimed at university students or recent graduates, &lt;a href="https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html" rel="noopener noreferrer"&gt;before opening up in 2022 to all newcomers of open source&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My participation in these programs was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Summer of Code 2018 Student (&lt;a href="https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html" rel="noopener noreferrer"&gt;now referred to as GSoC contributor&lt;/a&gt;);&lt;/li&gt;
&lt;li&gt;Google Code-in 2019 Mentor;&lt;/li&gt;
&lt;li&gt;Google Summer of Code 2020 Organization admin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I went through a full program cycle :) I’ll briefly summarize my involvement in the programs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Summer of Code 2018 Student
&lt;/h2&gt;

&lt;p&gt;In 2018, I applied to be a GSoC student with Systers Open Source (now called AnitaB.org Open Source). That is where I started my journey in these organization-guided programs.&lt;/p&gt;

&lt;p&gt;In this program, I proposed a new project called &lt;a href="https://summerofcode.withgoogle.com/archive/2018/projects/6592097335377920" rel="noopener noreferrer"&gt;Mentorship System&lt;/a&gt;, for women in the community to mentor each other via 1:1 relations. For this project, I developed both the backend REST API with Python - &lt;a href="https://github.com/anitab-org/mentorship-backend" rel="noopener noreferrer"&gt;anitab-org/mentorship-backend&lt;/a&gt; - and Android application with Kotlin - &lt;a href="https://github.com/anitab-org/mentorship-android" rel="noopener noreferrer"&gt;anitab-org/mentorship-android&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The program was divided into one community bonding phase and three coding phases. During the program, I had 2 main mentors and one admin assigned to me. In the final phase, I got an additional mentor. My mentors would review my work (mostly code) and guide me on how to contribute in an open source environment and how to plan the work properly in our weekly sessions. The admin would oversee the project development and also act as a mentor. I learned most of what I know today about Open Source communities from this admin, who still mentored me beyond the program.&lt;/p&gt;

&lt;p&gt;At that time, I did two presentations about my experience, which are available on Youtube:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=xRZrdR47R-w" rel="noopener noreferrer"&gt;GSoC final demo of the work I did&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=eL_dy64I13E" rel="noopener noreferrer"&gt;My journey as a GSoC student at Systers TechTalks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After this program ended, I continued as a maintainer and contributor to the projects I created.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Code-in 2019 Mentor
&lt;/h2&gt;

&lt;p&gt;In 2019, I wanted to participate as a mentor for GSoC, however, the community did not participate as an organization in GSoC that year. So I continued as a maintainer as usual for the Mentorship System projects. Then in December of 2019, we &lt;a href="https://codein.withgoogle.com/archive/2019/organization/5698265715048448/" rel="noopener noreferrer"&gt;were accepted as an organization for GCI&lt;/a&gt; and I participated as a mentor.&lt;/p&gt;

&lt;p&gt;As a mentor, I would create tasks and help participants contribute to Mentorship System, in multiple categories of contribution including Documentation, Coding, Quality Assurance, Design, and Outreach/Research. As the person that was the most knowledgeable about the project, I also helped other mentors understand what tasks could be brainstormed in different categories.&lt;/p&gt;

&lt;p&gt;What I loved about this program was about promoting different types of contributions. The tasks were varied and we got so many good ideas to improve the project beyond code. I also really liked the fresh perspective other mentors would bring to the tasks brainstorming, as most weren’t familiar with the project, but still came up with ideas I wouldn’t come up with. I also learned from some participants who would come up with additional ideas for the project, outside of the GCI scope.&lt;/p&gt;

&lt;p&gt;Here I also learned about the importance of being careful with working in a community with underage contributors. The community manager at the time (my GSoC admin) was very thoughtful about how to include the underaged GCI participants in our community forums. This led us to move from using &lt;a href="https://slack.com/" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; to start using &lt;a href="https://zulip.com/" rel="noopener noreferrer"&gt;Zulip&lt;/a&gt;, which allowed us to use features such as disabling private messaging and allow for people of any age to join the platform.&lt;/p&gt;

&lt;p&gt;Unfortunately, this program ended in January 2020, after running for 10 years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Summer of Code 2020 Admin
&lt;/h2&gt;

&lt;p&gt;Finally, as GCI 2019 was finishing, applications to become an admin for the community opened. I applied, was interviewed, and then got accepted!&lt;/p&gt;

&lt;p&gt;So I started as an admin at &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;AnitaB.org Open Source&lt;/a&gt; in February. We applied to Google Summer of Code again and got accepted! At that point, admins (including myself) worked on creating applications and processes for students and mentors and preparing the projects for the program.&lt;/p&gt;

&lt;p&gt;My experience was a mix of being a mentor and an admin, however, my main priority was acting as an admin. In short, my responsibility, shared with my co-admins, was managing the student projects, the program, and our community. I learned about how much can go into participating as an Organization in GSoC. I loved my experience as a student back in 2018, and here I saw all the effort that admins had to put into it to make it run as smoothly as possible.&lt;/p&gt;

&lt;p&gt;I managed a team of 4 members - 1 student and 3 mentors. The project was &lt;a href="https://summerofcode.withgoogle.com/archive/2020/projects/4686682311360512" rel="noopener noreferrer"&gt;BridgeInTech&lt;/a&gt;. Interestingly, this was also an original project proposed by the student, I could see a lot of what I went through with this student (who was amazing to mentor). Part of managing the team meant I would meet with the student once a week (at least), with the mentors on a bi-weekly basis, and with the whole team every week (project weekly meeting). The process was the same as I got as a student.&lt;/p&gt;

&lt;p&gt;I must say participating as an admin, was a great experience, much because of the documentation of previous GSoC participation, program materials (e.g.: onboarding slides, past applications content, …), and the great amount of experience that my past GSoC admin had with this program. To have an idea, part of the work admins did was: students and mentors applications management; interacting with aspiring participants who get involved way before the GSoC application started; managing and supporting mentors who would help review the student proposals; onboard selected students and mentors assigned (both involving async and sync communication).&lt;/p&gt;




&lt;p&gt;I’m so grateful for getting to experience these programs and different roles! It taught me most of what I know about Open Source which helped me so much in my career and also allowed me to find a way to give back to the tech community.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>4 zonas a personalizar do perfil de GitHub</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sun, 03 Oct 2021 16:09:47 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/4-zonas-a-personalizar-do-perfil-de-github-3ke6</link>
      <guid>https://dev.to/isabelcmdcosta/4-zonas-a-personalizar-do-perfil-de-github-3ke6</guid>
      <description>&lt;p&gt;O perfil no &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; tem cada vez mais opções que ajudam a representar o nosso perfil como programadores e contribuidores de open source. Aqui vou mencionar umas dicas sobre como melhorar alguns aspetos do perfil no GitHub para que deixe uma boa impressão para quem estiver a ver o teu perfil (como por exemplo: um recrutador, um colega, etc). &lt;/p&gt;

&lt;p&gt;Eu partilho estas dicas e mais algumas numa das minhas apresentações - &lt;a href="https://www.youtube.com/watch?v=t5E1ustJEGU" rel="noopener noreferrer"&gt;“Make the Most Out of Your GitHub Profile”&lt;/a&gt; - apresentada em inglês. Ao longo deste post, usarei exemplos do meu perfil &lt;a href="https://github.com/isabelcosta" rel="noopener noreferrer"&gt;github.com/isabelcosta&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Secção com foto, nome e descrição
&lt;/h2&gt;

&lt;p&gt;Se fores ao teu perfil pessoal, tens uma secção lateral esquerda. Aí terás um botão “Edit profile” que te vai permitir mudar a secção. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faus7cimytw9s2rq65bsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faus7cimytw9s2rq65bsd.png" alt="edicao de campos de perfil" width="684" height="836"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao clicares em “Edit Profile”, podes adicionar a tua pequena biografia, nome, localização, &lt;em&gt;link&lt;/em&gt; para um &lt;em&gt;website&lt;/em&gt; e a organização a qual pertences. A organização não precisa de existir no GitHub para a colocares lá (o campo é de texto livre). Podes colocar a tua universidade ou empresa onde trabalhas.&lt;/p&gt;

&lt;p&gt;Se não tiveres um &lt;em&gt;website&lt;/em&gt;, podes sempre usar outro link para uma página tua como, por exemplo, o perfil LinkedIn ou qualquer outro website que te represente, como um &lt;em&gt;blog&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gráfico de contribuições
&lt;/h2&gt;

&lt;p&gt;Sabias que podes configurar as contribuições que são representadas no teu perfil? Podes mudar as definições do teu gráfico de contribuições para que mostrem quadradinhos verdes, mesmo para código que escrevas em repositórios privados. Às vezes, podes ter repositórios em que estás a trabalhar, mas que são privados. Estas contribuições podem ser refletidas ou escondidas do gráfico de contribuições. Se estiveres à vontade a mostrar que contribuis mesmo em repositórios privados.&lt;/p&gt;

&lt;p&gt;O truque para veres se isto ficou bem configurado, é abrires o teu perfil no browser em modo incógnito e compararmos com o gráfico de quando estiveres “logada”.&lt;/p&gt;

&lt;p&gt;Para ativares isto, perto do teu gráfico de contribuições, tens um botão “Contribution settings” e depois podes selecionar a opção “Private contributions”. Assim, as tuas contribuições privadas ficaram refletidas no gráfico, mas continuam privadas, ou seja, as pessoas que visitarem o teu perfil continuam sem saber os repositórios privados para os quais contribuem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fznenxxy6cp4jvj9tcvqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fznenxxy6cp4jvj9tcvqm.png" alt="grafico verde de contribuicoes" width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixar repositórios relevantes
&lt;/h2&gt;

&lt;p&gt;No teu perfil, também podes fixar os repositórios que queres destacar no teu perfil. Se não o fizeres, o GitHub irá selecionar por ti os repositórios a destacar (se tiveres 50 repositórios, os que estiverem no teu perfil, podem ser repositórios menos relevantes do teu portfólio de projetos). Podes escolher destacar 6 repositórios no total para aparecer no perfil. E também os podes reorganizar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ov4mxvo1eel3xfoh4rq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ov4mxvo1eel3xfoh4rq.png" alt="repositorios fixos no perfil" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui também podes destacar repositórios ao qual tenhas contribuído com código, mesmo que não pertença à vossa conta no GitHub. Eu escolhi um repositórios de organizações para o qual contribui (exemplos: &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;anitab-org&lt;/a&gt; e &lt;a href="https://github.com/getodk" rel="noopener noreferrer"&gt;getodk&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrz8th8q1dy3bs94rknc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrz8th8q1dy3bs94rknc.png" alt="selecao de repositorios a afixar no perfil" width="800" height="989"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para cada projeto que tenhas destacado, não se esqueças de ter uma descrição nesses projetos. Isto porque essa descrição aparecerá junto aos repositórios fixados no perfil. Assim, consegues dar um contexto quando alguém estiver no teu perfil e os repositórios afixados.&lt;/p&gt;

&lt;h2&gt;
  
  
  README Pessoal
&lt;/h2&gt;

&lt;p&gt;Agora podes ter um README pessoal no teu perfil, onde podes usar a tua criatividade para te apresentares da melhor forma. Atualmente, o meu README pessoal é bastante simples, apenas com um pequeno texto biográfico e alguns links para perfis externos. No entanto, consegues adicionar muito mais através de automações.&lt;/p&gt;

&lt;p&gt;Para teres um perfil README, basta criares um repositório com o nome igual ao username da tua conta no GitHub (exemplo: se o teu username é “mariaf123” - &lt;code&gt;github.com/mariaf123/mariaf123&lt;/code&gt; - o repositório terá de se chamar “mariaf123”). O README desse repositório irá aparecer no vosso perfil. Aqui está &lt;a href="https://github.com/isabelcosta/isabelcosta" rel="noopener noreferrer"&gt;o meu exemplo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Aqui estão alguns exemplos de README pessoais que podes usar para te inspirares. Estes repositórios são todos de código aberto (&lt;em&gt;open source&lt;/em&gt;), por isso, podes ver o código e reutilizar o que te der jeito.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/abhisheknaiidu/awesome-github-profile-readme" rel="noopener noreferrer"&gt;abhisheknaiidu/awesome-github-profile-readme&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Espero que este post tenha sido útil! Se quiseres saber de mais truques, também podes ver esta apresentação de 15 minutos sobre este tema - &lt;a href="https://www.youtube.com/watch?v=t5E1ustJEGU" rel="noopener noreferrer"&gt;“Make the Most Out of Your GitHub Profile”&lt;/a&gt; :)&lt;/p&gt;

</description>
      <category>github</category>
      <category>portugues</category>
    </item>
    <item>
      <title>AnitaB.org Open Source profile README on GitHub</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sun, 03 Oct 2021 16:01:51 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/anitab-org-open-source-profile-readme-on-github-3829</link>
      <guid>https://dev.to/isabelcmdcosta/anitab-org-open-source-profile-readme-on-github-3829</guid>
      <description>&lt;p&gt;GitHub &lt;a href="https://twitter.com/github/status/1438276928696463372" rel="noopener noreferrer"&gt;announced&lt;/a&gt; the other day, that Organizations can now have their own README.&lt;/p&gt;

&lt;p&gt;I love this feature! So when I had the chance I created one for &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;AnitaB.org Open Source&lt;/a&gt; community.&lt;/p&gt;

&lt;p&gt;One thing I’ve learned from being involved with Open Source is that not all communities work the same way. Each one has its mission, way of working, and contribution processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Welcoming every type of contribution is one of our core values&lt;/strong&gt;, as is &lt;a href="https://opensource.com/article/21/8/beginner-open-source-community" rel="noopener noreferrer"&gt;being beginner-friendly&lt;/a&gt;. Having a &lt;strong&gt;README allows us to inform contributors of how we operate and how they can help us&lt;/strong&gt;. Now we can show what the community is about right when a contributor finds our organization page on GitHub. &lt;/p&gt;

&lt;p&gt;The first impression we want to pass to newcomers and our community is that they can contribute in multiple ways other than code if they want. So the first draft of our profile README aims to let our contributors know they can join us on &lt;a href="https://anitab-org.zulipchat.com/" rel="noopener noreferrer"&gt;Zulip&lt;/a&gt; and contribute to our community in various ways such as reviewing code, implementing features, testing our apps, reporting bugs, suggesting design improvements, blogging for our publication, etc... &lt;/p&gt;

&lt;p&gt;Here’s our profile README 🎉 which you can check out at &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;github.com/anitab-org&lt;/a&gt; (&lt;a href="https://github.com/anitab-org/.github/blob/main/profile/README.md" rel="noopener noreferrer"&gt;source code&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6svf5abxumfonjkypx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6svf5abxumfonjkypx3.png" alt="anitab.org profile readme" width="800" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have an organization on GitHub and would like to add this feature you can read about it here: &lt;a href="https://github.blog/changelog/2021-09-14-readmes-for-organization-profiles/" rel="noopener noreferrer"&gt;https://github.blog/changelog/2021-09-14-readmes-for-organization-profiles/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>Sync fork with the original repository using git</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sat, 04 Sep 2021 11:38:58 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/sync-fork-with-original-repository-using-git-21ap</link>
      <guid>https://dev.to/isabelcmdcosta/sync-fork-with-original-repository-using-git-21ap</guid>
      <description>&lt;p&gt;When you want to contribute to an open source repository, you usually &lt;a href="https://docs.github.com/en/get-started/quickstart/fork-a-repo" rel="noopener noreferrer"&gt;fork a repository&lt;/a&gt; so you can do your changes and later submit them via a pull request. After forking the repository on GitHub, and cloning it into your local environment - &lt;code&gt;git clone &amp;lt;forked repository url&amp;gt;&lt;/code&gt; - the repository will have a remote URL setup, usually named &lt;code&gt;origin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can also do this using GitHub web user interface. Check &lt;a href="https://docs.github.com/en/github/collaborating-with-pull-requests/working-with-forks/syncing-a-fork" rel="noopener noreferrer"&gt;out the docs&lt;/a&gt;! I already mostly use this option, but it’s always useful to know the basics of doing this with git.&lt;/p&gt;

&lt;p&gt;To use as an example, I forked &lt;a href="https://github.com/anitab-org/documentation" rel="noopener noreferrer"&gt;anitab-org/documentation&lt;/a&gt; repository into my GitHub account &lt;a href="https://github.com/isabelcosta/documentation" rel="noopener noreferrer"&gt;isabelcosta/documentation&lt;/a&gt;. When &lt;strong&gt;cloning the repository I &lt;a href="https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#about-remote-repositories" rel="noopener noreferrer"&gt;used the SSH URL&lt;/a&gt; of my forked repository.&lt;/strong&gt; The commands I’ll mention will be running against the repository’s default &lt;code&gt;master&lt;/code&gt; branch.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;check what remote URLs your project has set up&lt;/strong&gt; with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here the &lt;code&gt;origin&lt;/code&gt; configuration will have the URL where your forked project is on GitHub (notice that my &lt;code&gt;isabelcosta&lt;/code&gt; account username is there). I am also inside the root directory of the local clone of my forked repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/dev/documentation &amp;gt; git remote -v
origin  git@github.com:isabelcosta/documentation.git (fetch)
origin  git@github.com:isabelcosta/documentation.git (push)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can &lt;strong&gt;add the new remote repository link to your remotes&lt;/strong&gt;. The &lt;code&gt;upstream&lt;/code&gt; keyword is an alias for the original repository remote URL (replace &lt;code&gt;&amp;lt;url of original repository&amp;gt;&lt;/code&gt; with this URL). You can pick another alias if you prefer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add upstream &amp;lt;url of original repository&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice that in this case, the link is pointing to &lt;code&gt;anitab-org&lt;/code&gt; account - where the repository was originally forked from):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/dev/documentation &amp;gt; git remote add upstream git@github.com:anitab-org/documentation.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To &lt;strong&gt;confirm the remote repositories you have set up&lt;/strong&gt;, the new &lt;code&gt;upstream&lt;/code&gt; repository configuration should be there.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/dev/documentation &amp;gt; git remote -v
origin  git@github.com:isabelcosta/documentation.git (fetch)
origin  git@github.com:isabelcosta/documentation.git (push)
upstream    git@github.com:anitab-org/documentation.git (fetch)
upstream    git@github.com:anitab-org/documentation.git (push)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this setup, you can now &lt;strong&gt;sync your repository locally&lt;/strong&gt; using pull/fetch code from the original repository. Here’s an example where I am pulling code from the original repository into my fork’s &lt;code&gt;master&lt;/code&gt; branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/dev/documentation &amp;gt; git pull upstream master
From github.com:anitab-org/documentation
 * branch            master     -&amp;gt; FETCH_HEAD
   85f3fdc..5854a22  master     -&amp;gt; upstream/master
Already up to date.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After updating my local branch, I usually also &lt;strong&gt;update the fork on GitHub.&lt;/strong&gt; I push the new commits pulled from &lt;code&gt;upstream&lt;/code&gt; to my &lt;code&gt;origin&lt;/code&gt; forked repository (using the same &lt;code&gt;master&lt;/code&gt; branch):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/dev/documentation &amp;gt; git push origin master
Everything up-to-date
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Commands summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Check remotes: &lt;code&gt;git remote -v&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add a new remote: &lt;code&gt;git remote add upstream &amp;lt;original repository url&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Sync local repository: &lt;code&gt;git pull upstream &amp;lt;branch&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Update remote forked repo: &lt;code&gt;git push origin &amp;lt;branch&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;You can find me on &lt;a href="https://twitter.com/isabelcmdcosta" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/isabelcosta" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://isabelcosta.github.io/" rel="noopener noreferrer"&gt;my personal website&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Contributing to Open Source in Quality Assurance</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sun, 21 Mar 2021 21:20:57 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/contributing-to-open-source-with-quality-assurance-1n8e</link>
      <guid>https://dev.to/isabelcmdcosta/contributing-to-open-source-with-quality-assurance-1n8e</guid>
      <description>&lt;p&gt;Did you know you can contribute to Open Source with Quality Assurance? Usually while building software, there is some component of quality assurance or testing involved, so that also applies to open source projects. When I think of quality assurance of a project I think of testing in general, which includes writing unit tests, integration tests, manual testing, performance testing, documenting test scenarios, ...&lt;/p&gt;

&lt;p&gt;Contributing to Quality Assurance (QA) helps to ensure the overall quality of the project since it can help to detect bugs early and faults in how the feature was implemented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ways to contribute
&lt;/h2&gt;

&lt;p&gt;So here are some examples of how to contribute to Quality Assurance of an open source project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test manually a pull request code&lt;/strong&gt; before it gets accepted to be merged, to confirm the code is working as expected. Be creative! Try to come up with test cases for the feature being implemented that perhaps the author of the pull request did not think of. Examples: &lt;a href="https://github.com/anitab-org/mentorship-backend/pull/535#pullrequestreview-401001287" rel="noopener noreferrer"&gt;testing REST API&lt;/a&gt;, &lt;a href="https://github.com/anitab-org/mentorship-android/pull/725#pullrequestreview-438635985" rel="noopener noreferrer"&gt;testing bottom navigation bug in android app&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test the deployed version of the app and report bugs&lt;/strong&gt; found by creating issues describing them! Provide as much information as you can so that maintainers and other contributors can confirm the bug, and also for developers to have the necessary context to look for a solution for it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write tests to improve test coverage&lt;/strong&gt; of the project. These could be unit, integration, user interface, automation tests… Sometimes also, there could be enough code coverage, but some edge cases for a feature might not be covered in those. So be creative!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproduce bugs already reported&lt;/strong&gt; through issues and add more context or information to those if you think it’s missing. You can help maintainers confirm if a bug was properly reported and makes sense.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write documentation about test cases&lt;/strong&gt; for the project. This can help new contributors learn how to use the project, and what are some use cases for it. Also can help other testers, do more testing and cover more scenarios. Example: &lt;a href="https://github.com/anitab-org/mentorship-backend/blob/cf6df094e4fef735e135674e4d5697ded5060d7d/docs/quality-assurance-test-cases.md" rel="noopener noreferrer"&gt;quality assurance test cases for mentorship-backend&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Help automate tasks on CI/CD pipeline&lt;/strong&gt; as enforcing coding style in code, run tests for the project, so that pipeline fails and signals to contributors and maintainers of the code changes of a pull request are up to standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources to learn more about Quality Assurance
&lt;/h2&gt;

&lt;p&gt;There are 2 resources that come to my mind with regards to learning more about Quality Assurance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test Automation University&lt;/strong&gt; - &lt;a href="https://testautomationu.applitools.com/" rel="noopener noreferrer"&gt;https://testautomationu.applitools.com/&lt;/a&gt; where you can learn about Test automation specifically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FreeCodeCamp&lt;/strong&gt; has a certification for Quality Assurance &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;https://www.freecodecamp.org/&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would love to know more resources, so if you know more, let me know in the comments :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Process at AnitaB.org Open Source community
&lt;/h2&gt;

&lt;p&gt;When working on &lt;a href="https://summerofcode.withgoogle.com/archive/2018/projects/6592097335377920/" rel="noopener noreferrer"&gt;my Google Summer of Code project&lt;/a&gt; back in 2018, I tried to come with ways for other open source contributors, to contribute to the project by testing it. I asked for help in the community for people to test the application and report bugs found by creating issues. Here's an &lt;a href="https://github.com/anitab-org/mentorship-backend/issues/93" rel="noopener noreferrer"&gt;example of a bug reported&lt;/a&gt; where user registration was possible by sending empty values for certain required fields.&lt;/p&gt;

&lt;p&gt;When &lt;a href="https://github.com/getodk/collect/pull/1986" rel="noopener noreferrer"&gt;contributing to Open Data Kit&lt;/a&gt;, I noticed that maintainers had a step while reviewing code, of verifying if my change was working on multiple Android versions. This inspired me to incorporate such steps in our community as well. These days at &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;AnitaB.org Open Source&lt;/a&gt; we have this step as part of our Open Source workflow, in particular of the Pull Request lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our work related to QA includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://github.com/anitab-org/documentation/blob/85f3fdc625a6e8d2269f3a61a43421994807c157/quality-assurance.md" rel="noopener noreferrer"&gt;guide to contributing to Quality Assurance&lt;/a&gt; in our projects;
We also have a &lt;a href="https://github.com/anitab-org/mentorship-backend/blob/cf6df094e4fef735e135674e4d5697ded5060d7d/docs/test-pr-guide.md#template-to-report-pr-testing-results" rel="noopener noreferrer"&gt;PR test report template&lt;/a&gt; we encourage our contributors to use when testing a PR;&lt;/li&gt;
&lt;li&gt;Once we have 2 approvals, we label the issue with &lt;a href="https://github.com/anitab-org/mentorship-backend/pulls?q=is%3Apr+is%3Aopen+label%3A%22Status%3A+Needs+Testing%22" rel="noopener noreferrer"&gt;“Status: Needs Testing”&lt;/a&gt; and wait for someone, other than the author, to run the PR code (or test the live app if there is a deployed version of the PR) and test what was implemented. In success, we label the issue with “Status: Ready to Merge”, in failure we re-evaluate the PR with the contributor;&lt;/li&gt;
&lt;li&gt;We started exploring a test management tool called &lt;a href="https://www.testquality.com/" rel="noopener noreferrer"&gt;TestQuality&lt;/a&gt; to help us document test scenarios we already know and tested before;&lt;/li&gt;
&lt;li&gt;We have a dedicated channel &lt;a href="https://anitab-org.zulipchat.com/#narrow/stream/216325-quality-assurance" rel="noopener noreferrer"&gt;#quality-assurance&lt;/a&gt; on Zulip for general discussion around QA;&lt;/li&gt;
&lt;li&gt;Writing automated tests, which includes UI tests and unit tests, &lt;a href="https://github.com/anitab-org/mentorship-backend/pull/708" rel="noopener noreferrer"&gt;user journey tests&lt;/a&gt;, …&lt;/li&gt;
&lt;li&gt;We have deployed versions of some of our projects, which allows contributors to test the app, without running the app in their development environments. We also have &lt;a href="https://github.com/anitab-org/mentorship-android/pull/1004/checks" rel="noopener noreferrer"&gt;apk artifacts being built through GitHub Actions&lt;/a&gt; for one of our Android apps being developed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As per our experience in the community, people who were joining us were mostly interested in contributing as a developer, but eventually got interested and helped with this type of contribution. &lt;strong&gt;By learning how to test a project, you also learn how the project works.&lt;/strong&gt; This can be an easy path to start contributing and getting familiar with the project and its codebase.&lt;/p&gt;




&lt;p&gt;A huge thank you to &lt;a href="https://www.linkedin.com/in/roshni-pattath-4a356448" rel="noopener noreferrer"&gt;Roshni Pattath&lt;/a&gt; who has been an advocate and mentor for quality assurance within the AnitaB.org Open Source community. I’ve learned so much from her. Also for helping me review this post.&lt;/p&gt;

&lt;p&gt;If you are interested in contributing this way, we have plenty of work you could do in our community. You can check out &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and also join our &lt;a href="https://anitab-org.zulipchat.com" rel="noopener noreferrer"&gt;Zulip&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can find me on &lt;a href="https://twitter.com/isabelcmdcosta" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/isabelcosta" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://isabelcosta.github.io/" rel="noopener noreferrer"&gt;my personal website&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>testing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Dataclasses in Python are nice!</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sun, 14 Mar 2021 12:31:38 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/dataclasses-in-python-are-nice-1fff</link>
      <guid>https://dev.to/isabelcmdcosta/dataclasses-in-python-are-nice-1fff</guid>
      <description>&lt;p&gt;Couple weeks ago I learned about &lt;a href="https://docs.python.org/3/library/dataclasses.html" rel="noopener noreferrer"&gt;&lt;code&gt;dataclasses&lt;/code&gt;&lt;/a&gt; feature in Python. This feature is a nice way to define classes in python. This was introduced in &lt;a href="https://docs.python.org/3.7/whatsnew/3.7.html" rel="noopener noreferrer"&gt;Python 3.7&lt;/a&gt;, in particular &lt;a href="https://www.python.org/dev/peps/pep-0557/" rel="noopener noreferrer"&gt;PEP 557&lt;/a&gt;. To use this feature make sure you are running python version 3.7 or above.&lt;/p&gt;

&lt;p&gt;Previously, I knew about defining new classes in python using the &lt;code&gt;self.__init__()&lt;/code&gt; function. Here's an example of me defining a class &lt;code&gt;Youtuber&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Youtuber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;categories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;categories&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can use less boilerplate code to define classes. There is no need to install a separate python library, this will come with python standard library (as long as it's &amp;gt; 3.7).&lt;/p&gt;

&lt;p&gt;Here's how you can define these now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dataclasses&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dataclass&lt;/span&gt;

&lt;span class="nd"&gt;@dataclass&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Youtuber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Class for defining youtubers.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
   &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
   &lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example above, I am importing it first &lt;code&gt;from dataclasses import dataclass&lt;/code&gt; and then defining it. I created a class definition and used &lt;code&gt;@dataclass&lt;/code&gt; annotation to tell python how it should interpret this class definition.&lt;/p&gt;

&lt;p&gt;Then I can create this in python, as I would do it anyway, regardless of using &lt;code&gt;@dataclass&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nc"&gt;Youtuber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Chris Stuckmann&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;movie-reviews&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's how you can try this out, using 3 of my favorite youtube channels :)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;youtubers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;youtubers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Youtuber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Chris Stuckmann&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;movie-reviews&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;span class="n"&gt;youtubers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Youtuber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Double Toasted&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;movie-reviews&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;span class="n"&gt;youtubers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Youtuber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The Fitness Marshall&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fitness&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;youtuber&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;youtubers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;youtuber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s categories are: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;youtuber&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;categories&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's put this all together in a file called &lt;code&gt;youtubers.py&lt;/code&gt; and run it! You can copy it from this &lt;a href="https://gist.github.com/isabelcosta/c14c4c9a4a098a17807e5bda2df92ac3" rel="noopener noreferrer"&gt;GitHub gist I created&lt;/a&gt;. You should get this output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python youtubers.py  
Chris Stuckmann's categories are: ['movie-reviews']
Double Toasted's categories are: ['movie-reviews']
The Fitness Marshall's categories are: ['fitness']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope you enjoyed this short article!&lt;br&gt;
You can find me on &lt;a href="https://isabelcosta.github.io/" rel="noopener noreferrer"&gt;https://isabelcosta.github.io/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>That time I contributed to Scala Exercises website</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sun, 07 Mar 2021 16:54:05 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/that-time-i-contributed-to-scala-exercises-website-4b5b</link>
      <guid>https://dev.to/isabelcmdcosta/that-time-i-contributed-to-scala-exercises-website-4b5b</guid>
      <description>&lt;p&gt;As a beginner in contributing to open source, you might not be sure of how to start contributing. I want to tell you about a &lt;strong&gt;contribution I have made to an open source project I used.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Often I explain to people who want to start contributing, that they can look into projects they already use. This is what I did when I contributed to &lt;a href="https://www.scala-exercises.org/" rel="noopener noreferrer"&gt;scala-exercises.org&lt;/a&gt; website content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Identifying a potential contribution
&lt;/h2&gt;

&lt;p&gt;I was working through &lt;a href="https://www.scala-exercises.org/fp_in_scala" rel="noopener noreferrer"&gt;FP IN SCALA&lt;/a&gt; exercises, from "Functional Programming in Scala" book, in particular, I was doing the &lt;a href="https://www.scala-exercises.org/fp_in_scala/property_based_testing" rel="noopener noreferrer"&gt;Property Based Testing&lt;/a&gt; section.&lt;/p&gt;

&lt;p&gt;I noticed there was a typo where the syntax for the &lt;a href="https://www.scala-lang.org/" rel="noopener noreferrer"&gt;scala language&lt;/a&gt; was incorrect. Instead of showing &lt;code&gt;||&lt;/code&gt;, which means logical or in Scala, it was showing &lt;code&gt;\\&lt;/code&gt; that does not show correctly what it should be.&lt;/p&gt;

&lt;p&gt;I also noticed that one of the exercises' numbers was incorrect, in this case appearing duplicate. So instead of showing exercise &lt;code&gt;8.17&lt;/code&gt; it was showing &lt;code&gt;8.18&lt;/code&gt; when referring to problems from 8.17 section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking how to contribute
&lt;/h2&gt;

&lt;p&gt;So once I found what I could improve on the website, I looked at the project's &lt;a href="https://github.com/scala-exercises/exercises-fpinscala/blob/master/CONTRIBUTING.md" rel="noopener noreferrer"&gt;contribution guidelines&lt;/a&gt; and noticed that the process was fairly simple and there was no requirement for creating an issue before sending a pull request (PR).&lt;/p&gt;

&lt;p&gt;So I decided to create a pull request to it, one for each change since they address different concerns.&lt;/p&gt;

&lt;p&gt;I checked where the code I was supposed to change lived, so I could make the change. This was fairly easy because the page with the exercises had a link to the file on the respective repository that hosts the code. This was visible in an "Edit exercises" button at the bottom of the page, as well as a "View on GitHub" button on the top of the page. You can check the &lt;a href="https://www.scala-exercises.org/fp_in_scala/property_based_testing" rel="noopener noreferrer"&gt;page I changes here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;I clicked the link, which took me to the file I need to change. At this point, I started the process of contributing. I &lt;a href="https://docs.github.com/en/github/getting-started-with-github/fork-a-repo" rel="noopener noreferrer"&gt;forked the repository&lt;/a&gt; - creating a copy of the repository on my GitHub account. Then since the changes were fairly simple, I did not have to &lt;a href="https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository" rel="noopener noreferrer"&gt;clone the repository&lt;/a&gt; to my development environment, I did the change using GitHub GUI (graphical user interface). There I edited the file then created the branch and committed the changes.&lt;/p&gt;

&lt;p&gt;After changing the code, I submitted the pull requests for my changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fix exercise 8.9 function name from "\" to "||" =&amp;gt; &lt;a href="https://github.com/scala-exercises/exercises-fpinscala/pull/55" rel="noopener noreferrer"&gt;scala-exercises/exercises-fpinscala/pull/55&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Fix wrong exercise number for Ch. 8 =&amp;gt; &lt;a href="https://github.com/scala-exercises/exercises-fpinscala/pull/57" rel="noopener noreferrer"&gt;scala-exercises/exercises-fpinscala/pull/57&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually, one of the maintainers thanked me and merged my PRs. I also get to be in contributors mention in the page I changed :)&lt;/p&gt;




&lt;p&gt;So as you see, I fixed 2 typos that improved the content of the website. My change helped the page content be more clear, to someone using the project. I loved doing this contribution.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can find me on &lt;a href="https://twitter.com/isabelcmdcosta" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/isabelcosta" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and &lt;a href="https://isabelcosta.github.io/" rel="noopener noreferrer"&gt;my personal website&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to change last commit message</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sat, 21 Nov 2020 20:36:56 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/how-to-change-last-commit-message-3oha</link>
      <guid>https://dev.to/isabelcmdcosta/how-to-change-last-commit-message-3oha</guid>
      <description>&lt;p&gt;Often when making changes to code, I commit them and then have to change to commit I just made, either because I think the commit message could be better or I had to make a last-minute change to the code I wish to include in the commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Change last commit message
&lt;/h3&gt;

&lt;p&gt;So consider I committed changes with the following command (&lt;code&gt;-m&lt;/code&gt; to write one line commit message):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "fix: big feature X"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s how I fix the commit, using the &lt;code&gt;--amend&lt;/code&gt; option.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit --amend -m "fix: small feature X"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In case I want to add additional code to the commit, I run &lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt; before running &lt;code&gt;git commit --amend&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify new commit message
&lt;/h3&gt;

&lt;p&gt;To check that it worked and I fixed the right commit I check the latest commit with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git log --oneline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I use &lt;code&gt;--oneline&lt;/code&gt; because I just want to see the commit messages, instead of also seeing the name and email of the author of the commit. You’ll an output similar to this, where you can see the last commit has the correct message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1792519 (HEAD -&amp;gt; master, origin/master, origin/HEAD) fix: small feature X
701aa33  docs: add instructions to README
(END)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my environment, this will open vim, which I close by typing &lt;code&gt;:q&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix pushed commit
&lt;/h3&gt;

&lt;p&gt;In case I already pushed to the remote repository the commit I want to fix, I force the push to remote to update the commit. Preferably, you are working on a feature specific branch, which does not affect the main one (in case this messes the git history for some reason). So this is what I would run, where &lt;code&gt;&amp;lt;branch&amp;gt;&lt;/code&gt; is the branch you are working on (e.g.: &lt;code&gt;master&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push -f origin &amp;lt;branch&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Hope this helps you fix the last commit message.&lt;/p&gt;

</description>
      <category>git</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Ficheiros base num projeto Open Source</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sun, 08 Nov 2020 00:42:18 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/ficheiros-base-num-projeto-open-source-488n</link>
      <guid>https://dev.to/isabelcmdcosta/ficheiros-base-num-projeto-open-source-488n</guid>
      <description>&lt;p&gt;Um projecto Open Source costuma ter uma base de ficheiros, que permite colaboradores perceber como devem interagir com o projecto e quais as expectativas de quem mantém o projecto (maintainer). Estes são os ficheiros base que projetos open source costumam ter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Licença
&lt;/h2&gt;

&lt;p&gt;A Licença de um projeto open source é importante para os colaboradores saberem em que condições podem usar o projeto. No que diz respeito ao tipo de licença que se deve escolher, isso depende do projeto. Eu sei que há umas licenças mais permissivas que outras. Há licenças que permite a modificação e reutilização, etc, desde que o crédito seja devidamente atribuído aos criadores do projeto.&lt;/p&gt;

&lt;p&gt;Este ficheiro costuma estar na raiz do projeto. E normalmente tem o seguinte nome: &lt;code&gt;LICENSE.md&lt;/code&gt; ou &lt;code&gt;LICENSE.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Há um website que explica diferentes tipos de licenças - &lt;a href="https://choosealicense.com/" rel="noopener noreferrer"&gt;choosealicense.com&lt;/a&gt;. Aqui podes tentar perceber qual o que se adequa melhor ao teu projeto open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Código de conduta
&lt;/h2&gt;

&lt;p&gt;É muito importante ter um código de conduta num projeto open source. Isto permite aos colaboradores saberem que tipo de conduta é a adequada e a que não é aceitável na comunidade a volta de um projeto de modo a manter o conjunto de interações, na comunidade, segura e amigável para todos. Este ficheiro, também deve conter informações de como reportar violações deste código de conduta por parte de membros da comunidade, para que o ou a maintainer possa tomar as devidas ações.&lt;/p&gt;

&lt;p&gt;Se quiseres saber de exemplos de código de conduta, podes encontrar um bom exemplo, já adotado por vários projetos, em &lt;a href="https://www.contributor-covenant.org/" rel="noopener noreferrer"&gt;www.contributor-covenant.org&lt;/a&gt;. Este modelo de código de conduta tem traduções em várias linguas, incluindo &lt;a href="https://www.contributor-covenant.org/pt/version/1/4/code-of-conduct/" rel="noopener noreferrer"&gt;versão em português&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  README.md
&lt;/h2&gt;

&lt;p&gt;O &lt;code&gt;README&lt;/code&gt; é o ponto de partida de um colaborador num projeto Open Source. É neste ficheiro que se espera aprender mais sobre o projeto, como a sua missão e descrição, instruções para ter o projeto a funcionar, etc... Por isso é super importante que haja informação relevante para colaboradores sobre o projeto e links para o resto da documentação. O formato e o conteúdo deste ficheiro pode variar de projeto para projeto, o que interessa é que novos potenciais colaboradores, encontrem informação necessária para explorar mais sobre o projeto. Há projetos em que o &lt;code&gt;README&lt;/code&gt; representa a maior parte do projeto em si, por exemplo se o repositório for apenas conteúdo informativo como awesome lists (ex.: &lt;a href="https://github.com/vinta/awesome-python" rel="noopener noreferrer"&gt;vinta/awesome-python&lt;/a&gt; no GitHub). Este ficheiro, encontra-se na raiz do projeto. Por vezes, podem haver outros tipos de &lt;code&gt;README&lt;/code&gt; presentes em pastas do repositório, que podem explicar em detalhe informações relevantes sobre o conteúdo específico da pasta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guia de contribuição
&lt;/h2&gt;

&lt;p&gt;O guia de contribuição, &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;, ajuda colaboradores a perceber o tipo de e os passos para uma contribuição bem sucedida. Os passos de contribuição para um projeto podem diferir de projeto para projeto. Na comunidade onde estou, &lt;a href="https://github.com/anitab-org" rel="noopener noreferrer"&gt;AnitaB.org Open Source&lt;/a&gt;, nós pedimos aos colaboradores para criar uma &lt;em&gt;issue&lt;/em&gt; antes de submeter uma pull request (caso a issue não exista). Isto pode ser útil para nós que por vezes temos muitas contribuições, e podemos assim validar rapidamente &lt;em&gt;Pull Requests&lt;/em&gt; que são spam ou inválidas, e fechá-las. No entanto, já contribui para projetos, como na &lt;a href="https://dev.to/posts/my-first-open-source-contribution"&gt;minha primeira contribuição para Open Source&lt;/a&gt;, no qual podia simplesmente criar PRs com as minhas sugestões de melhoria do projeto, sem necessidade de criar uma issue antes. Como &lt;em&gt;maintainer&lt;/em&gt;, é neste ficheiro que se deve definir as expectativas que temos para com e dos colaboradores.&lt;/p&gt;

&lt;p&gt;Dependendo do projeto, podes encontrar este ficheiro na raiz do projeto, ou em pastas específicas (exemplos de pastas são &lt;code&gt;.github&lt;/code&gt; no GitHub, &lt;code&gt;.gitlab&lt;/code&gt; no GitLab ou docs).&lt;/p&gt;

&lt;h2&gt;
  
  
  Modelos de Issue e PRs
&lt;/h2&gt;

&lt;p&gt;Modelos de &lt;em&gt;issues&lt;/em&gt; e de &lt;em&gt;Pull Requests&lt;/em&gt; (PRs) pode ser útil para fazer com que haja consistência nas descrições das mesmas. Estes ficheiros, servem de exemplo e são usados no ato de criação das mesmas. No GitHub e no GitLab podes tê-las numas pastas especificas &lt;code&gt;.github&lt;/code&gt; ou &lt;code&gt;.gitlab&lt;/code&gt;, respectivamente, para as issues e PRs serem automaticamente preenchidas com os modelos, que depois os colaboradores apenas terão de editar. Como &lt;em&gt;maintainer&lt;/em&gt;, isto será útil para que colaboradores prestem especial atenção às expectativas dos maintainers para contribuições. Nestes modelos podes ter uma lista de pré-requisitos de uma contribuição, que pode facilitar o trabalho de triagem das &lt;em&gt;issues&lt;/em&gt; e PRs (exemplo: link para documentação regras de estilo de código, secção para descrever testes manuais feitos para uma nova funcionalidade adicionada, seção para incluir imagens tiradas das modificações a interface de utilizador como ecrã da aplicação, etc...).&lt;/p&gt;

&lt;p&gt;Se quiseres um exemplo de modelos de issues, um dos projectos que mantenho tem &lt;a href="https://github.com/anitab-org/mentorship-backend/tree/develop/.github/ISSUE_TEMPLATE" rel="noopener noreferrer"&gt;diferentes tipos de modelos para issues&lt;/a&gt; e exemplo de &lt;a href="https://github.com/anitab-org/mentorship-backend/blob/develop/.github/PULL_REQUEST_TEMPLATE.md" rel="noopener noreferrer"&gt;modelo de descrição de PRs&lt;/a&gt;. Também podes encontrar diferentes modelos neste repositorio - &lt;a href="https://github.com/devspace/awesome-github-templates" rel="noopener noreferrer"&gt;devspace/awesome-github-templates&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Descrição e Tópicos
&lt;/h2&gt;

&lt;p&gt;Descrição e Tópicos não são representados em forma de ficheiros, mas são igualmente importantes para a base de um projeto open source. Estes no GitHub, como dois campos que podes preencher sobre um repositório. Ambos os campos são das primeiras informações que um colaborador pode ver sobre o projeto. Este aparece quando o projeto é listado, sem precisarmos de estar na página do repositório. Por isso uma boa descrição e tópicos relevantes podem ser a diferença entre um colaborador decidir ver mais sobre o projeto ou não. Isto também se aplica a tópicos.&lt;br&gt;
Como &lt;em&gt;developer&lt;/em&gt; de uma certa tech stack, eu posso pesquisar projectos que usam uma &lt;em&gt;tech stack&lt;/em&gt; específica. Mesmo não sendo developer, posso querer encontrar projetos de impacto social, e pesquisar esse tópico específico. Isto ajuda a um colaborador ter uma ideia de um projeto, antes de ir a página do projeto e também perceber se é algo para o qual quer contribuir.&lt;/p&gt;




&lt;p&gt;Espero que isto te ajude se estiveres a começar um projeto ou a melhorá-lo para conseguires ter um projeto mais atrativo para novos colaboradores.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>portugues</category>
    </item>
    <item>
      <title>My First Open Source Contribution</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Mon, 27 Jul 2020 23:08:12 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/my-first-open-source-contribution-jlk</link>
      <guid>https://dev.to/isabelcmdcosta/my-first-open-source-contribution-jlk</guid>
      <description>&lt;p&gt;For a long time, I thought about contributing to Open Source, but I felt I did not know where to start. As a software engineer, I wanted to learn and build a portfolio of work through contributing to Open Source.&lt;/p&gt;

&lt;p&gt;Back in December 2017, I got the word of &lt;a href="https://24pullrequests.com/" rel="noopener noreferrer"&gt;24 Pull Requests&lt;/a&gt;, an initiative with a Christmas feel to it, where you can contribute to open source projects during the month of December.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdzl62e5cntsrn5ukqfyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdzl62e5cntsrn5ukqfyz.png" alt="24 Pull Requests website image)" width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I found about this, I decided to look into it and see if I could contribute. To start I thought about contributing with a “low hanging fruit” sort of issue. Even though my main interest was in coding, I wanted to start with the documentation type of contribution. So I looked into projects made of markdown files and found &lt;a href="https://github.com/fvcproductions/hire-me/pull/9" rel="noopener noreferrer"&gt;fvcproductions/hire-me&lt;/a&gt; which is about providing resources and advice for people looking for jobs, such as interview tips, job boards, and other types of resources.&lt;/p&gt;

&lt;p&gt;So after looking into this project I noticed that there was a job board that I knew that was not there so I saw an opportunity to contribute.&lt;/p&gt;

&lt;p&gt;Next, I read the &lt;a href="https://github.com/fvcproductions/hire-me#contributing" rel="noopener noreferrer"&gt;contribution guidelines which were very simple&lt;/a&gt;. The steps provided in this project guidelines were: 1. fork repository; 2. read contribution guidelines; 3. add my name to the credits section; 4. Open Pull Request; 5. Get pull request approved 🎉&lt;/p&gt;

&lt;p&gt;So after I forked the repository, I added my changes and my name to the credits in the README, and submitted a Pull Request. Here’s &lt;a href="https://github.com/fvcproductions/hire-me/pull/9" rel="noopener noreferrer"&gt;my pull request #9&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Some days after the maintainer of the repository merged my PR and thanked me for my contribution! I was so happy that I finally managed to do my first open source contribution after so much time delaying it. After this moment, I knew the basics of an open source workflow and I could apply to other contributions.&lt;/p&gt;

&lt;p&gt;Have you ever contributed to Open Source? If not, I hope this inspires you to get started :)&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Images of People of Color for content creation</title>
      <dc:creator>Isabel Costa</dc:creator>
      <pubDate>Sat, 20 Jun 2020 12:57:02 +0000</pubDate>
      <link>https://dev.to/isabelcmdcosta/images-of-people-of-color-for-content-creation-4296</link>
      <guid>https://dev.to/isabelcmdcosta/images-of-people-of-color-for-content-creation-4296</guid>
      <description>&lt;p&gt;A couple of years ago I saw &lt;a href="https://peopleofcolorintech.com/articles/where-to-find-free-stock-photos-with-people-of-color/" rel="noopener noreferrer"&gt;this great blog post&lt;/a&gt; from &lt;a href="https://peopleofcolorintech.com/" rel="noopener noreferrer"&gt;peopleofcolorintech.com&lt;/a&gt; about stock photos with people of color in it. I found this amazing! I never thought about using my blog posts or other types of public content to spread more visual representations of people of color.&lt;/p&gt;

&lt;p&gt;After reading this, I became aware of the existence of pictures/illustrations I could use that include people of color in online content such as blogs, presentations, promotion flyers, etc. I understood I could use them as a way to increase the representation of women of color in online content, more specifically related to the Tech industry.&lt;/p&gt;

&lt;p&gt;Since I became aware of this when I include pictures of people in my blog posts I try to always include people of color on it.&lt;/p&gt;

&lt;p&gt;Here are three resources that I am always aware of when looking at stock photos for my blog posts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.flickr.com/photos/wocintechchat" rel="noopener noreferrer"&gt;Women of color in tech chat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://createherstock.com/" rel="noopener noreferrer"&gt;CreateHER Stock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blackillustrations.com/" rel="noopener noreferrer"&gt;Illustration of Black people&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I mostly use photos from &lt;a href="http://wocintechchat.com/" rel="noopener noreferrer"&gt;WOCinTech Chat&lt;/a&gt;, but I always have in mind all of these resources. The cover image is in fact from there! You can find that image &lt;a href="https://www.flickr.com/photos/wocintechchat/25926634151/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Thank you for reading this, I hope you find these useful and consider using these resources when appropriate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://code.likeagirl.io/images-of-people-of-color-for-content-creation-920a05778ca4" rel="noopener noreferrer"&gt;This was originally posted on Medium.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find me on &lt;a href="https://github.com/isabelcosta" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/isabelcmdcosta" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/isabelcmdcosta" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://isabelcosta.github.io/" rel="noopener noreferrer"&gt;my personal website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>blogging</category>
      <category>content</category>
      <category>representation</category>
    </item>
  </channel>
</rss>
