<?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: Istiak Islam</title>
    <description>The latest articles on DEV Community by Istiak Islam (@isttiiak).</description>
    <link>https://dev.to/isttiiak</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%2F1256841%2Fb34509b0-8d0f-4cf8-8332-e2562ec740a4.jpg</url>
      <title>DEV Community: Istiak Islam</title>
      <link>https://dev.to/isttiiak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/isttiiak"/>
    <language>en</language>
    <item>
      <title>Git &amp; GitHub for Beginners: A Hands-On Guide</title>
      <dc:creator>Istiak Islam</dc:creator>
      <pubDate>Wed, 04 Jun 2025 02:41:16 +0000</pubDate>
      <link>https://dev.to/isttiiak/git-github-for-beginners-a-hands-on-guide-52m</link>
      <guid>https://dev.to/isttiiak/git-github-for-beginners-a-hands-on-guide-52m</guid>
      <description>&lt;h2&gt;
  
  
  🚀 Git &amp;amp; GitHub Made Simple
&lt;/h2&gt;

&lt;p&gt;Version control is a superpower for developers. Git and GitHub is the most popular combo to make it happen. In this tutorial, you’ll learn the essential Git commands, how GitHub fits into the picture, and how to manage your code like a pro (even if you're just starting out!).&lt;/p&gt;

&lt;p&gt;Let’s dive in! 🌊&lt;/p&gt;




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

&lt;p&gt;Git is a version control system that helps you track changes in your code over time. It allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save your progress (commits)&lt;/li&gt;
&lt;li&gt;Go back to previous versions&lt;/li&gt;
&lt;li&gt;Work with others on the same project (branches, merges)&lt;/li&gt;
&lt;li&gt;Resolve code conflicts and maintain a clean history&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🐙 What is GitHub?
&lt;/h2&gt;

&lt;p&gt;GitHub is a cloud-based platform that hosts your Git repositories. With GitHub, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Store your code remotely&lt;/li&gt;
&lt;li&gt;Share it with collaborators&lt;/li&gt;
&lt;li&gt;Review, comment, and merge changes&lt;/li&gt;
&lt;li&gt;Manage projects using issues and pull requests&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Basic Git Commands
&lt;/h2&gt;

&lt;p&gt;Here’s a quick overview of the most essential Git commands:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 &lt;code&gt;git clone&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Copies a remote repository (e.g., from GitHub) to your local machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repository-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/username/project-name.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  📋 &lt;code&gt;git status&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Shows the current state of your working directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll see files that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;untracked&lt;/strong&gt; – new files not yet staged
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;modified&lt;/strong&gt; – files that changed but are not staged
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;staged&lt;/strong&gt; – ready to be committed
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;unmodified&lt;/strong&gt; – clean and unchanged&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ➕ &lt;code&gt;git add&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Adds files to the staging area (preparing them for commit).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add all files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ✅ &lt;code&gt;git commit&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Saves a snapshot of your staged changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Your commit message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🚀 &lt;code&gt;git push&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Uploads your local commits to the remote repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  📁 &lt;code&gt;git init&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Initializes a new Git repository in your local directory.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This sets up a &lt;code&gt;.git&lt;/code&gt; folder to track your changes.&lt;/p&gt;




&lt;h3&gt;
  
  
  🌐 &lt;code&gt;git remote&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Links your local repository to a remote one (like GitHub).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &amp;lt;remote-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View your remote URLs:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;






&lt;h3&gt;
  
  
  🌿 &lt;code&gt;git branch&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Manages branches in your repository. You can create, list, delete, or rename branches.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Create and Connect a Local Repository
&lt;/h2&gt;

&lt;p&gt;Let’s set up a new Git project step-by-step:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new folder and add your project files.&lt;/li&gt;
&lt;li&gt;Initialize Git:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create a new repository on GitHub.&lt;/li&gt;
&lt;li&gt;Link your local repo to GitHub:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin https://github.com/your-username/your-repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Rename the default branch to &lt;code&gt;main&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-M&lt;/span&gt; main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Push your first commit:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial commit"&lt;/span&gt;
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From now on, just use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌱 Branching and Merging
&lt;/h2&gt;

&lt;p&gt;Branching allows you (or your team) to work on different features without affecting the main codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Create a new branch:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔄 Switch between branches:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🧹 Delete a branch (from another branch):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-d&lt;/span&gt; feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔍 See Differences Between Branches
&lt;/h3&gt;

&lt;p&gt;Compare your current branch with &lt;code&gt;main&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔀 Merge a Branch
&lt;/h3&gt;

&lt;p&gt;First, switch to the &lt;code&gt;main&lt;/code&gt; branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then merge the feature branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git merge feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚩 Pull Requests (PR)
&lt;/h2&gt;

&lt;p&gt;Instead of merging directly from your local machine:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Push your &lt;strong&gt;feature&lt;/strong&gt; branch to GitHub.&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;Pull Request (PR)&lt;/strong&gt; on GitHub.&lt;/li&gt;
&lt;li&gt;Have someone review and approve it.&lt;/li&gt;
&lt;li&gt;Merge the branch into &lt;code&gt;main&lt;/code&gt; on GitHub.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔄 Sync with GitHub
&lt;/h2&gt;

&lt;p&gt;After merging on GitHub, your local code may be outdated. To fetch and merge the latest changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚔️ Merge Conflicts
&lt;/h2&gt;

&lt;p&gt;Conflicts happen when different branches change the same line of code. Git will show it 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;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD
your code
=======
someone else's code
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll need to manually choose the correct version, fix the file, then commit the change.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔙 Undoing Changes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Undo a staged file (before committing):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Unstage all files:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Undo the last commit (keep changes):
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reset to a specific commit:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log  &lt;span class="c"&gt;# Find the commit hash&lt;/span&gt;
git reset &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Wipe everything and reset (dangerous!)
&lt;/h3&gt;

&lt;p&gt;Including the code in the working tree. The project will look exactly like it did at that commit, as if later changes never happened This is destructive. &lt;br&gt;
⚠️ Once you run it, you cannot recover the deleted commits or changes (unless you've backed them up or they exist in the reflog).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Safer alternatives:&lt;br&gt;
If you just want to move the branch without losing code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; &amp;lt;commit-has&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keeps your changes in the staging area&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OR,&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--mixed&lt;/span&gt; &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keeps your changes in the working directory, but unstages them&lt;/p&gt;

&lt;h2&gt;
  
  
  🔁 Git Reset Modes — Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Changes to Commit History&lt;/th&gt;
&lt;th&gt;Staging Area Cleared&lt;/th&gt;
&lt;th&gt;Working Directory Cleared&lt;/th&gt;
&lt;th&gt;What Happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--soft&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Moves HEAD to the given commit. Keeps all changes staged (ready to commit again).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--mixed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;td&gt;Unstages your changes but keeps them in your working directory. This is the default mode.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--hard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;Completely deletes all changes after the given commit, including uncommitted work.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💡 Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use meaningful commit messages.&lt;/li&gt;
&lt;li&gt;Commit frequently, but in logical chunks.&lt;/li&gt;
&lt;li&gt;Always pull before pushing.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;.gitignore&lt;/code&gt; to exclude unnecessary files.&lt;/li&gt;
&lt;li&gt;Practice branching, it’s a powerful workflow tool.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎓 My Final Thoughts to you
&lt;/h2&gt;

&lt;p&gt;Learning Git and GitHub is like learning a new language. It might seem tricky at first, but with practice, you'll manage your projects confidently and collaborate smoothly.&lt;/p&gt;

&lt;p&gt;Start small, explore branches, and don't be afraid to experiment. 💻✨&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>basic</category>
      <category>bash</category>
    </item>
    <item>
      <title>UNIX and Linux</title>
      <dc:creator>Istiak Islam</dc:creator>
      <pubDate>Fri, 06 Sep 2024 21:05:42 +0000</pubDate>
      <link>https://dev.to/isttiiak/unix-and-linux-hl0</link>
      <guid>https://dev.to/isttiiak/unix-and-linux-hl0</guid>
      <description>&lt;p&gt;Linux is not UNIX, although it is clearly UNIX-like.&lt;/p&gt;

&lt;p&gt;Technically, Linux is only the kernel; everything else that makes up the full operating system is drawn from a number of sources. The full content depends on the particular Linux distribution being used.&lt;/p&gt;

&lt;p&gt;UNIX and Linux have had very different evolutions. UNIX may have had humble beginnings, but from the very outset it was designed to be a serious enterprise operating system. It grew up largely outside of the Intel family of CPUs, although it was later ported to it. Linux, on the other hand, began as a toy operating system only on the x86 architecture. It is doubtful anyone had any idea of how robust it would become or how many architectures it would wind up supporting.&lt;/p&gt;

&lt;p&gt;The first versions of UNIX were developed about 1969, by Ken Thompson, Rudd Canaday, and Dennis Ritchie. By the time Linux first appeared in 1991, UNIX had already become quite fractured. There were many varieties, grouped in two major families: System V arising from the original code at Bell Labs, and BSD arising from the University of California at Berkeley.&lt;/p&gt;

&lt;p&gt;Sorting out the fractious history and differences among the different UNIXs would be a lengthy task (as well as an unnecessary one for our present purpose). But, by 1991, there were many variants, often tied to a specific hardware platform and vendor. For instance, SGI had IRIX, Sun had SunOS and Solaris, IBM had AIX, Hewlett Packard had HPUX, Cray had UNICOS, DEC had Ultrix. Each one of these manufactures often had several varieties running even on its own universe of hardware. SCO was one of the only variants not arising from a hardware company.&lt;/p&gt;

&lt;p&gt;While there were various efforts to achieve some standardization, most vendors had strong self-interest in keeping things proprietary. At a minimum, there were always two major flavors to be considered, System V and BSD, and their behavior could be quite different even on quite basic matters such as signal handling. Thus, application developers interested in portability had to resort to the use of ugly #ifdef statements.&lt;/p&gt;

&lt;p&gt;Even where the APIs were not that different, the actual implementation could be radically different from platform to platform. Basic kernel architectures also differed. Furthermore, each platform had its own set of basic file utilities, shells, etc.&lt;/p&gt;

&lt;p&gt;The Free Software Foundation's (FSF's) GNU (GNU's not UNIX) project developed freely-distributable versions of many basic utilities, such as tar, ls, grep, etc., and even more important, the gcc compiler and the basic C-library, libc.&lt;/p&gt;

&lt;p&gt;Linux could not have been born or grown without the availability of tools from the GNU project. There is no way to overemphasize this. We will stay out of the arguments about whether Linux should properly be called GNU/Linux or something similar, but just note that what is often loosely called Linux in fact contains many GNU components; properly speaking, Linux is only the kernel.&lt;/p&gt;

&lt;p&gt;While UNIX and Linux are not the same thing, Linux has always borrowed heavily from UNIX. Most basic components of Linux, such as an inode-based filesystem, accessing hardware through device nodes, multi-process scheduling, process creation and destruction, are completely rooted in UNIX.&lt;/p&gt;

&lt;p&gt;This is because the developers of Linux have always had a good footing in the UNIX world, and because of the availability of the UNIX tools from GNU and other non-GNU open-source projects.&lt;/p&gt;

&lt;p&gt;Whenever possible, Linux has tried to accommodate both major variants of UNIX as far as the API is concerned; striving for POSIX type behavior is above that level. As such, it has never been very difficult to port UNIX applications to Linux, unless the application has relied very heavily on certain idiosyncrasies of a particular UNIX implementation.&lt;/p&gt;

&lt;p&gt;The open nature of the Linux development model has thus far avoided the serious fracturing that took place in UNIX. It is perhaps ironic that the easily legal possibility of having Linux fork into competing versions at any time is perhaps what has prevented it.&lt;/p&gt;

&lt;p&gt;Many hardware vendors now seriously support Linux on their hardware and the long range future of their own versions of UNIX is often in doubt. It could well be that the Linux plan for world domination is inevitable; at least as far as killing off other UNIX-like operating systems.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
      <category>unix</category>
    </item>
    <item>
      <title>Kernel vs Operating System</title>
      <dc:creator>Istiak Islam</dc:creator>
      <pubDate>Fri, 06 Sep 2024 20:03:34 +0000</pubDate>
      <link>https://dev.to/isttiiak/kernel-vs-operating-system-3oe9</link>
      <guid>https://dev.to/isttiiak/kernel-vs-operating-system-3oe9</guid>
      <description>&lt;p&gt;The kernel is the central component that connects the hardware to the software, and manages the system's resources, such as memory, CPU, and time sharing among competing applications and services. It handles all the devices that are connected to the computer by including so-called device drivers and makes them available for the operating system to use.&lt;br&gt;
A system running only a kernel has limited functionality, and the only place you will see that is in a dedicated device (often termed as an embedded device) such as inside an appliance.&lt;/p&gt;

&lt;p&gt;An Operating System includes the kernel and some additional components like User interface, File system, Utilities Tools and Security. It is a software that manages computer hardware and software resources and provides common services.&lt;/p&gt;

&lt;p&gt;To distinguish, the Kernel is the part of the Operating System and the Operating System itself include many more components. In addition, users interact with the Operating System, but Kernel operates in the backstage.&lt;/p&gt;

</description>
      <category>os</category>
      <category>kernel</category>
      <category>opensource</category>
    </item>
    <item>
      <title>OSS Licensing and Legal Issues</title>
      <dc:creator>Istiak Islam</dc:creator>
      <pubDate>Sun, 07 Jul 2024 02:29:53 +0000</pubDate>
      <link>https://dev.to/isttiiak/oss-licensing-and-legal-issues-454h</link>
      <guid>https://dev.to/isttiiak/oss-licensing-and-legal-issues-454h</guid>
      <description>&lt;p&gt;There are many ways to work with Open Source Software. In particular, what kind of license is adopted will have strong effects on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How the project is developed&lt;/li&gt;
&lt;li&gt;How the project is deployed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;There are two broad classes of licenses:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restrictive, such as the GPL in all of its forms&lt;/li&gt;
&lt;li&gt;Permissive, such as the BSD and Apache Foundation Licenses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is a lot of misinformation spread about Open Source Software and licenses, which can make organizations reluctant to use and develop for it. We will discuss the main kinds of this false information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restrictive vs Permissive Licensing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Restrictive Licenses
&lt;/h3&gt;

&lt;p&gt;Demand the software remains open and place strong limitations on any attempt to make proprietary closed products. Changes to the code must be made available to future recipients. A prominent example is the GPL (General Public License), a copyleft license.&lt;/p&gt;

&lt;h3&gt;
  
  
  Permissive Licenses
&lt;/h3&gt;

&lt;p&gt;Do not require modifications and enhancements to be generally available. Prominent examples include the BSD (Berkeley Software Distribution) and Apache licenses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fear, Uncertainty and Doubt
&lt;/h2&gt;

&lt;p&gt;The term &lt;strong&gt;FUD&lt;/strong&gt; is shorthand for &lt;strong&gt;F&lt;/strong&gt; ear, &lt;strong&gt;U&lt;/strong&gt; ncertainty and &lt;strong&gt;D&lt;/strong&gt; oubt (or Elmer Fudd). Surprisingly, first usage goes back as far as the 1920s; use of the acronymic form seems to date from the 1970s.&lt;/p&gt;

&lt;p&gt;Broadly speaking, it means disseminating misinformation to influence recipients to avoid certain strategies, products or classes of products by appealing to fear.&lt;/p&gt;

&lt;p&gt;Microsoft was widely accused of spreading FUD about Linux in the 1990s. However, in present day, Microsoft has stopped doing so and is actually employing OSS widely.&lt;/p&gt;

&lt;p&gt;As applied to OSS, FUD statements include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OSS is a virus. If you include it in your product, all your source must be made available to everyone. This is simply not true. One does have to be careful about respecting licenses, but many prominent companies have learned how to combine open and closed software in their offerings. And, there are companies and organizations dedicated to helping ensure this is done properly.&lt;/li&gt;
&lt;li&gt;OSS infringes on software patents, and the related claim that it forces you to grant patent rights to others. This is simply not true. Once again, proper legal analysis is required.&lt;/li&gt;
&lt;li&gt;OSS products leave nowhere to turn when they break, or to get technical help. Many open source products are supported by serious, long-living companies (such as Red Hat Enterprise Linux), as well as smaller organizations. In addition, there is a lot of freely available help online, and there are many consultants that can be hired. In fact, there is more competition available for such help than there would be with vendor lock-in on a product.&lt;/li&gt;
&lt;li&gt;OSS requires a lot of legal help to avoid the above pitfalls, and is thus very expensive. Even proprietary software requires significant legal analysis to properly avoid copyright and patent infringement, etc. OSS is no different and not more expensive. Also, having all the software being available in source form expedites the auditing process. Companies will indeed require interaction with lawyers, either on staff or external, to make sure they do not violate copyrights and licenses. There are many kinds of licenses and one has to be careful. But once an organization develops proper reasonable procedures, it is just a standard part of any project. Part of this is to train the developers to understand the dos and don'ts of working with OSS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Patents
&lt;/h2&gt;

&lt;p&gt;A software patent gives exclusionary rights to material such as a computer program, library, interfaces or even techniques and algorithms. The earliest software patents appear to have been granted in the early 1960s.&lt;/p&gt;

&lt;p&gt;Like all patents, software patents must be filed in for each nation (or trading block such as the European Union) in which coverage is desired. This makes it an expensive and time-consuming project to do thoroughly.&lt;/p&gt;

&lt;p&gt;Exactly what a patent can or cannot cover varies from jurisdiction to jurisdiction; e.g., in the United States this means exclusion of "abstract ideas", although what is or is not covered can always be fought about.&lt;/p&gt;

&lt;p&gt;Many people feel there should be no software patents at all, that sufficient protections for intellectual property already exist under copyright and trademark laws. However, since it is highly unlikely software patents will be abolished, developers and organizations have to learn to deal with them properly.&lt;/p&gt;

&lt;p&gt;More often than not, software patents have been used defensively, with corporations cross-licensing each other’s work to avoid litigation. However, there are many well-known cases of expensive legal battles as well.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Open Invention Network&lt;/strong&gt; (OIN) was created as a global patent pool; companies and other entities which join the OIN enter in a mutual non-aggression agreement within the Linux-based ecosystem. OIN members agree in return for not suing each other over patent issues, they gain access to each other’s patent portfolio free of charge.&lt;/p&gt;

&lt;p&gt;While the OIN has existed since 2005 it has been growing rapidly, to over 3000 members in 2019. Major members include: Google, IBM, NEC, Philips, RedHat, Sony, SUSE, Toyota, and Microsoft. For details about OIN’s mission, how it works and how to join, see its &lt;a href="https://openinventionnetwork.com/" rel="noopener noreferrer"&gt;website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microsoft Sells Out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft’s joining of OIN in October 2018 was a major event, opening up over 60,000 patents for use by OIN members and, not surprisingly, leading to a spike in new memberships. For many this represented proof of Microsoft’s determination to be a good citizen in the OSS world (of course for others, it fed conspiracy theories...)&lt;/p&gt;

&lt;p&gt;......&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>linux</category>
    </item>
    <item>
      <title>What is Open Source Software (OSS)?</title>
      <dc:creator>Istiak Islam</dc:creator>
      <pubDate>Thu, 06 Jun 2024 20:00:31 +0000</pubDate>
      <link>https://dev.to/isttiiak/what-is-open-source-software-oss-1fpg</link>
      <guid>https://dev.to/isttiiak/what-is-open-source-software-oss-1fpg</guid>
      <description>&lt;h2&gt;
  
  
  What is open source software?
&lt;/h2&gt;

&lt;p&gt;Open source software (OSS) refers to software that is distributed with its source code made available to the public. This allows anyone to view, modify, and distribute the software.&lt;br&gt;
Sharing of software has gone on since the beginnings of the computer age. In fact, not sharing software was the exception, and not the rule. The concepts of open source software (OSS) long predate the use of the term.&lt;/p&gt;

&lt;p&gt;This software are open for all. For instance it is &lt;strong&gt;Free.&lt;/strong&gt; In English the word &lt;strong&gt;FREE&lt;/strong&gt; has two meanings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free as in free speech, freedom to distribute&lt;/li&gt;
&lt;li&gt;Free as in no cost, or as is often said, like "Free beer"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use of OSS means source code is made available with a license which provides rights to examine, modify and redistribute, without restriction on the user's identity or purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use open source software?
&lt;/h2&gt;

&lt;p&gt;The purpose of OSS is Collaborative Development. enables software projects to build better software. When progress is shared, not everyone has to solve the same problems and make the same mistakes. Thus, progress can be made much faster and costs can be reduced.&lt;br&gt;
Having more eyeballs viewing code and more groups testing it leads to stronger and more secure code, as well. It is often hard for competitors to get used to the idea of sharing, and grasping that the benefits can be greater than the costs. But experience has proved this to be true over and over again.&lt;br&gt;
Competitors can compete on user-facing interfaces (e.g. internal plumbing that everyone needs) so that end users still see plenty of product differentiation and have varying experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Successful OSS Projects:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Linux Kernel:&lt;/strong&gt; It is the basis of almost all of the world’s computing infrastructure, from the most powerful supercomputers to the largest number of mobile devices, based on Android, built on a Linux kernel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Git:&lt;/strong&gt; Git is a distributed version control system that is used worldwide for an astounding number of collaborative products. It is also the basis of GitHub, which hosts more than one hundred million of open source projects repositories; GitLab, another easily available host, handles quite a few projects as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Apache:&lt;/strong&gt; Work on the Apache HTTP Server began in 1995. Today it is the most widely used web server with roughly one third of the market share (another open source project, nginx, has almost as many users).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Programming Languages:&lt;/strong&gt; Many computing languages are developed using open source methods. Examples of these languages include: Python, Perl, Ruby, Rust etc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GNU:&lt;/strong&gt; The GNU Project has provided many essential ingredients for virtually all modern computer technologies, under various versions of the GPL (General Public License). Some of the most prominent products emanating from the GNU are GCC, GBD, GLIBC, BASH, COREUTILS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
