# Delving into Git, Networking & Open Source

## Introduction

Hello there! 👋 Last week marked **Week 2** of my DevOps journey. Due to my sports commitments, I had limited time, but I still managed to learn and explore several key topics. This week, I completed **advanced Linux commands, Git + GitHub, Computer Network fundamentals, and** a bit about **Open Source contributions**. Though progress was a bit slow, learning something new always counts!

---

## Wrapping Up Linux: Advanced Commands

In my previous week, I covered **basic Linux commands**, but a few advanced commands were still left. I focused on **find, grep, awk, and sed**:

**➡️ grep** - Used to search for a particular pattern in a file.  
**➡️ find** → Searches for files and directories based on name, size, type, etc.  
**➡️ awk** → A scripting language mainly used for text processing, filtering, and formatting structured data.  
**➡️ sed** → A stream editor that works on character streams for pattern matching and replacements.

Now that I have a solid grasp of Linux basics, I plan to deepen my understanding by practising more with real-world assignments and tasks.

---

## Deep Dive into Git and GitHub

As a web developer, I had experience using **Git and GitHub**, but for DevOps, I needed to **expand my knowledge**. I revised Git basics and moved to advanced topics like **branches, pull requests, and resolving merge conflicts**. Learning best practices for branch creation and conflict resolution helped me understand how teams collaborate efficiently in a DevOps environment.

While learning GitHub, I stumbled upon **Open Source Contributions** and decided to explore how Open Source projects work and how to contribute.

---

## Getting Started with Open Source Contributions

I watched several videos and read about **how to contribute to Open Source projects**. Here’s the step-by-step process I learned:

### **1\. What is Open Source?**

Open source refers to any program whose **source code is publicly available** for modification, contribution, and improvement.

### **2\. Finding a Repository to Contribute**

Use **GitHub/GitLab search** to find a project related to your preferred tech stack.

### **3\. Finding the Right Issue**

Start with **"good first issues"** in the **issues** tab of a repository. These are beginner-friendly and help you get started.

### **4\. Understand and Validate the Issue**

Before contributing, ensure you understand the issue and check the discussion to validate its relevance.

### **5\. Fork and Start Contributing**

Since you don’t have access to the original repository, **fork (copy) the repo** to your account and start working on your own copy.

### **6\. Create Relevant Branches**

Never work in the `main` or `master` branch. Follow branch naming conventions:

* **Bug fixes** → `fix/<bug_name>`
    
* **New Features** → `feat/<feature_name>`
    

### **7\. Test Before Creating a Pull Request (PR)**

Before submitting a PR, ensure the changes work correctly and pass all required tests.

### **8\. Link PR to Issue**

Mention the issue number in your PR description:

* `fixes: #issue_number`
    
* `resolves: #issue_number`
    

### **9\. Wait for the Maintainer’s Review**

Be patient while the **project maintainer reviews your PR**. Engage in discussions if needed.

### **10\. Repeat**

Find another issue and continue contributing!

This was the step-by-step guide provided in the YouTube video.  
I plan to find a suitable repository and make my first **Open Source contribution** in the coming days.

### **Resources I Used:**

* **Git/GitHub** → [Kunal Kushwaha - Complete Git and GitHub Tutorial](https://youtu.be/apGV9Kg7ics?si=-FogOt505gmAY8lu)
    
* **Open Source Contributions** → [Piyush Garg (Open Source Bootcamp)](https://youtube.com/playlist?list=PLinedj3B30sAT6CotNj0iffhRV89SkNK9&si=upDIkUq2ysgDn431)
    

---

## Learning Computer Networking Fundamentals

After exploring Open Source, I returned to my roadmap and focused on **Computer Networking**. I started with:

### **1\. History of the Internet**

Understanding why and how the internet was created helped me appreciate its evolution and role in modern computing.

### **2\. Network Protocols**

I explored different **protocols**, including **HTTP**, its methods, and status codes.

### **3\. Network Architectures**

I studied two primary architectures:

* **Client-Server Architecture**
    
* **Peer-to-Peer Architecture**
    

### **4\. Network Topologies & Types**

I learned about **LAN, MAN, WAN** and different **network topologies** used in enterprise environments.

### **5\. OSI Model**

One of the major topics I explored was the **OSI (Open Systems Interconnection) Model**, which consists of **7 layers**:

* **Application Layer**
    
* **Presentation Layer**
    
* **Session Layer**
    
* **Transport Layer**
    
* **Network Layer**
    
* **Data Link Layer**
    
* **Physical Layer**
    
    ![OSI-Model-.webp](https://media.geeksforgeeks.org/wp-content/uploads/20250117112545142665/OSI-Model-.webp align="left")
    

Each layer has specific responsibilities and protocols that ensure **seamless data transfer** over networks. I also studied how **emails work** and the different protocols used in email communication.

### **Resources I Used:**

* **Computer Networking** → [Kunal Kushwaha - Computer Networking Full Course](https://youtu.be/IPvYjXCsTg8?si=BrlnaM1NlGn-_MNr)
    
* **GeeksforGeeks Networking Articles**
    

---

## Challenges I Faced & How I Overcame Them

1. **Understanding Differences Between** `grep`, `awk`, and `sed`
    
    **🔹 Problem:** I was confused about when to use each command.
    
    **🔹 Solution:** I searched for real-world examples and experimented with them.
    
    **🔹 Resources:** [Baeldung - grep, sed, awk differences](https://www.baeldung.com/linux/grep-sed-awk-differences), [Linode - awk, grep, sed differences](https://www.linode.com/docs/guides/differences-between-grep-sed-awk/)
    
2. **Getting Started with Open Source Contributions**
    
    **🔹 Problem:** I can't determine a starting point for Open Source Contribution.
    

---

## What’s Next?

For next week, my goals are:  
✅ **Understanding how DNS works**  
✅ **Deep dive into each OSI model layer**  
✅ **Getting started with Bash Scripting**

---

## Let’s Connect!

If you have any recommended resources, some better approaches to challenges I faced, insights, or tips, I’d love to hear from you! Drop them in the comments. **Thank you for reading till the end!**

**Have a wonderful day.**
