Objetivo
Após realizar este Curso Introduction to Linux Open Source Development, você será capaz de:
Neste Curso Introduction to Linux Open Source Development você aprenderá sobre a história do Linux e o que o diferencia de outros sistemas operacionais semelhantes ao UNIX, quais são os principais ingredientes de um sistema Linux e como usá-los, o essencial da administração do sistema, como contas de usuários e grupos , comandos essenciais, sistemas de arquivos, segurança e muito mais, modelos de rede e encadeamento, aspectos de compilação e uso de bibliotecas, trabalho com Java no Linux e muito mais. O mercado de trabalho do Linux está aquecido e os desenvolvedores do Linux estão recebendo ofertas de empregos com salários melhores, mais flexíveis e mais gratificantes do que muitos de seus pares. Este curso irá prepará-lo para se juntar às fileiras dos desenvolvedores Linux profissionais.
Conteúdo Programatico
Introduction
- Objectives and Audience
- The Linux Foundation
- 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
Open Source Software
- What is Open Source Software?
- What is Proprietary (Closed Source) Software?
- Pragmatism vs Idealism
- History of Open Source Software
- Open Source Governance Models
- Labs
Why Use Open Source Software?
- Collaborative Development
- Security and Quality of Source Code
- Users: Flexibility
- Business: Collaborative Development
- Business: Marketing
- Education: El-Hi, Public Systems
- Education: University
- Developers: Greater Visibility
- Labs
Examples of Successful OSS Projects
- Linux Kernel
- 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
How to Work in OSS Projects
- Overview on How to Contribute Properly
- 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 Integration
- Why Continuous Integration?
- Continuous Delivery and Continuous Deployment
- Cost and Benefits
- Tools
- Example: Linux Kernel Continuous Integration Project
- The Continuous Delivery Foundation
OSS Licensing and Legal Issues
- Restrictive vs Permissive Licensing
- FUD
- Software Patents
- Patents and Licenses
- Choosing a License
- Combining Licenses
- Labs
Leadership vs Control and Why Projects Fail
- Leadership vs Control
- Loosen the Chains
- Mentoring
- Building Trust
- Why do many OSS projects fail
- Labs
Respecting and Encouraging Diversity in OSS
- Diversity and Open Source Software
- Sex and Gender Identity
- National Origin, Geography and Language
- Religion and Politics
- Differences of Opinion
- Labs
GitHub and Other Hosting Providers
- GitHub
- Public vs Private
- GUI vs command line
- Labs
Linux and the Operating System
- Kernel vs Operating System and Tools
- History of Linux
- UNIX and Linux
- Linux Distributions
- Linux Standard Base (LSB)
- Labs
Graphical Environments and Interfaces
- Graphical Layers
- X Window System
- Window Managers
- Desktop Managers
- Terminal Window Options
- Labs
System Administration
- Installation
- Software Management and Packaging
- Upgrading and Patching
- User Directories, Environments, etc
- Logging Files
- Labs
Getting Help
- Sources of Documentation
- man Pages
- info
- –help and help
- Graphical Interfaces
- Labs
Text Editors
- Available Text Editors
- vi
- emacs
- Labs
Shells, bash, and the Command Line
- Shells
- Shell Initialization
- Aliases
- Environment Variables
- Customizing the Command Line Prompt
- Special Characters
- Redirection
- Pipes
- Command Substitution and Expressions
- Labs
Filesystem Layout, Partitions, Paths and Links
- Filesystem Layout
- Partitions
- Partitioning Considerations
- Paths
- Hard and Soft (Symbolic) Links
- Labs
System Initialization
- System Boot
- System Initialization
- Labs
Memory
- Memory
- Swap
- Threading Models
- Labs
Networking
- Networking and Network Interfaces
- Labs
Command Details
- Basic Commands and Utilities
- File Transfer Tools
- Monitoring and Performance Utilities
- Graphical Monitoring Tools
- Loading/Unloading Kernel Modules
- Device Management
- Managing System Services
- Labs
Users and Groups
- Basics of Users and Groups
- Adding and Removing Users and Groups
- Files, Users and Permissions
- root (super) user, su and sudo
- Labs
Linux Filesystems
- Filesystems and the VFS
- ext2, ext3, and ext4 Filesystems
- Journaling Filesystems
- btrfs
- Mounting Filesystems
- RAID
- LVM
- Labs
Essential Command Line Tools
- Listing, Creating, Deleting and Renaming Files and Directories
- Finding Files: find and locate
- Finding Strings: grep
- String Substitution: sed
- Labs
Bash Scripting
- Script Basics
- Conditionals
- Loops
- Functions
- Labs
Files and Filesystems
- Types of Files
- Permissions and Access Rights
- Changing Permissions and Ownership
- Labs
Compiling, Linking and Libraries
- gcc
- Other Compilers
- Major gcc Options
- Static Libraries
- Shared Libraries
- Linking To Libraries
- Debugging with gdb
- Labs
Java Installation and Environment**
- Write Once and Use Anywhere?
- Installing Java on Linux
- Handling Multiple JREs and JDKs: the alternatives System
- Environment Variables and Class Paths
- Integrated Development Environments
Building RPM and Debian Packages
- Why Use Package Management
- 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
Introduction to GIT
- Revision Control
- Available Revision Control Systems
- Graphical Interfaces
- Documentation
- Labs
Git Installation
- Binary Installation
- Installing from Source
- Labs
Git and Revision Control Systems
- Converting Between Different Systems
- RCS and CVS
- Subversion
- git
- git and Distributed Development
- Labs
Using Git: an Example
- Basic Commands
- A Simple Example
- Labs
Git Concepts and Architecture
- Concepts
- Design Features
- Repositories
- Objects and Index
- Content vs Pathnames
- Committing vs. Publishing
- Upstream and Downstream
- Forking
- Labs
Managing Files and the Index
- File Categories
- Basic File Commands
- Labs
Commits
- Making a Commitment
- Identifiers and Tags
- Viewing the Commit History
- Reverting and Resetting Commits
- Tidying Repositories
- Who is to Blame?
- Bisecting
- Labs
Branches
- What is a branch?
- Branch Names vs Tags
- Branch Creation
- Branch Checkout
- Getting Earlier File Versions
- Labs
Diffs
- Differencing Files
- Diffing in Git
- Labs
Merges
- What is Merging?
- Merge Commands
- Rebasing
- Labs
Managing Local and Remote Repositories
- Working with Others
- Cloning
- Publishing Your Project
- Fetching, Pulling and Pulling
- Labs
Using Patches
- Why Use Patches?
- Producing Patches
- Emailing
- Applying Patches
- Labs
Advanced Git Interfaces: Gerrit
- Modes of Distributed Development
- Gerrit
- Review Process
- Labs
Closing and Evaluation Survey
- Evaluation Survey