My presentations, using Reveal.js (mostly in Portuguese).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

500 lines
15 KiB

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Por que e Como Participar de Projetos Open Source</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="reveal.js/css/reveal.css">
<link rel="stylesheet" href="reveal.js/css/theme/night.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
<style type="text/css" media="screen">
.happy {
color: yellow;
}
.reveal section img {
border: none;
}
.reveal ul.empty {
list-style: none outside;
}
li {
display: block;
}
.semi-opaque {
background-color: rgba(0, 0, 0, 0.7);
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides">
<section data-background="_images/osi_keyhole_300X300_90ppi_0.png" data-header>
<h2 class="semi-opaque">Por que e Como Participar de Projetos Open Source</h2>
</section>
<section>
<img src="_images/avatar-hd.png" alt="Me" style="float:left;width:160px;" class="no-border">
<div>
<ul class="empty">
<li>Júlio Biason</li>
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li>
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li>
<li>julio.biason@pm.me</li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
</section>
<section>
<h2>Motivação</h2>
<p class="fragment">Ao contrário do que muitos acreditam, é possível
particiar <strong>sem</strong> ser apenas com código</p>
<p class="fragment">... e todo mundo sai ganhando.</p>
<aside class="notes">
O que me levou a fazer essa apresentação foi justamente a participação
em eventos passados do TcheLinux. Apesar de estar no meio do open source
desde 2000 e sempre estar usando (e ganhando dinheiro) com projetos
open source, eu sempre senti que não contribui o suficiente.
Mas existem coisas simples que qualquer um pode fazer e se eu não
consigo ajudar, pelo menos eu posso incentivar mais pessoas a participar.
E pode ser que alguém que eu incentive resolva justamente um
dos meus problemas.
</aside>
</section>
<section>
<h2>Por Que Participar?</h2>
</section>
<section>
<h4>Por Que Participar?</h4>
<h2>Aprender algo novo</h2>
<aside class="notes">
O que a maior parte dos professores (principalmente) faz é sugerir
participar de um projeto open source para aprender uma nova
linguagem.
</aside>
</section>
<section>
<h4>Por Que Participar?</h4>
<h2>Para retornar à comunidade</h2>
5 years ago
<aside class="notes">
Essa deve ser o "por que" mais citado: O software está
disponível para quem quiser usar e seria interessante
que quem utilize retorne algo ao desenvolvimento.
</aside>
</section>
5 years ago
<section>
<h4>Por Que Participar?</h4>
5 years ago
<h2>"Scratch an itch"</h2>
5 years ago
<aside class="notes">
Se tem algo lhe incomodando no software, ele pode ser alterado.
E se você não se sentir capaz de fazer, ainda é possível pedir
pra alguém resolver isso pra você (e talvez você queria pagar
essa pessoa...)
</aside>
</section>
<section>
<h4>Por que participar?</h4>
<p>
<a href="https://hbswk.hbs.edu/item/the-hidden-benefit-of-giving-back-to-open-source-software">
The Hidden Benefit of Giving Back to Open Source Software
</a>
</p>
</section>
<section>
<h2>Como Participar</h2>
</section>
<section>
<h4>Como Participar</h4>
<h2>Contribuir com código</h2>
</section>
<section>
<h3>Enviar Código</h3>
<p>Enviar código com novas features é a forma mais direta <span class="fragment">mas não a mais fácil.</span></p>
</section>
<section>
<h3>Enviar Código</h3>
<p>
Por onde começar?
</p>
<p class="fragment"><strong>Issue tracker</strong></p>
<p class="fragment">... ou mande um email perguntando "como eu posso ajudar?"</p>
<aside class="notes">
Muitos projetos tem, no seu issue tracker, indicadores
de problemas mais fáceis para serem resolvidos.
</aside>
</section>
<section>
<h3>Enviar Código</h3>
<p>Lembre-se: para alguém, o projeto é seu filho.</p>
<p class="frament"><small>Anedota: IceWM.</small></p>
<aside class="notes">
IceWM é um gerenciador de janelas com uso mínimo de memória, mas altamente
configurável. Depois de abandonado pelo desenvolvedor original, ele foi
mantido por outra pessoa. Eu comecei a portar os temas do Enlightment
(o gerenciador com os temas mais bonitos que havia), mas havia um
problema: Sombras nos títulos. Como o IceWM não tinha suporte às
sombras, alguns temas ficavam completamente ilegíveis. Eu corri
atrás do código onde mostrava o título (dica: eu procurei dentro
do código pela variável do arquivo de tema que definia a cor do
título) e adicionei a nova funcionalidade.
Como o meu patch gerou mais burburinho na lista de discussão e
IRC do que o que o mantenedor estava fazendo, ele portou meu
patch, trocando os nomes das variáveis. No final, eu fiquei como
"co-autor" da feature e não como contribuidor.
Mas eu ganhei a feature que eu queria.
(Dica: o que eu usei pra achar onde estava a função foi
`grep`.)
</aside>
</section>
<section>
<h3>Enviar Código</h3>
<h2>PR = "Puppy Request"</h2>
<a href="https://www.youtube.com/watch?v=tzFWz5fiVKU&t=2970s">
Brett Cannon (Microsoft) - Setting expectations for Open Source participation
</a>
</section>
<section>
<h3>Enviar Código</h3>
<p>
Muito raramente, o desenvolvedor simplesmente não tem tempo
para pesquisar como corrigir uma feature que ele mesmo quer
colocar.
</p>
<p><small>Anedota: Htop.</small></p>
<aside class="notes">
Uma noite, quando eu estava trabalhando até mais tarde, o
Hisham, autor do Htop, veio conversar comigo no IM da época
(que eu não lembro exatamente qual era), como era costume
quando ele tava perdido e querendo desopilar um pouco.
Ele me explicou que tava com um problema no top dele, para
mostrar o usuário correto em aplicativos que estavam em
unidades NFS, mas o `ps` mostrava corretamente.
"Olha o fonte do psutils, oras. É pra isso que é open source",
eu disse.
"Ah, não tô com vontade."
Por pura irritação, eu baixei o fonte do psutils e olhei o
nome da função que encontrava o usuário e passei pra ele.
Meu nome está no "Thanks" do Htop 1 até hoje simplesmente
por isso.
(Dica: o que eu sei pra encontrar a função foi `ctags` pra
mapear o conteúdo do projeto e fui correndo de função em
função)
</aside>
</section>
<section>
<h4>Como Participar</h4>
<h2>Traduções</h2>
</section>
<section>
<h3>Traduções</h3>
<p>Se você não entende de código, pode ajudar traduzindo
a aplicação para a sua língua.</p>
</section>
<section>
<h4>Como Participar</h4>
<h2>Documentação</h2>
</section>
<section>
<h3>Documentação</h3>
<p>
Desde "como instalar esse projeto" ao "o que ele faz",
ainda falta documentação de muita coisa. Nem é preciso
saber programar, pegando algumas dicas com o autor do
projeto.
</p>
<p class="fragment">
Dica: Embora alguns desenvolvedores reclamem da falta
de man pages, é possível fazer coisas bem legíveis
usando projetos como <a href="https://readthedocs.org/">ReadTheDocs</a>
e <a href="http://gitbook.com/">Gitbook</a>.
</p>
</section>
<section>
<h4>Como Participar</h4>
<h2>Bug reports</h2>
</section>
<section>
<h3>Bug Reports</h3>
<p>
Quando encontrar um problema, tente repetir; tente isolar
o que causa o problema (uma configuração, o nome do arquivo);
se conseguir, envie para o desenvolvedor.
</p>
</section>
<section>
<h3>Bug Reports</h3>
<p>
Se possível, crie um teste que mostre como o
problema se repete (o que é mais fácil para bibliotecas
e frameworks do que projetos).
</p>
<p><small>Anedota: MongoEngine.</small></p>
<aside class="notes">
MongoEngine é uma biblioteca para acessar o banco de
dados MongoDB como se fosse um ORM, com schemas e tudo
mais (com a facilidade que, na mudança do schema, não
é preciso fazer migrações).
Como nós mantinhamos sempre a última versão, aconteceu
mais de uma vez que a última versão alterou um comportamento
completamente. Nesses casos, nós abrimos issues no Github
do autor, com o teste incluso, para mostrar o que estávamos
querendo fazer e o que estava acontecendo.
Em todos os casos, nós deixávamos a solução em aberto:
"se esse é o comportamento esperado da biblioteca, como
podemos obter o resultado esperado do teste?"
</aside>
</section>
<section>
<h3>Bug Reports</h3>
<p>
Se não (quiser|saber) programar, descreva
passo-a-passo como reproduzir o erro.
</p>
</section>
<section>
<h4>Como Participar</h4>
<h2>O Fork</h2>
</section>
<section>
<h3>O Fork</h3>
<p>
Quando o desenvolvedor original do projeto não tem mais
interesse e não quer continuar, sempre há a possbilidade
de ter um desenvolvimento em separado.
</p>
<p><small>Anedota: Jenkins, Pillow</small></p>
</section>
<section>
<h4>Como Participar</h4>
<h2>Artwork</h2>
</section>
<section>
<h3>Artwork</h3>
<p>
Muitos projetos precisam de um site bonito e até
mesmo um logotipo interessante. Ajudar o desenvolvedor
mantendo um site que consiga comunicar o objetivo
do projeto sempre ajuda.
</p>
<p><small>Anedota: Alguma-Coisa-Dog.</small></p>
</section>
<section>
<h4>Como Participar</h4>
<h2>Doações</h2>
</section>
<section>
<h2>Doações</h2>
<p>
Alguns projetos tem pessoas trabalhando full time e
precisam de alguma forma de pagar essas pessoas.
</p>
<p><small>Anedota: VIM, Mozilla</small></p>
<aside class="notes">
VIM, por exemplo, pede que se tu gostou do editor,
ao invés de contribuir pagando alguma coisa pro
Bram Moolenaar, seja feita uma doação para as
crianças de Uganda (a bem pouco tempo, o Bram postava,
no fim do ano, quanto havia sido doado).
Apesar de receber grandes doações, a Mozilla
precisa de doações do "99%" para que não fique
a mercê dos grandes doadores.
</aside>
</section>
<section>
<h4>Como Participar</h4>
<h2>Evangelização</h2>
</section>
<section>
<h3>Evangelização</h3>
<p>
Você pode ajudar um projeto a crescer divulgando o mesmo
em palestas ou até mesmo comentando com seus colegas.
</p>
<p class="fragment">
Dica: Evite guerras santas do tipo "meu projeto vs seu projeto".
</p>
<p class="fragment"><small>Anedota: Eu ;).</small></p>
</section>
<section>
<h4>Como Participar</h4>
<h2>Diga "Obrigado"</h2>
</section>
<section>
<h3>Diga "Obrigado"</h3>
<p>Poucas coisas conseguem ser tão poderosas como um
simples "obrigado por ter feito esse projeto".</p>
<p class="fragment">
Dica: Cerveja e Pizza também contam como obrigados.
</p>
<p class="fragment"><small>Anedota: Htop.</small></p>
</section>
<section>
<h2>"One more thing..."</h2>
</section>
6 years ago
<section>
<img class="stretch" src="_images/community.jpg" alt="">
</section>
<section data-background='_images/thats-all-folks.jpg'>
<div class="semi-opaque">
<ul>
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li>
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li>
<li>julio.biason@pm.me</li>
<li><a href="https://presentations.juliobiason.me">https://presentations.juliobiason.me</a></li>
</ul>
</div>
<h1 class="fragment semi-opaque">Perguntas?</h1>
</section>
</div>
</div>
<script src="reveal.js/lib/js/head.min.js"></script>
<script src="reveal.js/js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
// showNotes: true,
transition: 'none', // none/fade/slide/convex/concave/zoom
// Optional reveal.js plugins
dependencies: [
{ src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true },
{ src: 'reveal.js/plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>