Git Product home page Git Product logo

linux-workflow's Introduction

Linux Workflow Introduction

So what is this repository?

This repository serves as a very basic introduction to the Linux operating system, and what differentiates Linux from other common operating systems. While this should be a good introduction to the concept of Linux it really is only the beginning, with the topic stretching very deep and wide due to all of the applications Linux can find itself used for. You can find some more jumping off points in the accompanying documentation as well:

Ok then, what is an "operating system"?

Well, an operating system is pretty much exactly what it sounds like, it's a software system that helps you operate your computer. Below is the textbook definition courtesy of Merriam-Webster:

operating system (noun): software that controls the operation of a computer and directs
the processing of programs (as by assigning storage space in memory and controlling input
and output functions)

What that basically means is that the operating system on your computer is the traffic cop that controls how the applications that you run on top of the operating system are allowed to interact with your hardware. The core part that makes an "operating system" an "operating system" is the kernel which along with drivers and kernel modules is responsible for interacting with system hardware and doling out resources to each application you'd like to run. Each OS has their own bespoke kernel with Windows currently utilizing the NT Kernel, and Linux using the obviously named Linux Kernel. Below is a diagram from Wikimedia showing the relationship the kernel plays:

Kernel Layout

Thats cool... But why Linux or the Linux Kernel?

The main concept that really separates Linux from other operating systems, like Windows, is the way in which it and a lot of its software is built and licensed. Linux is a collaborative, free (as in freedom) software project that allows anyone to view and contribute code, and that provides it and its code freely to anyone who wants it. "Free as in freedom" means that the software isn't just provided free of charge (gratis), but that you, as the user, have the express right to dig deep into the system and modify whatever you want for your own purposes (libre). This creates a ton of new possibilities and potential from driving innovation to enhancing security and privacy.

On top of this core benefit, Linux also follows in the footsteps of Unix which has a particular philosophy that can be useful for various applications especially in server and software development workflows. Mike Gancarz summarized this philosophy in 1994 as the following 9 principles:

1. Small is beautiful.
2. Make each program do one thing well.
3. Build a prototype as soon as possible.
4. Choose portability over efficiency.
5. Store data in flat text files.
6. Use software leverage to your advantage.
7. Use shell scripts to increase leverage and portability.
8. Avoid captive user interfaces.
9. Make every program a filter.

Below is a summary of what these principles mean when excercised in practice:

1. Smaller programs are easier to download, install, run, and understand
2. A program that does one thing can be more easily polished to do it well
3. Building a prototype quickly allows for more experimentation and feedback
4. Choosing portability allows your program to be used by a larger audience
5. Storing data in flat text makes it easier for other programs to use that data
6. Using other peoples code (and offering your code to be used) allows work to build up and not be siloed
7. Shell scripts are easy for people to open, modify and understand and will run on any system
8. Capturing the user in an interface breaks their flow and makes it harder for them to use
9. Making every program a filter allows simple, small programs to be chained together to accomplish complex tasks

Once you dig into Linux you will see these principles in action everywhere throughout the system. From the way cat, grep, sed and more function to the way that devices are handled as interrogatable files under/dev.

Getting Started with Linux

There are many wayts to get started with Linux today, but one of the easier ways is to spin up a distribution of Linux like Ubuntu in a Virtual Machine like one provided by VirtualBox. A good tutorial on how to do this can be found here

linux-workflow's People

Contributors

racer159 avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

redlinejoes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.