Curso Open Source Software Development Linux for Developers
24 horasVisã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áticoConteú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.
- Navegação e manipulação de arquivos e diretórios (
- 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
efind
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.