<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Open Source Hub</title>
    <description>The latest articles on Forem by Open Source Hub (@opensourcehubio).</description>
    <link>https://forem.com/opensourcehubio</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%2F882381%2Fb3ba2184-9d97-4529-a011-4eeb8058f280.jpg</url>
      <title>Forem: Open Source Hub</title>
      <link>https://forem.com/opensourcehubio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/opensourcehubio"/>
    <language>en</language>
    <item>
      <title>A Beginners introduction to Git &amp; GitHub</title>
      <dc:creator>Open Source Hub</dc:creator>
      <pubDate>Mon, 08 Aug 2022 20:23:02 +0000</pubDate>
      <link>https://forem.com/opensourcehubio/a-beginners-introduction-to-git-github-152a</link>
      <guid>https://forem.com/opensourcehubio/a-beginners-introduction-to-git-github-152a</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Imagine being faced with a situation where for whatsoever reason, after changing a file multiple times, you want to take the document back to the state it was at an earlier time. If you didn’t save that particular version separately, then you would have to edit our file again to return it to the point you need it to be. Git was created precisely to remove this problem completely. You can easily save versions of your files and also connect with an online repository where you can back up those files and also collaborate with other developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Git
&lt;/h2&gt;

&lt;p&gt;“​​Git is a distributed revision control and source code management system with an&lt;br&gt;
emphasis on speed. Git was initially designed and developed by Linus Torvalds&lt;br&gt;
for Linux kernel development. Git is free software distributed under the terms&lt;br&gt;
of the GNU General Public License version 2.”&lt;/p&gt;

&lt;p&gt;In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large websites, or other collections of information. Version control is a component of software configuration management. &lt;/p&gt;

&lt;p&gt;Git is not a version control system but it has some similarities to them.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Github
&lt;/h2&gt;

&lt;p&gt;GitHub, Inc. is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features&lt;/p&gt;

&lt;p&gt;Wikipedia&lt;/p&gt;
&lt;h2&gt;
  
  
  Why use Git/Github
&lt;/h2&gt;

&lt;p&gt;You’ve been introduced to the general idea of git and github.&lt;/p&gt;

&lt;p&gt;Great project management tool with easy access at anytime&lt;br&gt;
Great collaboration tools as conflicts are handled well by git&lt;br&gt;
Also, your project is open to almost everyone and other developers can contribute to the project.&lt;br&gt;
It is free and open source.&lt;br&gt;
It is fast and small&lt;/p&gt;
&lt;h2&gt;
  
  
  How to use Git &amp;amp; Github
&lt;/h2&gt;

&lt;p&gt;To start using git, you need to make sure you have it running on your computer. If you are running a Linux system, you probably have it installed. You can check if it is installed by opening your terminal and entering the command below;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git –version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will return the version of git we have installed –if it is installed. If this doesn’t work, we then have to download git on our computer.&lt;/p&gt;

&lt;p&gt;For a Linux system, you’ll do something like this;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On a mac or windows, you need to visit the git website to download it. Once downloaded and installed, you want to configure git globally. To do that, you need to type the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git config –global user.name “NAME”
&lt;span class="nv"&gt;$ &lt;/span&gt;git config –global user.email “EMAIL”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to replace USERNAME &amp;amp; EMAIL with your name and email respectively.&lt;/p&gt;

&lt;p&gt;After this is done, you need to initialize a local repository. To do this enter the following in the directory you want to have your files;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this done, we have successfully initiated git in our directory.&lt;/p&gt;

&lt;p&gt;Let’s proceed on to talk a bit about github now. With git as a wonderful tool for versioning, you certainly have an online repository to deploy these versioned systems to. To get started with github, you need to first create an account on &lt;a href="https://github.com"&gt;https://github.com&lt;/a&gt;. Going through all the processes will bring you to a new page where you can create repositories.&lt;/p&gt;

&lt;p&gt;Quick Note: “A repository or repo for short is a storage location for software packages.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting git with Github
&lt;/h3&gt;

&lt;p&gt;After creating your repo, you should link your local repository with it. To do this, go back to your terminal and enter the code below.&lt;/p&gt;

&lt;p&gt;Make sure you replace the user and repo names with yours.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git remote add origin https://github.com/&amp;lt;username&amp;gt;/&amp;lt;repo_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can add one or more files to the repository. To make git aware of your file in its current state, you need to add the file(s) to the git staging environment. To do this, you enter the simple &lt;code&gt;git add .&lt;/code&gt; command. This command adds all files in the working directory to the staging environment. To add a single file, you can do&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git add README.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check your staging environment by using the &lt;code&gt;git status&lt;/code&gt; command. This shows the files in the staging environment and in the working directory(yet to be added to staging).&lt;/p&gt;

&lt;p&gt;To commit your changes to the repo, you enter the &lt;code&gt;git commit&lt;/code&gt; command followed by an &lt;code&gt;m&lt;/code&gt; flag to input your commit message.&lt;/p&gt;

&lt;p&gt;Here is an example of how to do that&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; “My first commit”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can just push our commits in the local repositories to the online repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, your files are backed up to an online repository and properly versioned. At any point in time where you change your files, you can easily commit and push them to github and that automatically saves a new and latest version of your file.&lt;/p&gt;

&lt;p&gt;If you need to visit your file at some earlier version, you can easily view that without any hassle.&lt;/p&gt;

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

&lt;p&gt;Having dealt with the basics of git and github, you would want to look at other topics like cloning, branching, etc. I’ll be making another post on that in a few.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is Open Source</title>
      <dc:creator>Open Source Hub</dc:creator>
      <pubDate>Mon, 11 Jul 2022 18:12:06 +0000</pubDate>
      <link>https://forem.com/opensourcehubio/what-is-open-source-3hde</link>
      <guid>https://forem.com/opensourcehubio/what-is-open-source-3hde</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hi there! So I’m here to talk about Open Source software as I believe it is a significant pillar in the affairs of the software industry of our time. I’ll define software as any set of instructions, data, or programs which is used to operate computers. This software executes tasks based on the instructions defined within. Our world of today has grown dependent on information technology which rides on the software created by developers and engineers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Open Source Software
&lt;/h2&gt;

&lt;p&gt;I'd like to briefly introduce and describe the topic, Open-source(OS) or open-source software(OSS). OSS is any software application or solution whose source code is made available to users and developers to read, enhance, improve, modify and consume in any form as long as the guidelines in the license are followed. With OSS, developers can use this non-proprietary software provided by other developers and organizations and collaborate to build or enhance the project or software. OSS is often distributed through online repositories like GitHub, Gitlab, etc.&lt;/p&gt;

&lt;p&gt;Although some guidelines for the project should be included in the &lt;code&gt;README.md&lt;/code&gt; file, the license contains predefined legal binding software guidelines for overseeing its usage. They are the &lt;code&gt;terms &amp;amp; conditions&lt;/code&gt; that are referenced as regards the software usage and distribution. Below are a few of the licenses available for open source software;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache License 2.0&lt;/li&gt;
&lt;li&gt;GNU General Public License v3.0&lt;/li&gt;
&lt;li&gt;MIT License&lt;/li&gt;
&lt;li&gt;BSD 3-Clause "New" or "Revised" License&lt;/li&gt;
&lt;li&gt;Creative Commons Zero v1.0 Universal&lt;/li&gt;
&lt;li&gt;GNU General Public License v2.0&lt;/li&gt;
&lt;li&gt;Mozilla Public License 2.0&lt;/li&gt;
&lt;li&gt;The Unlicense&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;GNU General Public License&lt;/code&gt; was released by Richard Stallman, a programmer at MIT who believed that software should be made available to developers for use of any kind. He started to release free code under this license. This brought about a series of movements and events that advocated for free software. One of these notable events is the Freeware Summit organized by Tom O'Reilly, in which leaders of open source projects of the time were present. On that day, the term &lt;code&gt;Open Source&lt;/code&gt; was decided by vote to be the name that represents any free and publicly available sourceware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terms in Open Source
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;README.md&lt;/code&gt;: This is a file that serves as the introduction manual or the simplified form of documentation for a software source code. It highlights the fundamental usage of the software and includes additional project-specific information.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Pull Request&lt;/code&gt;: A pull request let you tell others about changes you've pushed to a branch in an online code repository. Once a pull request is created by a contributor, it initiates the process of merging new code changes with the main project repository&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Codebase&lt;/code&gt;: In software development, a codebase is a collection of source code used to build a particular software system, application, or software component.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DVSC&lt;/code&gt;: In software development, distributed version control is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open Source Initiative (OSI)
&lt;/h2&gt;

&lt;p&gt;The Open Source Initiative (OSI) was started to promote the use of open-source software in the commercial world. This is done by providing a set of rules or guidelines for releasing an open-source software called the Open Source Definition (OSD). They also offer the OSI Certified Open Source Software Certification Mark and Program which certifies software that is distributed under a license that guarantees the right to read, redistribute, modify, and use the software freely. The guidelines laid down by the OSD include;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free redistribution of the software&lt;/li&gt;
&lt;li&gt;The integrity of the author's source code&lt;/li&gt;
&lt;li&gt;No discrimination against persons or groups&lt;/li&gt;
&lt;li&gt;The license must not be specific to a product&lt;/li&gt;
&lt;li&gt;The license must not restrict other software&lt;/li&gt;
&lt;li&gt;The license must be technology-neutral&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Relevance of OSS
&lt;/h2&gt;

&lt;p&gt;Over the past 50 years, a lot of events have happened that contributed to the advancement and general adoption of the open-source idea. Some of these happenings are;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The creation of GNU: This was an open-source clone of the Unix operating system. GNU stands for &lt;code&gt;GNU’s Not Unix&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The writing of the General Public License (GPL)&lt;/li&gt;
&lt;li&gt;The advent of Linux &amp;amp; RedHat&lt;/li&gt;
&lt;li&gt;The Open-source Apache web server and Mozilla Firefox&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As mentioned earlier, today's software world rides, to a major extent, on open-source software. Looking at our world today, we can see that several software applications and programs we interact with as users and developers are open-source software. This stands to prove that OSS is a major force in the software industry of today. Some of them include; Mozilla Firefox, Linux, VLC Media player, Blender, Python, etc. This results in the need to maintain and secure these projects bringing about a cost implication. This cost implication is often handled by the community and volunteers around this project.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to make money in open source
&lt;/h2&gt;

&lt;p&gt;There is the general misconception that open source software means free software. The ‘free’ here means free of restrictions with the source code. Software however can be commercial and still be open source simply because it is required to release its source code based on some particular license. Open-source programmers who decide to make their software free can still make money via various means which include;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paid training and support&lt;/li&gt;
&lt;li&gt;Custom feature development&lt;/li&gt;
&lt;li&gt;Troubleshooting and Installing&lt;/li&gt;
&lt;li&gt;Offering technical support&lt;/li&gt;
&lt;li&gt;Setting up cloud services for the projects&lt;/li&gt;
&lt;li&gt;Licensing open source software&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to contribute to open source
&lt;/h2&gt;

&lt;p&gt;Contributing to an open-source project is a great way for beginners to learn more about software generally and about a particular project. Here, you can pick up coding conventions that have been implemented in the project. It’s also an avenue to network and meet other developers and put yourself in sight of employers. To get started as a beginner, you can simply make a comment on the code, report a bug, or even help in documenting the codebase.&lt;/p&gt;

&lt;p&gt;Before contributing to OSS however, some things have to be considered to help decide on the project to work on. Some of these factors include;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programming language: To contribute to the source code of software you need to be familiar with the language(s) used for the project.&lt;/li&gt;
&lt;li&gt;Project size: For beginners, a large codebase might seem overwhelming and it might be difficult to find a starting point. You would want to start with something relatively small and move from there.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following simple steps you can take to start contributing to open source&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn the basics of Github and Git&lt;/li&gt;
&lt;li&gt;Decide on the open-source project to contribute to&lt;/li&gt;
&lt;li&gt;Join communities&lt;/li&gt;
&lt;li&gt;Start contributing: You can start by finding solutions to already raised issues or looking for bugs in the project. You can also help others understand the code better by documenting the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advantages of open source software
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;With open-source software, checks and improvements are implemented faster by peer programming because it allows collaboration and has an active community&lt;/li&gt;
&lt;li&gt;Open source allows users to keep track of the activities or changes on the code without interacting with the owner. This helps to improve transparency.&lt;/li&gt;
&lt;li&gt;Open-source software offers flexibility to programmers as they can modify the source code to alight with their business or personal needs.&lt;/li&gt;
&lt;li&gt;OSS is cost-effective because you mostly have to pay for technical support and maintenance without paying for the software itself.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closed source
&lt;/h2&gt;

&lt;p&gt;Closed source software, which is also known as commercial or proprietary software, is any type of software that does not allow users or developers outside the internal development team access to its source code. With proprietary software, access is not given to its source code because it is the intellectual property of a person or group of people. As a result, users often pay to make use of this software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Differences between open source and closed source software
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;S/N&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;th&gt;Closed Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.&lt;/td&gt;
&lt;td&gt;This code can be modified by other users&lt;/td&gt;
&lt;td&gt;The only individual or organization who has created the software can only modify the code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.&lt;/td&gt;
&lt;td&gt;Programmers freely provide improvement for recognition if their improvement is accepted&lt;/td&gt;
&lt;td&gt;Programmers are hired to improve the software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.&lt;/td&gt;
&lt;td&gt;There are not so many restrictions on users based on usability and modification of software&lt;/td&gt;
&lt;td&gt;there are so many restrictions on users based on usability and modification of software&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How can I learn more
&lt;/h2&gt;

&lt;p&gt;The best way to learn about open source is to start participating actively in open source. &lt;a href="https://github.com"&gt;Github&lt;/a&gt; is a wonderful place to get started with open source as it is one of the largest online repositories for open-source software. You can also check out &lt;a href="https://opensource.com/"&gt;opensource.com&lt;/a&gt; for a more in-depth breakdown of the topic &lt;code&gt;Open Source&lt;/code&gt;. Communities are also a great way of learning about open source as you get to interact with other developers and consumers. &lt;a href="https://discord.gg/opensource"&gt;Here&lt;/a&gt; is a link to our open-source community on discord where you can connect with other devs in the open source space.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>opensource</category>
      <category>community</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
