<?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: Clifford Mapesa</title>
    <description>The latest articles on DEV Community by Clifford Mapesa (@droffilc1).</description>
    <link>https://dev.to/droffilc1</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%2F1213029%2F599a22ab-ca0f-4388-8e38-e574d158db44.jpeg</url>
      <title>DEV Community: Clifford Mapesa</title>
      <link>https://dev.to/droffilc1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/droffilc1"/>
    <language>en</language>
    <item>
      <title>What are argc and argv?</title>
      <dc:creator>Clifford Mapesa</dc:creator>
      <pubDate>Mon, 27 Nov 2023 06:47:12 +0000</pubDate>
      <link>https://dev.to/droffilc1/what-are-argc-and-argv-4m02</link>
      <guid>https://dev.to/droffilc1/what-are-argc-and-argv-4m02</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Imagine you want to run a program that accepts command-line arguments. Let's consider a program like &lt;code&gt;gcc&lt;/code&gt;. To compile an object file named &lt;code&gt;progam&lt;/code&gt; we type the following to the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcc my_program.c -o my_program

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The character &lt;code&gt;my_program.c&lt;/code&gt; ,&lt;code&gt;-o&lt;/code&gt;, &lt;code&gt;my_program&lt;/code&gt; are all arguments to the &lt;code&gt;gcc&lt;/code&gt; command. (&lt;code&gt;gcc&lt;/code&gt; is an argument as well, as we shall see)&lt;/p&gt;

&lt;p&gt;Command line arguments in C are very useful. They give a function the ability to pass arguments from the command line. All arguments you pass to the command line end up as arguments to the &lt;code&gt;main&lt;/code&gt; function in your program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;main&lt;/code&gt; function that accepts command line arguments is written like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char argv[])
{
    return (0);
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;argc&lt;/code&gt; - Stands for "argument count". It represents the count of arguments supplied to the program.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;argv&lt;/code&gt; - Stands for "argument vector". A &lt;strong&gt;vector&lt;/strong&gt; is a one-dimensional array and &lt;code&gt;argv&lt;/code&gt; is a one-dimensional array of strings.&lt;/p&gt;

&lt;p&gt;In some functions the &lt;code&gt;argv&lt;/code&gt; is declared like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char **argv)
{
    return (0);
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The name of an array is converted to the address of its first arguments. Both declarations are similar in this context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Let's look at this example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcc my_program.c -o my_program

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This would result in the following values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;argc: 4
argv[0]: gcc
argv[1]: my_program.c
argv[2]: -o
argv[3]: my_program

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, the first argument (&lt;code&gt;argv[0]&lt;/code&gt;) is the name by which the program was called, in this case &lt;code&gt;gcc&lt;/code&gt;. Thus, there will always be at least one argument to a program, and &lt;code&gt;argc&lt;/code&gt; will always be at least 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

/**
 * main - Entry point.
 * @argc: Argument count
 * @argv: Argument vector
 *
 * Return: 0 (Success)
 */
int main(int argc, char *argv[])
{
    printf("Argument count (argc): %d\n", argc); 

    /*Print each command-line argument */
     for (int i = 0; i &amp;lt; argc; i++) 
     { 
         printf("Argument %d: %s\n", i, argv[i]); 
     }
    return (0);
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you compile and run this program with the command &lt;code&gt;./program arg1 arg2 arg3&lt;/code&gt;, the output will be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Argument count (argc): 4 
Argument 0: ./program 
Argument 1: arg1 
Argument 2: arg2 
Argument 3: arg3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In summary, &lt;code&gt;argc&lt;/code&gt; and &lt;code&gt;argv&lt;/code&gt; are essential for building flexible and versatile C programs that can adapt their behavior based on command-line inputs.&lt;/p&gt;

&lt;p&gt;Happy hacking!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Getting Started With Static Libraries In C</title>
      <dc:creator>Clifford Mapesa</dc:creator>
      <pubDate>Wed, 22 Nov 2023 09:21:48 +0000</pubDate>
      <link>https://dev.to/droffilc1/getting-started-with-static-libraries-in-c-m39</link>
      <guid>https://dev.to/droffilc1/getting-started-with-static-libraries-in-c-m39</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;To understand how &lt;strong&gt;static libraries&lt;/strong&gt; work let's first look at the compilation process of a file in C programming. &lt;strong&gt;Compilation&lt;/strong&gt; is when code is transformed from human-readable language to machine language. The software that is used for this conversion is known as a &lt;strong&gt;Compiler,&lt;/strong&gt; e.g. gcc.&lt;/p&gt;

&lt;p&gt;The C compilation follows these stages:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Preprocessing
&lt;/h2&gt;

&lt;p&gt;This is the first stage where the source code is passed. The source code is made ready for compilation. The source code is expanded (adds the required information) and then this expanded source code is passed on to the compiler.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Compilation
&lt;/h2&gt;

&lt;p&gt;Once preprocessing is complete, the actual compilation begins. The compiler takes the C code and translates it into assembly code, specific to the target platform. Assembly code represents a low-level view of the program, consisting of instructions that the processor can execute. The source file which got the ( &lt;strong&gt;.i&lt;/strong&gt; ) extension in the previous step gets converted into ( &lt;strong&gt;.s&lt;/strong&gt; ) extension by the compiler.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Assembly
&lt;/h2&gt;

&lt;p&gt;Next, the assembler converts the assembly code into machine code, also known as object code. The object code consists of binary representations of instructions and data. This step is a crucial bridge between human-readable code and the language the computer understands. -The extension of the file in this step becomes ( &lt;strong&gt;.obj&lt;/strong&gt; ).&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Linking
&lt;/h2&gt;

&lt;p&gt;A linker is a tool that is used to link all the parts of a program together in order of execution. The Linker plays a very important role. If your C program includes a header file, and you are using some function defined in that header file, then the Linker will ink the required object code for the function in the library, to the object code of your program and package them together.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: To remember the compilation process use &lt;strong&gt;PCAL&lt;/strong&gt; mnemonic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tQsxPfj8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nerdyelectronics.com/wp-content/uploads/2017/07/GCC_CompilationProcess.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tQsxPfj8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nerdyelectronics.com/wp-content/uploads/2017/07/GCC_CompilationProcess.png" alt="" width="615" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Figure: Compilation process of a C program&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;library&lt;/strong&gt; is a file containing several object files that can be used as a single entity in the linking phase of a program. A &lt;strong&gt;static library&lt;/strong&gt; is a collection of object files that are linked into the program during the linking phase of compilation, and are not relevant during runtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create a static library
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;The first step is to compile our code using a compiler e.g. &lt;code&gt;gcc&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;gcc -c *.c

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;gcc&lt;/code&gt; is the compiler&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;-c&lt;/code&gt; flag informs &lt;code&gt;gcc&lt;/code&gt; to compile our &lt;code&gt;C&lt;/code&gt; files without the linking phase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The argument &lt;code&gt;.c*&lt;/code&gt; tells &lt;code&gt;gcc&lt;/code&gt; to compile &lt;strong&gt;ALL&lt;/strong&gt; files whose names end with &lt;code&gt;.c&lt;/code&gt; extension&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;The next step is to use a program called &lt;strong&gt;ar&lt;/strong&gt; for "archiver" to create a static library. This program can be used to create static libraries, modify object files in the static library, list the names of object files in the library, and so on. In order to create a static library, we can use a command like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ar -rc libexample.a *.o

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;* &lt;code&gt;ar&lt;/code&gt; is the name of a program that creates static libraries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;r&lt;/code&gt; flag tells it to insert files into the archive, if a file with the same name exists it will be replaced.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;c&lt;/code&gt; flag tells &lt;code&gt;ar&lt;/code&gt; to create the library if it doesn't already exist. If it does exist, the command will proceed, replacing existing files with new ones.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;libexample.a&lt;/code&gt; is the name of the library. The prefix " &lt;strong&gt;lib&lt;/strong&gt;" is the naming convention. The &lt;code&gt;.a&lt;/code&gt; extension is commonly used for static libraries in Unix-like systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;.o&lt;/code&gt; this matches all files with the extension &lt;code&gt;.o&lt;/code&gt; in the current directory. These are the object files that will be added to the archive. Object files are typically the result of compiling source code files.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3
&lt;/h2&gt;

&lt;p&gt;After an archive is created, or modified, there is a need to index it. This index is later used by the compiler to speed up symbol lookup inside the library, and to make sure that the order of the symbols in the library won't matter during compilation (this will be better understood when we take a deeper look at the link process at the end of this tutorial). The command used to create or update the index is called 'ranlib', and is invoked as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ranlib libexample.a

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we want to see object files present in our static library we use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ar -t libexample.a

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ar&lt;/code&gt;: This is the archive command in Unix-like operating systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-t&lt;/code&gt;: This option stands for "table of contents." It is used to display the names of the files (object files) contained in the archive without extracting them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;libexample.a&lt;/code&gt;: This is the name of the static library for which you want to view the table of contents.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can also see the symbols and associated information in our library, using the command &lt;code&gt;nm&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;nm libexample.a

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to use a C Library in a program
&lt;/h2&gt;

&lt;p&gt;When compiling your main program, specify the static library using the &lt;code&gt;-l&lt;/code&gt; flag (for library) and provide the library name (without the "lib" prefix and ".a" extension). For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcc main.o -o my_program -L. -lexample

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;`&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;main.o&lt;/code&gt;: Your main program's object file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-o my_program&lt;/code&gt;: Specifies the output executable name.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-L.&lt;/code&gt;: Instructs the linker to look for libraries in the current directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-lexample&lt;/code&gt;: Links with the &lt;code&gt;libexample.a&lt;/code&gt; static library.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to run our program
&lt;/h2&gt;

&lt;p&gt;The command we can use, after all these steps, is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
./my_program&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages and Disadvantages
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplicity:&lt;/strong&gt; Easy to use an deploy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt; Generally faster execution since everything is resolved at compile time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Independence:&lt;/strong&gt; No external dependencies during runtime&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; Can lead to larger executables&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Updates:&lt;/strong&gt; Requires recompilation if the library is modified.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shared Memory:&lt;/strong&gt; Multiple instances of a program share the same code in memory&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to use static libraries
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;When performance is critical and the size of the executable is not a significant concern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suitable for small to medium-sized projects, where simplicity and independence are valued.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In summary, static libraries are a powerful tool for code organization, reuse, and distribution. They simplify the process of including external code in your projects and provide a way to create standalone executables. However, developers need to consider trade-offs, such as larger executables and the need for recompilation when making changes to the library.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docencia.ac.upc.edu/FIB/USO/Bibliografia/unix-c-libraries.html"&gt;Building And Using Static And Shared "C" Libraries&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nerdyelectronics.com/compilation-process-c-programs/"&gt;Compilation process of C programs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Introduction To Open Source Vocabulary</title>
      <dc:creator>Clifford Mapesa</dc:creator>
      <pubDate>Sat, 18 Nov 2023 08:13:37 +0000</pubDate>
      <link>https://dev.to/droffilc1/introduction-to-open-source-vocabulary-4kh</link>
      <guid>https://dev.to/droffilc1/introduction-to-open-source-vocabulary-4kh</guid>
      <description>&lt;h2&gt;
  
  
  What is open source software?
&lt;/h2&gt;

&lt;p&gt;Open source software (OSS) is software whose &lt;strong&gt;source code&lt;/strong&gt; is made available to the public. In this way, it is available for use, modification, and distribution with its own rights. &lt;strong&gt;Source code&lt;/strong&gt; is part of the software that most users don't see, it's code that programmers manipulate to control how a program or application behaves. Programmers with access to source code can change a program by adding to it, changing it, or fixing sections of it that arent working properly. OSS includes a license that permits programmers to modify a piece of software to best fit their needs or user's needs and control how the software can be distributed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open source vocabulary
&lt;/h2&gt;

&lt;p&gt;To be able to delve into the world of open source and in the process have a smooth transition it is imperative for one to know the vocabulary used. Here are some of the terms used in open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; It is a collection of files and folders associated with a project, along with each file's revision history. Mostly managed by &lt;a href="https://en.wikipedia.org/wiki/Version_control"&gt;version control&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collaborators/Contributors:&lt;/strong&gt; These are people who take part in the contribution process. It can be through code, documentation, reviews, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Commit:&lt;/strong&gt; A commit indicates changes made to files and folders in a repository. It provides a history of changes made.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Forking:&lt;/strong&gt; It is making a copy of a &lt;code&gt;repository&lt;/code&gt; from one user's account when you don't have write access to it. So you can just copy it and modify it under your own account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pull request:&lt;/strong&gt; When you have made changes and you want to update the changes to the original repository you make a &lt;code&gt;pull request&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Merge:&lt;/strong&gt; It is when the owner of the original accepts the changes you've made and updates the changes to the original &lt;code&gt;repository&lt;/code&gt;. If your &lt;code&gt;pull request&lt;/code&gt; is accepted by the owner then you get its credit on the original site and shows up in your user profile&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Branch:&lt;/strong&gt; When you want to make changes to a &lt;code&gt;repository&lt;/code&gt; you create a branch and then check it out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintainers:&lt;/strong&gt; They are in charge of making decisions, code reviews, and supervising the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code review:&lt;/strong&gt; Acts as quality assurance of a code base. Help in identifying bugs, increase code quality, and help developers understand/ or learn the source code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Issues:&lt;/strong&gt; Mostly used in reporting bugs and requesting features. Sometimes it hosts discussions, helps process support requests, or even submits documentation feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://README.md"&gt;&lt;strong&gt;README.md&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;:&lt;/strong&gt; It serves as the face of the project. It introduces and explains a project by providing a detailed description of the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://CONTRIBUTING.md"&gt;&lt;strong&gt;CONTRIBUTING.md&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;:&lt;/strong&gt; A &lt;a href="http://CONTRIBUTING.md"&gt;CONTRIBUTING.md&lt;/a&gt; file, in an open source repository or site, provides potential project contributors with a short guide to how they can help with the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CODE-OF-CONDUCT:&lt;/strong&gt; It is a document that establishes expectations for behavior for a project's participant. Defines standards for how to engage in a community&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Open source contribution is an opportunity to learn new skills, connect with other contributors, and make a positive impact.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.github.com/en"&gt;Github Docs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://about.gitlab.com/topics/version-control/what-is-code-review/"&gt;Code review:&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
