LogoLogo
  • Git e GitHub para Humanos
  • Sumário
  • 1. Antes de Começar
    • 1.1 Este livro é para você?
    • 1.2 A razão por trás deste livro
    • 1.3 Visão geral
    • 1.4 Sobre o GitHub
    • 1.5 Sobre a Cumbuca Dev
    • 1.6 O maravilhoso mundo do open source
    • 1.7 Mapa do livro
    • 1.8 Glossário: capítulo 1
  • 2. Fundamentos de Controle de Versão e Git
    • 2.1 Introdução a sistemas de controle de versão
      • 2.1.1 Sistemas de controle de versão centralizados
      • 2.1.2 Sistemas de controle de versão distribuídos
    • 2.2 Introdução ao Git
    • 2.3 Conceitos Fundamentais do Git
      • 2.3.1 Repositório
      • 2.3.2 Commit
      • 2.3.3 Branch
      • 2.3.4 Merge
    • 2.4 Instalando o Git
      • 2.4.1 Instalando no Linux
      • 2.4.2 Instalando no macOS
      • 2.4.3 Instalando no Windows
    • 2.5 Interagindo com o Git
    • 2.6 O Comando Git
    • 2.7 Inicializando de um Repositório Local
    • 2.8 Configurando de um Repositório Local
    • 2.9 Links Úteis: Capítulo 2
    • 2.10 Glossário: Capítulo 2
  • 3. Operações Locais Básicas no Git
    • 3.1 Explorando Operações Locais do Git
    • 3.2 Salvando Alterações Localmente
      • 3.2.1 Adicionando Arquivos ao Controle de Versão via `git add`
      • 3.2.2 Verificando o Estado do Repositório via `git status`
      • 3.2.3 Criando Commits via `git commit`
      • 3.2.4 Visualizando o Histórico do Repositório via `git log`
      • 3.2.5 Comparando Alterações via `git diff`
      • 3.2.6 Unindo os Pontos
      • 3.2.7 Exemplo Prático
    • 3.3 Trabalhando com Branches Localmente
      • 3.3.1 Gerenciando Branches via `git branch`
      • 3.3.2 Alternando Entre Branches via `git switch`
      • 3.3.3 Mesclando Branches via `git merge`
        • 3.3.3.1 Resolvendo Conflitos de Merge
      • 3.3.4 Unindo os Pontos
      • 3.3.5 Exemplo Prático
    • 3.4 Links Úteis: Capítulo 3
    • 3.5 Glossário: Capítulo 3
  • 4. Ajuste de Mudanças Locais no Git
    • 4.1 Desfazendo Alterações Localmente
      • 4.1.1 Desfazendo Alterações Antes do Commit
      • 4.1.2 Desfazendo Commits
      • 4.1.3 Alterando o Último Commit via `git commit --amend`
      • 4.1.4 Unindo os Pontos
      • 4.1.5 Exemplos Práticos
    • 4.2 Ignorando e Removendo Arquivos do Rastreamento Local
      • 4.2.1 Ignorando Arquivos do Rastreamento Utilizando o arquivo .gitignore
      • 4.2.2 Removendo Arquivos do Rastreamento via `git rm`
    • 4.3 Links Úteis: Capítulo 4
    • 4.4 Glossário: Capítulo 4
  • 5. Introdução ao GitHub
    • 5.1 Qual a diferença entre Git e GitHub?
    • 5.2 Grandes Projetos Abertos no GitHub
    • 5.3 Recursos do GitHub
    • 5.4 Idioma Suportado no GitHub
    • 5.5 Contas no GitHub
      • 5.5.1 Conta Pessoal
      • 5.5.2 Conta de Organização
      • 5.5.3 Conta Corporativa
      • 5.5.4 Unindo os Pontos
    • 5.6 Planos do GitHub
    • 5.7 Criando uma Conta Pessoal no GitHub
    • 5.8 Explorando a Interface do GitHub
      • 5.8.1 Página Principal (Home)
      • 5.8.2 Página de Notificações (Notifications)
      • 5.8.3 Página de Configurações (Settings)
    • 5.9 Links Úteis: Capítulo 5
    • 5.10 Glossário: Capítulo 5
  • 6. Repositórios no GitHub
    • 6.1 O quê é um Repositório no GitHub?
    • 6.2 Criando um Repositório no GitHub
    • 6.3 Página Principal de um Repositório: Aba Code
      • 6.3.1 Editando um Arquivo em um Repositório no GitHub
      • 6.3.2 Explorando o Histórico de Commits de um Repositório no GitHub
      • 6.3.3 Editando Detalhes de um Repositório no GitHub
      • 6.3.4 Explorando um Repositório Ativo em Uso
    • 6.4 Página de Configurações de um Repositório: Aba Settings
      • 6.4.1 Gerenciando Configurações Gerais de um Repositório no GitHub: Menu General
      • 6.4.2 Gerenciando Configurações de Colaboração de um Repositório no GitHub: Menu Collaborators
      • 6.4.3 Explorando Configurações de um Repositório no GitHub na Prática
    • 6.5 Links Úteis: Capítulo 6
    • 6.6 Glossário: Capítulo 6
  • 7. Documentação de Projetos
    • 7.1 O quê é Documentação de Projeto?
    • 7.2 Explorando a Linguagem de Marcação Markdown
    • 7.3 Criando uma Página de Apresentação no GitHub
    • 7.4 Links Úteis: Capítulo 7
    • 7.5 Glossário: Capítulo 7
  • 8. Issues no GitHub
    • 8.1 O quê é GitHub Issues?
    • 8.2 Criando uma Issue no GitHub
    • 8.3 Explorando a Página de uma Issue no GitHub
    • 8.4 Atribuindo uma Issue no GitHub
    • 8.5 Categorizando Issues de um Repositório através de Labels no GitHub
      • 8.5.1 Gerenciando Labels de um Repositório no GitHub
    • 8.6 Página de Issues de um Repositório no GitHub: Aba Issues
    • 8.7 Explorando Issues no Mundo Real
    • 8.8 Links Úteis: Capítulo 8
    • 8.9 Glossário: Capítulo 8
  • 9. Git Remoto
    • 9.1 Explorando Operações Remotas do Git
    • 9.2 Interagindo com o Repositório Remoto Central no Git
      • 9.2.1 Clonando um Repositório Remoto via `git clone`
      • 9.2.2 Buscar Atualizações de um Repositório Remoto via `git fetch`
      • 9.2.3 Enviando Mudanças Locais para o Repositório Remoto via `git push`
      • 9.2.4 Sincronizando o Repositório Local com o Remoto via `git pull`
      • 9.2.5 Unindo os Pontos
      • 9.2.6 Exemplo
    • 9.3 Interagindo com o Repositório Remoto hello-world
      • 9.3.1 Conectando-se ao GitHub via SSH
      • 9.3.2 Clonando o Repositório hello-world
      • 9.3.3 Alterando hello-world Localmente
        • 9.3.3.1 Editor de Código
        • 9.3.3.2 Editando README.md
        • 9.3.3.3 Salvando Alterações no Controle de Versão Local
      • 9.3.4 Enviando Alterações para o Repositório Remoto
    • 9.4 Links Úteis: Capítulo 9
    • 9.5 Glossário: Capítulo 9
  • 10. Pull Requests no GitHub
    • 10.1 O quê é um Pull Requests no GitHub?
    • 10.2 Entendendo as Propriedades de um Pull Request no GitHub
      • 10.2.1 Branches de Origem e de Destino de um Pull Request
      • 10.2.2 Título de um Pull Request
      • 10.2.3 Descrição de um Pull Request
      • 10.2.4 Modificações de um Pull Request
      • 10.2.5 Pessoas Revisoras de um Pull Request
      • 10.2.6 Labels de um Pull Request
    • 10.3 Criando um Pull Request no GitHub
    • 10.4 Página de um Pull Request no GitHub
      • 10.4.1 Aba Conversation
      • 10.4.2 Aba Commits
      • 10.4.3 Aba Checks
      • 10.4.4 Aba Files Changed
    • 10.5 Página de Pull Requests de um Repositório no GitHub: Aba Pull Requests
    • 10.6 Recebendo Revisões em um Pull Request no GitHub
      • 10.6.1 Boas Práticas
      • 10.6.2 Exemplo Prático
        • 10.6.2.1 Adicionando Conta Colaboradora
        • 10.6.2.2 Solicitando Revisão de Pull Request
        • 10.6.2.3 Lidando com o Feedback
    • 10.7 Mesclando um Pull Request no GitHub
      • 10.7.1 Exemplo Prático
    • 10.8 Atualizando um Repositório Local Após Mesclagem
    • 10.9 Explorando Pull Requests no Mundo Real
    • 10.10 Links Úteis: Capítulo 10
    • 10.11 Glossário: Capítulo 10
  • 11. Fluxo de Trabalho
    • 11.1 Fork no GitHub
      • Fork
    • 11.2 Forks e Pull Requests
      • 11.2.1 Criando um Fork no GitHub
      • 11.2.2 Clonando um Fork
      • 11.2.3 Realizando Alterações Localmente
      • 11.2.4 Enviando Alterações Locais para o Fork Remoto
      • 11.2.5 Criando um Pull Request a partir de um Fork no GitHub
      • 11.2.6 Sincronizando um Fork no GitHub
      • 11.2.7 Revisão, Mesclagem e Atualizações Pós-mesclagem
    • 11.3 Fluxo de Trabalho
  • 11.4 Links Úteis - Capítulo 11
  • 11.5 Glossário - Capítulo 11
  • 12. O Caminho Continua
    • 12.1 Conhecendo Ferramentas Adicionais
      • 12.1.1 Indicação: Jogo Oh My Git
    • 12.2 Explorando Projetos Open Source
    • 12.3 Crescendo e Colaborando em Comunidades
    • 12.4 Desafio: GitCaos 🔥
    • 12.5 Links Úteis - Capítulo 12
    • 12.6 Glossário Completo: Git e GitHub para Humanos
Fornecido por GitBook
Nesta página
  • Mas... se os conteúdos são de acesso gratuito, qual a vantagem em termos "corporativos"?
  • Mas não para por aí: além de ser super vantajoso para as empresas, o Código Aberto pode ser um grande aliado no seu aprendizado e carreira!

Isto foi útil?

Editar no GitHub
Exportar como PDF
  1. 1. Antes de Começar

1.6 O maravilhoso mundo do open source

Estamos apenas no início do nosso curso, no entanto, até aqui você já nos vou falar muito sobre Open Source/Código Aberto. Mas, afinal: O que é Open Source? E como ele pode ajudar na sua carreira?

Pela definição, Código Aberto (em inglês: Open Source) se refere ao código-fonte de um software que está disponível gratuitamente para consulta, modificação e redistribuição. Ou seja: qualquer pessoa pode ver, usar e alterar o código conforme suas necessidades. É um modelo de desenvolvimento que incentiva a colaboração e permite que muitas pessoas de vários lugares do mundo contribuam e melhorem o software.

Mas, Open Source não se limita apenas por essa definição. Ele é um grande ecossistema que conta com comunidades super ativas, que encontram soluções diferentes para (quase) tudo! É muito comum que existam versões Open Source de vários tipos de softwares, bibliotecas, frameworks e é incrível ver o que a comunidade cria para devolver justamente para a comunidade. Todos saem ganhando, não importa o nível de complexidade do desenvolvimento. Simplesmente incrível!

Mas... se os conteúdos são de acesso gratuito, qual a vantagem em termos "corporativos"?

Bem, há inúmeras vantagens neste modelo, mas a característica que mais o diferencia de Softwares Proprietários (além do custo) é a inovação. Softwares Open Source estão o tempo todo sendo analisados por pessoas de várias partes do globo, e essa diversidade acaba trazendo novos pontos de vista para os projetos. Há muitas empresas que trabalham com esse tipo de Software e, claro: fazem bastante dinheiro com ele. Então o fato de poder ser acessado por qualquer pessoa desenvolvedora não desvaloriza o produto final.

Vantagens corporativas do Open Source:

  1. Adaptabilidade:

    • A flexibilidade do Open Source permite que as empresas adaptem e personalizem os softwares de acordo com suas necessidades específicas, sem as limitações impostas pelos fornecedores de software proprietários.

  2. Código sempre atualizado:

    • Um software Open Source dificilmente ficará obsoleto, pois a comunidade global de desenvolvedores está continuamente identificando problemas, corrigindo bugs e implementando novas funcionalidades. Essa dinâmica de constante atualização garante que o software permaneça relevante, seguro e eficiente ao longo do tempo, adaptando-se rapidamente às mudanças tecnológicas e às novas necessidades dos usuários.

  3. Colaboração competitiva:

    • Empresas que competem em outras áreas colaboram no desenvolvimento de softwares Open Source. Essa colaboração não se limita apenas ao sistema operacional: ela se estende a uma vasta gama de projetos, bibliotecas e frameworks que são fundamentais para a infraestrutura de TI. Além disso, a colaboração permite que as empresas compartilhem custos de desenvolvimento e se beneficiem das melhorias feitas por outros participantes, o que resulta em uma base de código mais rica e confiável. A competição é mantida nos produtos e serviços finais, mas a colaboração no desenvolvimento das ferramentas básicas cria um ecossistema mais saudável e dinâmico. Um exemplo é o GNU/Linux, onde a colaboração melhora tanto o software quanto o hardware, garantindo máxima performance e otimização.

  4. Economia:

    • O fato de não ter gastos com licenciamento é importante e deve ser levado em conta. A redução de custos permite que a empresa invista em outras áreas, como infraestrutura e hospedagem em nuvem, melhorando a disponibilidade, segurança e desempenho dos seus sistemas.

  5. Escalabilidade:

    • Softwares de código aberto, à medida que uma empresa expande suas operações, podem ser ajustados para lidar com um aumento no volume de usuários, dados e transações sem comprometer o desempenho. A flexibilidade do Open Source permite que os sistemas sejam adaptados e otimizados continuamente, garantindo que a infraestrutura de TI possa crescer de forma eficiente e econômica, acompanhando todas as fases do crescimento de uma empresa.

  6. Resolução rápida de problemas:

    • Diferente dos softwares proprietários, onde o suporte pode ser lento e centralizado, o Open Source disponibiliza de forma imediata uma vasta base de conhecimento e experiência contidos nas comunidades, onde é normal encontrar pessoas que já passaram pelo mesmo problema ou caso parecido, e ali vão trocando informações e trabalhando em conjunto para poder encontrar a melhor solução.

  7. Transparência e segurança:

    • E por último, mas não menos importante: com o código aberto, é possível saber exatamente quais dados estão sendo transferidos e para onde. A segurança dos softwares Open Source é reforçada pela transparência de seu código, permitindo que qualquer pessoa possa inspecioná-lo para identificar e corrigir vulnerabilidades rapidamente. Além disso, como muitos desenvolvedores e especialistas em segurança estão constantemente revisando o código, problemas podem ser detectados e resolvidos de forma mais ágil do que em softwares proprietários. Esta é inclusive uma das maiores vantagens observadas pelas empresas.

Aqui listamos algumas das vantagens, mas se você gostou desse assunto e quer saber mais: este estudo da Red Hat apresentado em 2022 traz dados super relevantes para entender a grandiosidade dos projetos Open Source, sob o ponto de vista das empresas.

O Estado do Open Source Empresarial: um relatório da Red Hat

Mas não para por aí: além de ser super vantajoso para as empresas, o Código Aberto pode ser um grande aliado no seu aprendizado e carreira!

Conhecer um pouco mais sobre esse movimento e entender o tipo de impacto que ele causa tanto nas pessoas quanto nas empresas, no estilo de desenvolvimento e até mesmo na economia global foi, particularmente, um divisor de águas no meu processo de aprendizagem. Foi a primeira vez que me senti efetivamente "fazendo parte" de algo relacionado a tecnologia, e é por isso que decidimos te apresentar para esse mundo mágico: onde a colaboração é regra e o crescimento é compartilhado.

Quando se trata de aprendizado, principalmente quando se é iniciante, há muita teoria para se aprender. Paradigmas de programação, conceitos, lógica e tantos outros assuntos que servem de base para qualquer que seja a linguagem escolhida, não há como fugir. Mas o Open Source pode ser seu aliado na hora de fixar e principalmente visualizar esses conteúdos na prática - mesmo que você ainda não trabalhe na área.

Vantagens do Open Source no aprendizado:

  1. Aprendizado prático: Iniciantes podem aprender examinando códigos de alta qualidade, além de contribuir em projetos reais. Sendo assim: toda contribuição é válida e não necessariamente pode ser feita em alguma linguagem de programação específica, há projetos que precisam de ajuda na escrita da documentação, tradução, organização e tantas outras tarefas simples de serem efetuadas.

  2. Comunidade e colaboração: Participar deste tipo de projeto oferece a oportunidade de receber feedback, colaborar com outros desenvolvedores e aprender com a experiência de profissionais mais experientes. Além disso, ao colaborar com projetos Open Source consequentemente sua rede de contatos (network) pode aumentar consideravelmente, e conhecer pessoas do meio pode ser um bom caminho para conseguir novas oportunidades.

  3. Experiência real: Trabalhar em projetos Open Source ajuda a ganhar experiência prática, o que é altamente valorizado no mercado de trabalho. Somando-se à tudo isso você ainda contribui para uma comunidade gigante, e pode gerar impacto na vida e trabalho de outras pessoas, não é demais?

"Ah, mas eu não acho que desenvolver 'de graça' vai me trazer benefícios"

Então aqui vão as vantagens para a sua carreira - lembrando que, se as empresas estão ganhando dinheiro com todo esse ecossistema, é altamente provável que elas também estarão de olho em profissionais que colaboram nesse meio.

Impacto do Open Source na carreira

  • Portfólio e visibilidade: Contribuições para projetos de Código Aberto podem ser exibidas como portfólio, demonstrando habilidades e comprometimento tanto com a comunidade quanto com os projetos.

  • Oportunidades de emprego: Dificilmente a empresa irá fazer uma contratação se a pessoa desenvolvedora não tiver experiência alguma, seja para sua primeira oportunidade, ou quem sabe uma mudança de carreira dentro do próprio mercado de TI. Contribuir em projetos pode quebrar esse ciclo da não experiência e abrir portas para experimentações.

  • Desenvolvimento de habilidades: Trabalhar em projetos Open Source ajuda a desenvolver habilidades técnicas e de colaboração, essenciais para qualquer desenvolvedor. As famosas "soft-skills" hoje super em alta no mercado.

Conclusão

Seja para você ampliar seus estudos, experimentar novos caminhos, conseguir aquela experiência prática ou se sentir parte de uma comunidade e impactar outras pessoas... Open Source é o caminho. Te encorajamos a seguir nesse caminho para melhorar o aprendizado contínuo e continuar a trazer muito mais inovação para o nosso dia a dia.

Se você se interessou pelo assunto, aqui vai mais um conteúdo incrível para você compreender um pouco mais sobre Open Source. Uma palestra ministrada pela Camila Maia, para o Feministech.

Anterior1.5 Sobre a Cumbuca DevPróximo1.7 Mapa do livro

Atualizado há 5 dias

Isto foi útil?

Então posso abandonar a teoria e correr pros braços aconchegantes do Open Source?

😎