Reunião de Férias doFLUSP: FLOSS at USP
Grupo
● Doações da Analog Devices
● Gosto pelo Kernel e FLOSS
● Mais em: https://flusp.ime.usp.br/about
História● Laboratório de Métodos Ágeis (2°
sem de 2018)
● 20% de todas as contribuições no linux-iio, no período
● Contribuir para FLOSS
○ Aprender com códigos de sucesso
○ Interagir com a comunidade e empresas
● Compartilhar conhecimento
○ Primeiros passos e diretrizes
○ Dos and don’ts
● Oportunidades
○ GSoC/Outreachy
○ Empregos/estágios
● Have fun! (cliché)
Objetivos
Valores● Liberdade de código e conhecimento
● Organização horizontal
● Compartilhamento mútuo de conhecimento
● Revisão é tão importante quanto desenvolvimento
● Passar o bastão
Organização do Grupo● Descentralização
● Sistema de mentoria
● Dinamicidade
● Fazedocracia
● Background Agile
○ Stand up meetings
○ Pair Programming
○ Sprints
FLUSP
GCC
Kernel
GoSPN
Beep
flusp-site
flusp-infra
ULXRandR
Kworkflow
Projetos
Linux Kernel● Mentores: Matheus, Marcelo,
Siqueira, Shayenne
Linux Kernel em númerosArquivos 63.074
Linhas 26.209.167
Commits 809.891
Autores 19.577
Isso só na branch ‘master’ de https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ em 05/01/2018
Linux Kernel em números● Android (80% de todos os novos smartphones vendidos)
● Top 500 supercomputadores
● Servidores
● International Space Station
○ OpsLAN
○ Robonaut R2
● Bolsa de valores de NY, Tokyo e Londres.
Fontes: https://www.top500.org, https://training.linuxfoundation.org/solutions/corporate-solutions/success-stories/linux-foundation-training-prepares-the-international-space-station-for-linux-migration/, https://www.linuxfoundation.org/about/
Estrutura do código
What it ISN’T What it IS
Motivações● Contribuir com um dos projetos mais usados no mundo● Desafios de programação e projeto● Interagir com desenvolvedores do mundo todo● Interagir com grandes players da indústria (Intel, IBM, RedHat, …)● Ter revisões de código (e revisar também)● ...
Recomendações● Conforto com C e ponteiros● Conforto com terminal e interface de linha de comando● Desejo de ler/escrever código de baixo nível● Makefile (conhecimento básico)● Git● Operações Bitwise● Big Endian e Little Endian
● Mentor: Giuliano
GCCGNU Compiler Collection
O que é o GCC● Compilador para várias plataformas e Sistemas Operacionais
○ x86, ARM, PPC, …
○ Linux, Mac, BSD, Windows, DOS, ...
● Primeiras versões datam da década de 80
● Compilador principal no Linux
● As mesmas motivações do Linux valem aqui!
Recomendações● Conforto com C e aspectos de linguagens de baixo nível
○ Às vezes, pode ser necessário fazer um dump do assembler para encontrar o problema
● Conforto com Terminal e Linha de Comando
● Ter alguma noção de Teoria de Compiladores○ Autômatos, Regex e Linguagens Livre-de-Contexto
○ Grafos de Controle de Fluxo
○ ...
● Conforto com o funcionamento de Ponto Flutuante○ Se for trabalhar nessa parte
Kworkflow
● Mentores: Siqueira, Giuliano
O que é o Kworkflow (kw)● Conjunto de scripts que busca facilitar o processo de desenvolvimento
para o Linux
● Surgiu como uma tentativa de juntar diversos scripts
● Em desenvolvimento
Recomendações● Bash
● Fluxo de desenvolvimento do Kernel
● Máquinas virtuais
Repositório: https://github.com/rodrigosiqueira/kworkflow
● Mentor: Giuliano
ULXRandR“Unofficial LXrandR fork with fixes”
● Mentor: Renato
Beep“IRC bot framework in C++ and libircclient”
● IRC○ Internet Relay Chat○ Text only○ Usado em vários projetos FLOSS
■ GNU Hurd (...)
■ Linux Kernel
■ FreeBSD
■ Debian
○ FLUSP também usa :)
■ irc.freenode.net | #ccsl-usp
Beep● Beep
○ C++11○ https://github.com/RenatoGeh/beep
● Boost○ https://www.boost.org/
● libircclient○ C○ http://www.ulduzsoft.com/libircclient/
● Features○ Framework simples○ Building blocks○ Modular (comandos são modules)
● Por que contribuir?○ Fácil de começar○ Quase nenhuma dependência○ Só codar
● Mentores: Siqueira, Renato
FLUSP-Infra“FLUSP server management”
● Mentor: Siqueira
FLUSP-site“FLUSP site”
● Mentor: Renato
GoSPNA free, open-source inference and learning
library for Sum-Product Networks
Image Reconstruction with Sum-Product Networks
https://github.com/renatogeh/gospn
https://youtu.be/vhpWQDX2cQU
https://github.com/renatogeh/godrive
Autonomous Mobile Robot Driving Through Image Classification Using Discriminative Learning of Sum-Product Networks
https://www.ime.usp.br/~renatolg/mac0499
Próximos passos
● RAT-SPNs (Random-Tensorized Sum-Product Networks)○ Resultados comparáveis a DNN○ Mas:
■ Inferência exata linear■ Robusto em missing features■ Modelo gerativo
Recomendações● Probabilidade e Estatística
○ MAE0121, MAE0212 ou equivalentes
● Grafos○ MAC0328 pelo menos
● Disposição para ler artigos● Git● Linguagem Go● Vontade de aprender :)
GSoC e Outreachy
● Ajudar as comunidades de software livres a obterem novos membros● Trabalho remoto e durante as férias de verão (EUA)● Valor total da bolsa: 4500 dólares (pago em três parcelas)● Data importantes:
○ 26 de Fevereiro: Lista das organizações aceitas○ 25 de Março: Início das aplicações○ 9 de Abril: Fim das inscrições○ 6 de Maio: Resultado dos selecionados○ 27 de Maio: Os trabalhos começam oficialmente○ 3 de Setembro: Resultado final
Google Summer of Code (GSoC)
● Estágio de apoio à diversidade em projetos de software livre e código aberto
● Trabalho remoto● Valor total da bolsa: 5500 dólares (pago em três parcelas)● Outreachy tem dois oferecimentos por ano:
○ Inscrições abertas Fevereiro Setembro○ Contribuições até Março Outubro○ Seleção Abril Novembro○ Estágio começa Maio Dezembro○ Estágio termina Agosto Março
● Leia mais em: https://www.outreachy.org
Outreachy
Dúvidas?
Hora de brincar :)