Curso Open Source Software Development Linux for Developers

  • DevOps | CI | CD | Kubernetes | Web3

Curso Open Source Software Development Linux for Developers

24 horas
Visão Geral

Este curso oferece uma abordagem prática e aprofundada sobre o desenvolvimento de software em ambientes Linux, com foco em como navegar, utilizar e contribuir para o vibrante ecossistema de software de código aberto. Do ponto de vista técnico, os participantes dominarão as ferramentas essenciais da linha de comando Linux, aprenderão a gerenciar código com Git e GitHub/GitLab, entenderão os processos de compilação e empacotamento de software, e explorarão as práticas recomendadas para depuração e teste. O curso também abordará a cultura do software livre, os modelos de licenciamento e as melhores formas de contribuir para projetos existentes. a proficiência em desenvolvimento em Linux e em código aberto é uma habilidade extremamente valiosa e requisitada no mercado de trabalho atual. Empresas de todos os portes dependem de software livre para suas operações, e a capacidade de interagir, manter e contribuir para esses projetos é um diferencial competitivo. Além de impulsionar a inovação e a colaboração, este curso equipa os desenvolvedores com as ferramentas e a mentalidade necessárias para serem mais produtivos, versáteis e empregáveis, abrindo portas para oportunidades em startups, grandes corporações de tecnologia e comunidades globais de desenvolvimento.

Objetivo

Após realizar este Open Source Software Development: Linux for Developers, você será capaz de:

  • Configurar e otimizar um ambiente de desenvolvimento Linux para software.
  • Dominar as ferramentas essenciais da linha de comando Linux para desenvolvimento e automação.
  • Utilizar eficientemente o Git para controle de versão em projetos de código aberto.
  • Compreender e aplicar os processos de compilação, linkagem e empacotamento de software em Linux.
  • Realizar depuração de código em ambientes Linux usando ferramentas padrão.
  • Identificar, entender e aplicar os principais modelos de licenciamento de software livre.
  • Navegar e interagir com repositórios e comunidades de projetos open source.
  • Preparar e submeter contribuições (patches, pull requests) para projetos de software livre.
  • Aplicar princípios de desenvolvimento colaborativo e boas práticas do ecossistema open source.
Publico Alvo
  • Desenvolvedores de Software: Que desejam aprofundar suas habilidades em ambientes Linux e contribuir para projetos open source.
  • Estudantes de Ciência da Computação e Engenharia de Software: Buscando uma base sólida para desenvolvimento em sistemas Unix-like e participação na comunidade open source.
  • Profissionais de TI: Que querem transitar para o desenvolvimento de software ou aprimorar suas competências em plataformas abertas.
  • Qualquer pessoa: Com noções básicas de programação que aspire a se tornar um contribuidor de software livre.
Pre-Requisitos
  • Conhecimento básico em programação (lógica de programação e familiaridade com alguma linguagem como C, Python ou Java).
  • Noções básicas de como um sistema operacional funciona.
  • Familiaridade com o conceito de linha de comando (terminal), mesmo que em outros sistemas operacionais.
Materiais
Inglês/Português/Lab Prático
Conteúdo Programatico

Módulo I: Ambientação Linux para Desenvolvedores (6 horas)

  • 1.1. Configurando o Ambiente de Desenvolvimento Linux (2h)
    • Escolha e instalação de uma distribuição Linux (foco em Ubuntu/Debian ou Fedora).
    • Gerenciamento de pacotes (apt, dnf, yum): instalação e atualização de softwares.
    • Estrutura de diretórios padrão do Linux (FHS).
    • Shells de comando (Bash) e personalização.
    • Prática: Instalação da distribuição, configuração de ambiente, primeiros comandos.
  • 1.2. Dominando a Linha de Comando Essencial (2h)
    • Navegação e manipulação de arquivos e diretórios (ls, cd, cp, mv, rm, mkdir).
    • Comandos para gerenciamento de processos (ps, top, kill).
    • Redirecionamento de E/S (<, >, >>, |) e pipes.
    • Permissões de arquivos e usuários (chmod, chown, sudo).
    • Prática: Exercícios práticos com scripts de shell simples.
  • 1.3. Ferramentas Essenciais do Desenvolvedor Linux (2h)
    • Editores de texto no terminal (Vim/Nano - introdução).
    • Utilitários de busca e filtragem (grep, find, awk, sed).
    • Gerenciamento de pacotes para desenvolvimento (build-essentials, libs dev).
    • Prática: Usar grep e find para explorar código fonte, criar scripts de automação.

Módulo II: Controle de Versão e Colaboração com Git (6 horas)

  • 2.1. Fundamentos do Git para Desenvolvimento (2h)
    • O que é Git e por que é essencial para o desenvolvimento open source.
    • Conceitos básicos: repositório, commit, branch, merge.
    • Configuração do Git, inicialização de repositórios locais.
    • Ciclo de vida de um arquivo no Git (untracked, modified, staged, committed).
    • Prática: Criar um repositório local, fazer commits, inspecionar histórico.
  • 2.2. Colaboração em Projetos Open Source com Git Remoto (2h)
    • Conceitos de repositórios remotos (GitHub, GitLab, Bitbucket).
    • Clonando, puxando (pull), enviando (push) alterações.
    • Trabalhando com branches: criação, troca, fusão (merge), rebase.
    • Resolução de conflitos de merge.
    • Prática: Clonar um projeto open source, criar um branch, fazer alterações e tentar um merge.
  • 2.3. Fluxos de Trabalho Open Source e Contribuição (2h)
    • Forking Workflow vs. Feature Branch Workflow.
    • Pull Requests (PRs) / Merge Requests (MRs): criação, revisão e boas práticas.
    • Etiqueta e comunicação em projetos open source.
    • Prática: Criar um fork de um projeto de exemplo no GitHub/GitLab, fazer uma alteração e submeter um Pull Request.

Módulo III: Compilação, Depuração e Licenças (6 horas)

  • 3.1. Compilação e Build Systems em Linux (2.5h)
    • Compilação de código C/C++ com GCC/Clang: pré-processamento, compilação, montagem, linkagem.
    • Bibliotecas estáticas vs. dinâmicas.
    • Introdução ao Make e Makefiles: automação do processo de build.
    • Introdução ao CMake: ferramenta para projetos maiores e multiplataforma.
    • Prática: Compilar um projeto C/C++ simples usando GCC e Makefile/CMake.
  • 3.2. Depuração e Teste de Software (2.5h)
    • Conceitos de depuração e a importância em software complexo.
    • Usando GDB (GNU Debugger) para depurar aplicações em C/C++.
    • Ferramentas de análise de memória (Valgrind - introdução).
    • Escrevendo testes unitários básicos (introdução a frameworks como Google Test, Catch2).
    • Prática: Depurar um programa C/C++ com GDB para encontrar e corrigir um bug simples.
  • 3.3. Licenças de Software Livre e Direitos Autorais (1h)
    • O que são licenças open source e por que são importantes.
    • Tipos de licenças: Permissivas (MIT, Apache) vs. Copyleft (GPL).
    • Implicações legais e de uso para desenvolvedores e empresas.
    • Como escolher uma licença para seu próprio projeto open source.

Módulo IV: Contribuição Avançada e Boas Práticas (6 horas)

  • 4.1. Ferramentas e Processos para Contribuição (2h)
    • Revisão de código e feedback construtivo.
    • Gerenciamento de issues e bugs.
    • Padrões de commits e mensagens de commit.
    • Trabalhando com rebase para histórico limpo.
    • Prática: Resolver um "good first issue" de um projeto de exemplo, focando na qualidade do commit e PR.
  • 4.2. Documentação e Automação para Projetos Open Source (2h)
    • A importância da documentação (READMEs, Wikis, Godocs, Sphinx).
    • Integração Contínua (CI) e Entrega Contínua (CD) em projetos open source (GitHub Actions, GitLab CI/CD - conceitos básicos).
    • Testes automatizados e linting.
    • Prática: Adicionar documentação básica a um projeto, configurar um CI simples.
  • 4.3. Cultura Open Source e Desenvolvimento de Carreira (2h)
    • Ética e responsabilidade na comunidade open source.
    • Networking e construção de reputação.
    • Monetização e sustentabilidade no open source.
    • Como usar contribuições open source para impulsionar a carreira.
    • Discussão: Casos de sucesso e desafios no desenvolvimento open source.
TENHO INTERESSE

Cursos Relacionados

Curso Ansible Red Hat Basics Automation Technical Foundation

16 horas

Curso Terraform Deploying to Oracle Cloud Infrastructure

24 Horas

Curso Ansible Linux Automation with Ansible

24 horas

Ansible Overview of Ansible architecture

16h

Advanced Automation: Ansible Best Practices

32h