Linux is exploding, and the demand for Linux developers has never been stronger. This course will introduce you to the world of Linux development and give you the background and training you need to start working with Linux. If you’ve been thinking about getting into Linux development, this is the best place to start!
Introduction to Linux, Open Source Development, and GIT (LFD301)




- The Linux Foundation
- Copyright and No Confidential Information
- Linux Foundation Training
- Certification Programs and Digital Badging
- Where Does the Software Come From?
- Is it Difficult to Migrate to Linux?
- Migration Considerations
- Migration Aids and Documentation
- Scope and Coverage of System Administration
- Preparing Your System
- Procedures
- Things change in Linux
- Labs

- What is Proprietary (Closed Source) Software?
- Pragmatism vs Idealism
- History of Open Source Software
- Open Source Governance Models
- Labs

- Security and Quality of Source Code
- Users: Flexibility
- Business: Collaborative Development
- Business: Marketing
- Education: El-Hi, Public Systems
- Education: University
- Developers: Greater Visibility
- Labs

- git
- Apache
- Python, Perl and Other Computer Languages
- TEX and LATEX
- GNU: gcc, gdb, etc
- X and Desktop Managers
- OpenStack, Kubernetes, and other Projects
- Labs

- Know Where the Code is Coming From: DCO and CLA
- Study and Understand the Project DNA
- Figure Out What Itch You Want to Scratch
- Identify Maintainers and Their Work Flows and Methods
- Get Early Input and Work in the Open
- Contribute Incremental Bits, Not Large Code Dumps
- Leave Your Ego at the Door: Don’t Be Thin-Skinned
- Be Patient, Develop Long Term Relationships, Be Helpful
- Labs

- Continuous Delivery and Continuous Deployment
- Cost and Benefits
- Tools
- Example: Linux Kernel Continuous Integration Project
- The Continuous Delivery Foundation

- FUD
- Software Patents
- Patents and Licenses
- Choosing a License
- Combining Licenses
- Labs

- Loosen the Chains
- Mentoring
- Building Trust
- Why do many OSS projects fail
- Labs

- Sex and Gender Identity
- National Origin, Geography and Language
- Religion and Politics
- Differences of Opinion
- Labs

- Public vs Private
- GUI vs command line
- Labs

- History of Linux
- UNIX and Linux
- Linux Distributions
- Linux Standard Base (LSB)
- Labs

- X Window System
- Window Managers
- Desktop Managers
- Terminal Window Options
- Labs

- Software Management and Packaging
- Upgrading and Patching
- User Directories, Environments, etc
- Logging Files
- Labs

- man Pages
- info
- –help and help
- Graphical Interfaces
- Labs

- vi
- emacs
- Labs

- Shell Initialization
- Aliases
- Environment Variables
- Customizing the Command Line Prompt
- Special Characters
- Redirection
- Pipes
- Command Substitution and Expressions
- Labs

- Partitions
- Partitioning Considerations
- Paths
- Hard and Soft (Symbolic) Links
- Labs

- System Initialization
- Labs

- Swap
- Threading Models
- Labs

- Labs

- File Transfer Tools
- Monitoring and Performance Utilities
- Graphical Monitoring Tools
- Loading/Unloading Kernel Modules
- Device Management
- Managing System Services
- Labs

- Adding and Removing Users and Groups
- Files, Users and Permissions
- root (super) user, su and sudo
- Labs

- ext2, ext3, and ext4 Filesystems
- Journaling Filesystems
- btrfs
- Mounting Filesystems
- RAID
- LVM
- Labs

- Finding Files: find and locate
- Finding Strings: grep
- String Substitution: sed
- Labs

- Conditionals
- Loops
- Functions
- Labs

- Permissions and Access Rights
- Changing Permissions and Ownership
- Labs

- Other Compilers
- Major gcc Options
- Static Libraries
- Shared Libraries
- Linking To Libraries
- Debugging with gdb
- Labs

- Installing Java on Linux
- Handling Multiple JREs and JDKs: the alternatives System
- Environment Variables and Class Paths
- Integrated Development Environments

- Packaging System Benefits
- Linux Distributions and Package Management
- RPM Creation
- The RPM spec File
- Details on RPM spec Sections
- RPM Dependencies
- Debian Package Creation Workflow
- Labs

- Know Where the Code is Coming From: DCO and CLA
- Available Revision Control Systems
- Graphical Interfaces
- Documentation
- Labs

- Installing from Source
- Labs

- RCS and CVS
- Subversion
- git
- git and Distributed Development
- Labs

- A Simple Example
- Labs

- Design Features
- Repositories
- Objects and Index
- Content vs Pathnames
- Committing vs. Publishing
- Upstream and Downstream
- Forking
- Labs

- Basic File Commands
- Labs

- Identifiers and Tags
- Viewing the Commit History
- Reverting and Resetting Commits
- Tidying Repositories
- Who is to Blame?
- Bisecting
- Labs

- Branch Names vs Tags
- Branch Creation
- Branch Checkout
- Getting Earlier File Versions
- Labs

- Diffing in Git
- Labs

- Merge Commands
- Rebasing
- Labs

- Cloning
- Publishing Your Project
- Fetching, Pulling and Pulling
- Labs

- Producing Patches
- Emailing
- Applying Patches
- Labs

- Gerrit
- Review Process
- Labs
