 Vamos lá. A ideia aqui é um pouco só começar a me acreditar novamente. Trabalho no desenvolvimento. Também trabalho na automática, assim como o Google. Na automática eu faço parte da equipe que se envolve com o e-commerce. Já eu sou grano-mesha, trabalho com o WordPress há algum tempo. E eu cheguei no mundo da tecnologia muito por ouvir falar de software livre, achar interessantes aspectos políticos e filosóficos do software livre, a ideia é de pensar o software como conhecimento e conhecimento como alguma coisa que deve ser compartilhada e construída colaborativamente entre as pessoas e não em oposição à ideia do software proprietário como uma coisa que é fechada e com conhecimento que é fechada para uma empresa. Então, de qualquer coisa que me empolga, é por isso que eu comecei a me envolver com WordPress e, basicamente, por isso que eu estou aqui. E nessa trajetória, assim que procurei, assim como eu usava WordPress para o meu trabalho do dia a dia desenvolvendo sites, mantendo sites com WordPress, sempre procurei contribuir de volta com a ferramenta que eu estava utilizando. Porque WordPress, enquanto software livre, é construído por pessoas como a gente. Tem gente que contribui com WordPress porque é maneirado para fazer isso, mas também tem gente que faz no tempo livre a quantidade das pessoas que conseguem investir. Ocila muda de pessoa para pessoa, mas são bastante pessoas como a gente que contribuem sim e ninguém contribuir não tem WordPress, basicamente. E, aí nisso, já reservou algumas contribuições com o corporador de WordPress. No passado, antes de sair da equipe do commerce, eu também me movi bastante com o desenvolvimento da TVCI, que eu não sei se todo mundo conhece, mas é uma das coisas que mais me empolga no mundo do WordPress, que é, basicamente, uma interface para você manipular o WordPress da gente comando. E, aí isso facilita muito o dia a dia de um desenvolvedor ou de um designer para, por exemplo, um designer, você está criando lá um tema novo e você quer mostrar como é que vai ficar a sua página e isso, os posts. Você pode rodar um comando, essa WP, post generate, eu acho, menos, menos count, que é um número de posts. E eles geram os posts para você com conteúdo do Lorentzo. Vamos sair lá no admin e criar dez posts na mão para fazer isso. Ou, então, para desenvolvedores, você tem o WP Shell, que é um Shell do Wordpress, é um lugar onde você consegue interagir com o seu Wordpress na linha de comando. Você pode rodar uma função, tanto para testar e ver se o que você fez está certo, ou, às vezes, quer manipular alguma coisa, não, não. Você tem um Shell do Wordpress para evaluar o WP Clip. É super poderoso, não é o assunto da palestra, mas eu me empolgo bastante. Se é o que é interessante, a gente pode conversar mais sobre isso também, ou depois eu super recomendo que dê uma explorada no que é o WP Clip. Entrando um pouco na palestra, na história de como contribuir com o core do Wordpress, o Google explorou um tanto na palestra dele várias maneiras de contribuir com a comunidade do Wordpress mais ampla. Meu foco aqui é o core, o núcleo, o código. A minha perspectiva como desenvolvedor, eu estava dando exemplos de como contribuir com o código, mas isso também se aplica para designers. Então, tem designers fazendo coisas parecidas com o que eu vou estar falando aqui, com a escocada design. Aliás, o Google comentou essa história de que tudo começa no make.wordpress.org, essa é a porta de entrada para tudo. E antes, eu queria fazer uma espera de pequena digressão, que tem um pouco algo a ver com a pesquisa do mestrado. O mestrado estava interessado em olhar quem são as pessoas que estão construindo o Wordpress e de onde estão as pessoas. E para fazer isso, eu paro um pouco do que eu brinco com um mito de que as comunidades de software livre são compostas por pessoas que estão espalhadas por todos os lugares do mundo, essa situação que tem aí. Não está mais, mas até mês passado, retrasado, estava na página sobre o Wordpress. Agora tem uma frase um pouquinho diferente, mas o sentido é mais ou menos o mesmo, que é tudo que você vê aqui, a documentação ao código foi criada pela e para a comunidade. O Wordpress é um projeto de código aberto, o que quer dizer que existem centenas de pessoas espalhadas por todo o mundo trabalhando nele. E na hora de estar sendo mestrada, eu quis ver um pouco aonde estão as pessoas espalhadas por todo o mundo. Quem são as pessoas? Elas estão na Palestina, ou elas estão na Nicarágua, ou elas estão em lugares mais específicos, essa distribuição é igualitária, não é como funciona isso. Vou passar muito rápido por isso daqui, porque eu acho que não vai ficar a vontade mais, mas coloquei os dados em abril de 2016. Aqui tem uma coisa legal de a gente começar a pensar um pouco como está a estrutura do Wordpress, que é o seguinte, diferentes modelos, diferentes projetos de software livre, existem diferentes modelos de desenvolvimento. Desde um modelo super fechado, como por exemplo o caso do Android, que é software livre, mais os desenvolvedores do Google desenvolvem o Android, e em tempos e em tempos, eles publicam o código. Tem pouca participação da comunidade no processo, onde qualquer pessoa pode chegar, pedir acesso de comit, e sair contribuindo. O Wordpress, de alguma maneira, está no meio do caminho entre esses dois exemplos que eu dei. No sentido de que o modelo do Wordpress existe um time dos core developers, são as pessoas que têm acesso de escrita para o repositório de código. Quando coloquei os dados em abril de 2016, está falando de 53 pessoas em algum momento da história do projeto. Então, desde 2013, até abril de 2016, fizeram um commit no repositório. E a gente tem, no entorno dessas pessoas, uma comunidade maior, são as pessoas que contribuem com o Wordpress e enviam uma sugestão de modificação, como elas não conseguem, não têm acesso de escrita ao repositório. Essas 53 pessoas trabalham, podem aprovar ou não, e a contribuição aceita está lá no Wordpress. E aí, quando coloquei os dados, a gente está falando de 1.876 desenvolvedores e contribuíam dessa maneira. E aí, o que se fazia um pouco foi olhando para esse universo, ver aonde estão essas pessoas. Dos core developers, 50% dos 53%, 83%, ou seja, a grande maioria, tem o inglês como primeiro idioma, e mais da metade deles, resíduos dos Estados Unidos. Quando a gente olha, os desenvolvedores já contribuíram com o Wordpress, 70% deles estão um pouco menos concentrados, mas ainda assim, bem concentrados, tem o inglês como primeiro idioma, e 43, resíduos dos Estados Unidos. E no Brasil, a gente tem 0,82% dos desenvolvedores e contribuíram com algum commit ao core do Wordpress, não tem nenhum core developer do Wordpress que reside no Brasil. Aqui, brincando um pouco, comparando as contribuições dos desenvolvedores que têm acesso de escrita a propositoria aqueles que não têm, 73%, ou a maioria dos commits foi feito para os desenvolvedores com acesso de escrita, 27% são contribuições da comunidade. E a maioria das contribuições da comunidade são correções de balas. Não estou falando que seja ruim, ser um problema, de alguma maneira, isso que parece razoável no sentido de via de regra, os core developers provavelmente todos, ou quase todos são imuneirados para fazer o que eles estão fazendo, então acho que mais tempo para dedicar e a comunidade geralmente está indo sem polívio, sobrou um tempo no trabalho, encontrou um problema, tem que ser coisas menores, acho que isso é tranquilo. Dessa visão geral, minha ideia quente ficar intercalando um pouco, relatar histórias de contribuições minhas para dar exemplos e um pouco como vocês podem contribuir. E a primeira coisa que eu tenho a começar são contribuições ao corridor de press, pode ser muito simples, eu tenho um pouco a sensação de que muitas vezes as pessoas imaginam que para contribuir no corridor de press tem que ser um desenvolvedor muito fodrão, que entende tudo e eu acho que não é bem assim. E esse exemplo, acho que é um bom exemplo, não sei se vai dar para ler muita coisa, mas eu basicamente um pre-screen da página onde eu fui lá e falei, achei um problema no corridor de press e aqui é minha contribuição. E esse problema, as primeiras coisas que eu achei, é um negócio extremamente simples. Você basicamente está falando no código que eu rodei e tem uma pegapeta gerendo uma notícia aqui falando um array que talvez tinha uma posição, assim, assumia o qual eu estava tentando acessar uma posição no array, eu pegapetava uma coisa, isso daqui não está definido, ou isso daqui não é um array, alguma coisa assim. E criei, isso daqui é a descrição do problema, eu estou basicamente falando ah, quando eu usei essa classe que o Walker, eu gero as notícias das notícias, das notícias das portugueses, dessa aviso, não sei qual é a impressão de portugueses, de que tem um no array, essa posição zero não está definida. E aqui está o código. Se eu não estiver enganado, esse problema está acontecendo porque o código assume que a variável args sempre tem alguma coisa, é sempre um array, que não está vazio, o que não é sempre o caso. E a solução para isso, talvez dê para ver mais ou menos, eu vou basicamente adicionar um set, bem trivial. Não é nada um bicho de sete cabeças, ah, enfim, está aí, acho que é um exemplo de que pode ser simples, mas ao mesmo tempo ao útil, a gente está falando de 30% dos sites que estão rodando na internet. Nesse print screen que eu mostrei, é do track, que é a ferramenta que o org.pres usa para justamente gerenciar tanto a correção de bugs, quanto o desenvolvimento de novos recursos. O R&L está aqui embaixo, o core track org.pres.org é um dos caminhos, duas possibilidades de entrada nas contribuições, eu falei de, ah, ele está usando o org.pres, achou um problema, você pode ir lá no track e falar, vou criar aqui um, reportar um bug, ou sugerir uma nova, um novo recurso, ou alguma coisa do tipo. Se por um acaso você não tenha uma correonada de documento, precisa de ideias, o que a comunidade tem que fazer é organizar os bugs e os pads que já foram abertos por outras pessoas em algumas categorias. Então, aqui eu estou listando categorias que são úteis para pessoas que estão começando. Então, por exemplo, tem um link onde você pode ver todos os pads, estando, pads, por exemplo, mas, enfim, basicamente isso quer dizer que são pads e bugs e precisam serem testados. Então, por exemplo, alguém já abriu um relato, precisa tanto testar para confirmar se o relato é válido, ou, então, alguém já propôs uma solução e precisa testar para ver se a solução, de fato, corrida o problema. Precisa, por exemplo, que pessoas testem vários dispositivos dependendo do caso do problema ou o que for. Tem outra categoria que são os típids que precisam de testes unitários. Então, já está lá. O problema é descrito, já tem uma solução, mas, alguém precisa escrever testes de unidade para provar que a solução está resolvendo o problema. E para evitar que, no futuro, o mesmo problema aconteça de novo ou que alguma mudança no código quede a mesma coisa, ou alguma coisa relacionada. Tem um outro que são típids que não têm um patch. Então, alguém relatou o problema, mas ninguém enviou até agora uma solução. Outra oportunidade para contribuir. Tem típids que estão marcados como good first bugs, que são bons bugs prevencentes. Então, alguém identificou que é um problema, que é uma coisa que é relativamente trivial, que não depende de um conhecimento muito grego de todas as partes hoje, para ser um bom começo para alguém que está a fim de se envolver com a comunidade. Uma outra possibilidade, essa é um pouco, está um pouco mais de trabalho, que estiver a fim de se envolver um pouco mais, o desenvolvimento dos prédios dentro do track está organizado em componentes, que pode ser REST API, pode ser a interface de edição dos posts, pode ser as categorias e por aí vai. Então, a lista é muito grande. Em cada componente, tem alguns mantenedores do componente. O que o mantenedor basicamente faz é fica monitorando todos os tickets no track, que são criados para aquele componente, e faz uma filtragem inicial desses tickets. Falar, isso aqui é um relato válido de um problema, isso aqui não é um relato válido. Hoje em dia, a maioria dos componentes já tem mantenedor, mas nada em pé de ter mais mantenedores, porque a ideia é que os componentes têm alguns mantenedores, mas tem inclusive componentes que não têm nenhum mantenedor, que está aí uma oportunidade esperando para alguém para ajudar. Beleza. O track é onde acontece o isolamento do orde-presas, a coisa mais próxima do código. Tem também o Slack, alguma comentou isso rapidamente. Tem do que diz respeito essa palestra, que vai destacar. Tem um canal chamado Core, que é onde se discute todos os assuntos diretamente para a atualização ao Core. Isso acontece uma reunião semanal para discutir o desenvolvimento, ver como está o andamento da próxima versão, questões mais importantes, por aí vai, do final do ano passado ou meio do ano passado para cá, começou a rolar também uma reunião periódica para novos contribuidores. É justamente o espaço de quem está querendo começar a contribuir, isso não está comendo com uma periodicidade meio irregular, rolar algumas coisas no passado, rolar umas duas esse ano, mas acho que a ideia é que tem que estar a manter e justamente se tiver demanda para isso ou se tiver a gente a fim de ajudar a organizar o espaço está aberto para isso. Beleza. Isso é o Slack Repositório de Código. Quero contribuir com o orde-presas, quero relatar um problema que eu achei rodando no meu site ou então testar um patch que alguém enviou. O orde-presas usa uma solução meio única, no sentido de que tem um repositório híbrido que funciona SDN e Git ao mesmo tempo, você pode usar o que você preferir e eu curto muito mais o Git e esse repositório que eu coloquei aqui no comando para baixar o repositório é do repositório developer e o repositório do orde-presas e combina tanto o código do orde-presas quanto todos os testes do orde-presas um repositório que é só o código, esse são as duas coisas é... Eu falei para vocês que eu lembrei que eu tirei esse slide mas enfim, a ideia de baixar os testes junto do repositório para encontrar se voando você poder rodar os testes também a estrutura desse repositório aqui eu destaquei algumas coisas o src é onde está o source onde está o código do orde-presas os testes dos testes o grudifile.js define além das coisas mais normais alguns comandos são úteis para o desenvolvimento então tem um comando que chama grudipatch e aí o id de um patch lá no track e o que esse comando vai fazer depois da baixar o repositório você pode rodar esse comando ele vai baixar o patch do track diretamente para você aplicar o patch do seu repositório local e você pode sair testando enfim, o que é que foro que esse patch faz e o grudifile.js ele roda os testes unitários do orde-presas tanto testes de PHP quanto os testes de JavaScript Outra fonte legal é o core contributor handbook que é basicamente um livro manual de como contribuir com o core então se tá com alguma dúvida que saber alguma coisa, esse é o lugar pra ir além de falar da filosofia do projeto escrever um pouco um prédio de sua organiza ter documentações mais específicas que a id de state são as mais úteis para quem tá começando e quer como criar um patch para quem não sabe criar um patch e também do estilo de código do orde-presas tem uma infinidade de coisa para explorar se alguém se empolgar em e por esse caminho vamos lá eu acho que algumas dicas gerais de pelo menos a minha experiência pessoal de contribuir com o orde-presas acho que uma coisa é nem tudo que seja sugeríssimo se se empolgar não necessariamente vai ser aprovado e isso faz parte um pouco da brincadeira acho que quando você tem um software que roda 30% da internet você tem que tomar decisões entender um pouco, olhar lá o manual do contribuidor entender as filosofias do projeto ajuda esse sentido de você saber se o que está pensando tem uma chance maior ou menor de ser aprovado hoje parece um pouco uma filosofia de ser um core, ser um núcleo-inshuto com hooks que permitem plugins adicionar em funcionalidade esse núcleo-inshuto então é pouco provável se você contribuir a uma coisa para o core sugerir uma mudança muito específica tipo gostaria muito que o orde-presas tivesse um sistema nativo para agerir produtos, não sei eu ouvi o que eu queria na cabeça provavelmente ela falou faz isso num plugin então entender a filosofia ajuda que essas contribuições sejam aprovadas mas não tem garantia nenhuma eu curto trabalhar mais de uma coisa pode ser coisas pequenas parece que não está a ficar muito numa coisa de uma expectativa muito grande de ah, não é condicionado nesse ticket que eu abri porque muitas vezes as coisas demoram tem um exemplo aí mais para frente de uma contribuição que eu fiz que eu te demorou uns sete anos para fechar todo o ciclo as vezes as coisas demoram e via de regra demoram porque falta a gente para ajudar no processo todo não necessariamente sempre é esse o caso mas nesse caso específico que eu estou falando a organização tem muito a ver com isso faltava a gente para olhar era um problema relativamente pequeno de instalações ou de prens e aí a coisa vai caminhando em um ritmo mais devagar é uma coisa que atinge todos os usuários tem a tendência a ser mais rápido outra coisa para comentar talvez seja mais interessante começar com coisas pequenas e deixar coisas maiores para depois e trabalhar em coisas maiores envolvendo mais gente então antes de ter uma ideia muito legal cobrar milhares de linhas de códigos chegar lá e apresentar falar olha isso aqui que legal que eu fiz talvez seja o caso de conversar com as pessoas antes falar e ir lá no main.com.br ou no Slack e falar eu gostaria de fazer isso que vocês acham é uma ideia legal juntar um time de pessoas para trabalhar nisso, a maioria dos recursos que são desenvolvidos por WordPress é um trabalho feito por um grupo de pessoas tem uma articulação antes, tem uma discussão antes de não ficar essa sugestão com o tempo vai melhorando já falei do main.com.br com toy.com.br tem um pouco uma sensação que a gente Brasil muitas vezes se preocupa mais do que deveria com a qualidade do nosso inglês e muitas vezes vem um gringo aqui para o Brasil falar três palavras de português muito maior a gente fala nossa como se o português é maravilhoso e quando um colega nosso está falando em inglês a gente fica zoando ele porque o estudar que dele é estranho é uma palavra errada e acho que esse é um comportamento bem negativo e que não contribui para a gente ter mais participação de brasileiros no desenvolvimento do WordPress muitas vezes você vai estar interagindo com pessoas que o inglês também não é nativo e é isso, a comunidade via de raga está bem aberta para isso tem um pouco a sensação que a gente se algo oculta nesse sentido vamos lá, as vezes demora que é algo que eu já tentei um pouco isso daqui é um outro tifte do track as datas aqui estão atualizadas porque Sprint Screech era a primeira versão dessa palestra, isso aqui foi aberto há sete anos atrás é um tifte que não fui eu que abri outra pessoa abriu há sete anos atrás quando eu trabalhava no desenvolvimento de um site aqui no Brasil que era relativamente com o WordPress eu esparrei no mesmo problema que eu lembro os detalhes direitos basicamente no adivinho do WordPress quando você é vistar as páginas tem um site com mil páginas ou cinquenta páginas você vai vistar vinte páginas porque as páginas são hierárquicas e o WordPress não tem um banco de dados uma representação dessa hierarquia e quando ele exige as páginas às vinte, ele exige organizá-la hieraricamente então o que ele fazia tem que pegar todas as páginas e construir a hierarquia para mostrar a vinte já é uma coisa ruim não não tentei fazer isso fazia isso pegando todas as informações dos posts eu dava um select asterisco do WP Post e eu não lembro se pegar um WP Post de meta também ou não pelo menos asterisco do WP Post de meta o que é um puta desperdício de recurso e aí no site que eu usava a gente começou a encontrar esse problema porque a página que lista as páginas estava super lenta e eu comecei a explorar isso encontrei esse típet de alguém que já estava reportando o mesmo problema mas não tinha um patch aí eu enfeio um patch que basicamente fazia trocar o select asterisco acho que era isso, são as informações que precisava para montar a árvore e depois você tem os 20 posts aí você pega a informação dos 20 posts eu achei isso dois anos depois de que tinha sido aberto em vez da contribuição isso ficou sentado lá por, não sei se um ano dois anos sem ter nenhum feedback em concreto, algumas pessoas comentavam alguma coisa de ah legal, funciona pra mim resolveu um problema ou sei lá o que mas eu tinha nenhum feedback completo e hoje nos dois anos surgiu alguém com o poder de aprovar coisa e começou a dialogar comigo no humor de Kemp eu trabalhei com mais um cara para fazer umas melhorias acho que a gente escreveu textos unitários para a minha proposta e alguém encontrou um probleminha que a gente corrigiu aí típet foi aprovado beleza entrou pro corpo foi rodar, continuava mais um problema não entendi o que estava acontecendo aí foi lá com calma quando o John Gilliam que foi quem integrou a minha alteração no core fez o comit ele esqueceu de uma linha e era uma linha que não quebrava nada então beleza mas fazer com que a minha alteração também não servisse para portaria nenhuma e continuava pegando tudo de todos os posts aí fui lá abrir mais um típet tratando esse problema e aí passou a ser lá mais 6 meses, 1 ano passou foi aprovado e isso daí já está resolvido há 4 anos já não sei mais qual que é a cronologia da história é isso, às vezes se demora mas a coisa foi e talvez na minha experiência pessoal um é super gostoso você tem código que você pensou, criou um problema que se resolveu rodando uma escala que é a escala de press também esse processo todo me ajudou muito a crescer como desenvolvedor porque você está criando código que está sendo visto por um monte de gente e tem um monte de gente sugerindo melhorias do seu código isso é super legal beleza não tem tempo para perguntas então as perguntas vão ser um dia, mas é pra lá e... Obrigado