{
  "path": "/como-fazer-seu-primeiro-projeto-de-codigo-aberto-a-historia-do-alchemydumps.html",
  "site": "at://did:plc:3272gdrjsuikiff7qsgokgas/site.standard.publication/3mjaxtes2yf2v",
  "tags": [
    "pt",
    "Python",
    "Flask",
    "Dev",
    "Backend"
  ],
  "$type": "site.standard.document",
  "title": "Como fazer seu primeiro projeto de código aberto: a história do AlchemyDumps",
  "publishedAt": "2016-06-21T00:00:00.000Z",
  "textContent": "Hoje eu estava pensando no AlchemyDumps, um pacote Python que tem uma história legal. Resolvi contá-la aqui e — _spoiler_ — deixar um convite para quem está estudando Python.\n\n  \n\nLá para meados de 2013, depois de escrever uma dissertação sobre o caso do Aaron Swartz, enfiei na minha cabeça que eu iria aprender Python. Foi um das decisões mais acertadas da minha vida: foi quando comecei a me reconciliar com o mundo da programação, mundo que eu havia abandonado há uns 7 ou 8 anos.\n\nComecei fazendo um curso no Coursera, depois fui lendo um livro sobre Python. Fui me atualizar sobre desenvolvimento para web. Fui pedindo ajuda no Reddit e seguindo um tutorial para desenvolver uma aplicação web. Com isso logo coloquei meu primeiro projeto no ar — _hell yeah!_\n\nMas eu queria mais. Queria sentir a responsabilidade de ter no ar algo que não fosse apenas um projeto de estudos. Queria um projeto _de verdade_. Não podia ser coisa grande, eu era um novato em Python. Mas tinha que dar o gostinho de ser algo no qual eu não pudesse falhar (ao menos, não grotescamente). E foi bem nessa época que surgiu a oportunidade de um _freela_. Um amigo precisava um site para uma exposição, um _single page application_ com um gerenciador de conteúdo básico.\n\nJuntei o pouco que sabia de Python e pensei: consigo! Orçamento enviado e aprovado, desenvolvimento começando, cliente começando a usar as primeiras versões da aplicação, eu muito contente e… com muito medo.\n\nE se eu errasse? Se eu fizesse alguma besteira com o código, tudo bem, o git me salvava. Mas e se eu fizesse algum erro que afetasse o banco de dados, que fizesse meu cliente perder o que ele já havia cadastrado?\n\nEu estava usando o Flask, logo precisava de uma extensão para o Flask que fizesse backup do banco de dados. Fui procurar. Não achei. Fiquei incrédulo, mas não achei.\n\nFoi assim que nasceu o AlchemyDumps: do meu receio de perder os dados do cliente. Fui estudar e vi que não era muito complicado. Descobri que o ORM que eu estava utilizando tinha um módulo que fazia quase isso: um _serializer_ e um método _dumps_, ou seja, ele já estava preparado para pegar os dados do banco e me devolvê-los em um formato que eu poderia escrever em arquivo (e, se fosse o caso, importar para o banco de volta sem multa complicação). No mais, foi só fazer uma interface bem básica para o usuário.\n\n<blockquote class=\"twitter-tweet\" data-lang=\"en\"><p lang=\"en\" dir=\"ltr\">I couldn’t find anything interesting googling “SQLAlchemy backup” so I ended up deploying my very 1st <a href=\"https://twitter.com/hashtag/Python?src=hash\">#Python</a> package <a href=\"http://t.co/m4XAXVSadA\">http://t.co/m4XAXVSadA</a></p>&mdash; Cuducos (@cuducos) <a href=\"https://twitter.com/cuducos/status/533770276732174336\">November 15, 2014</a></blockquote> <script async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\n\nO que acho legal dessa história é que não comecei com a pergunta _como faço um pacote de código aberto?_ ou _como se inicia no mundo open-source?_ ou nada parecido. Vi uma necessidade, um buraco. Com o que eu tinha em mãos eu pensei que talvez eu conseguiria preencher essa lacuna. Tentei. Deu certo. Resolvi meu problema, passei a dormir em paz. E de quebra coloquei no ar meu primeiro pacote Python. A necessidade virou oportunidade. E a oportunidade virou um pacote de código aberto. Simples assim.\n\n  \n\nIsso foi há uns 2 anos. Hoje o AlchemyDumps é usado por aí. Já foram 9 atualizações e 9 pessoas que eu não conhecia já contribuíram com o pacote. Mas confesso que ele anda meio parado.\n\nNas próximas semanas devo dar um recauchutada no pacote todo. Algumas coisas que tenho em mente:\n\n Resolver um bug que a comunidade encontrou\n Escrever uma API para ele ser utilizado fora do Flask (fazer backup de qualquer aplicação rodando SQLAlchemy)\n Compatibilidade com o o CLI do Flask 0.11 (e não só com Flask-Script)\n Usar Click e melhorar o CLI (cores, testes…)\n Usar _async_ quando der\n Melhoria nos testes (evitar escrever em disco ou no banco de dados, testes de integração)\n* Melhoria geral do código (escrevi o grosso dele há 2 anos, tenho muito a reescrever com o que aprendi nesse tempo todo)\n\nEntão fica o convite: eu vou estar trabalhando nessas coisas nessas próximas semanas. Se alguém aí estudando Python quiser fazer _pair programming_ comigo, é ótimo para aprender. Não importa teu nível: tenho certeza que eu aprendo contigo e você comigo. Me escreva dizendo da tua disponibilidade (dias, horários…) e interesse que combinamos (tem meus contatos no topo dessa página aqui, na barra lateral).\n\nE, claro, quem quiser por a mão na massa sozinho, fiquem à vontade para _pull requests_ e _code reviews_ ; )",
  "canonicalUrl": "https://cuducos.me/como-fazer-seu-primeiro-projeto-de-codigo-aberto-a-historia-do-alchemydumps.html"
}