Executando verificação de segurança...
16

Escolhendo Entre Pacotes de Software em Meio à Incerteza

Apresentação

Olá pessoal, tudo bem? Esta é minha primeira postagem no TabNews e gostaria de compartilhar algo que eu e meu engenheiro-chefe nos deparamos algumas semanas atrás.
Além disso, gostaria de saber a opinião de vocês e o que considerariam fazer em uma situação como esta.

Causo

Algumas semanas atrás, eu, SW Engineer na Programador.tv, estava realizando uma tarefa na qual precisava gerar, em C#, um elemento HTML e, a partir dele, criar uma imagem que seria armazenada. Para isso, estive procurando pacotes que pudessem ser utilizados para realizar essa tarefa. Dentre vários pacotes, tanto eu quanto o chefe nos deparamos com um pacote conhecido como wkhtmltopdf, que, segundo sua documentação, também gera imagens. À primeira vista, parecia a ferramenta perfeita para resolver nossos problemas. No entanto, ao visitarmos a página do GitHub, notamos que o responsável pela ferramenta a arquivou em 2 de janeiro deste ano. Neste momento, nos questionamos se realmente valeria a pena utilizar o pacote, pois ele não está descontinuado, apenas arquivado, e não há nenhuma menção a um novo pacote ou a um plano de descontinuação. Por causa disso, ambos ficamos em dúvida se deveríamos ou não continuar utilizando o pacote.

Solução

Por sorte, ao conversarmos com a equipe, um colega mencionou que em outros locais onde ele havia trabalhado, era comum utilizar o pacote de teste chamado Puppeteer Sharp para criar imagens a partir de elementos contidos em páginas da web, inclusive, para situações como a tarefa que eu estava realizando naquele momento. Com isso em mente, optamos por utilizar a ferramenta Playwright da Microsoft para esse trabalho, e, no final, tudo estava funcionando perfeitamente para a geração de imagens. Agora, estamos estudando a possibilidade de decidir entre Puppeteer Sharp e Playwright.

Conclusão

E é isso, pessoal. No final, optamos por trocar de pacote e estamos utilizando algo que, na verdade, não foi projetado especificamente para essa finalidade, mas que consegue suprir nossas necessidades no momento. Além disso, pode ser útil como ferramenta de testes no futuro. Gostaria de saber o que vocês pensam sobre o assunto. Será que o pacote WkHTMLToPDF será descontinuado no futuro? Estará surgindo algum pacote novo? Será que alguma vulnerabilidade na
ferramenta foi descoberta e o responsável decidiu arquivar o projeto? Gostaria muito de entender melhor o que leva uma pessoa, um grupo ou uma empresa a arquivar o repositório de um pacote sem apresentar algo novo.

Agradeço pelo espaço e espero compartilhar da opinião de vocês sobre o assunto.

Carregando publicação patrocinada...
6

Será que o pacote WkHTMLToPDF será descontinuado no futuro? Será que alguma vulnerabilidade na ferramenta foi descoberta e o responsável decidiu arquivar o projeto?

O WkHTMLToPDF usava o Webkit nativo do Qt, para renderizar uma página e usava uma função que era tipo toPdf() - apenas isso. O QtWebKit foi declarado 'deprecated' - em detrimento do QtWebView - no Qt5.5 que que foi lançado em 01/07/15!!!!

Estará surgindo algum pacote novo?

Não vejo surgindo novos pacotes, pois é relativamente fácil usar ferramentas como o Puppeteer, o Playwright, Chrome DevTools e outros para fazer isso. O que não existia na época que o WkHTMLToPDF foi criado.

Todavia uma api/site seria bem legal ein? Olha ai que projetinho legal, quem sabe dá para ganhar uma grana com assinatura/adds?

Gostaria muito de entender melhor o que leva uma pessoa, um grupo ou uma empresa a arquivar o repositório de um pacote sem apresentar algo novo.

Muitos projetos open source nascem de uma necessidade pontual, seja como um hobby ou como uma solução inovadora para um problema que, até então, não possuía resposta. Provavelmente este é o caso do WkHTMLToPDF. É possível quando o Qt tornou obsoleto a api que o software utiliza o próprio desenvolvedor não tivesse mais este problema e simplemente não tinha porque atualizar o projeto. Depois de manter o projeto morto-vivo por quase uma década, o desenvolver resolver arquivar ele simplemente como uma forma de previner que outros usassem a ferramenta de maneira inadvertida. É imporante notar que desde de 2015 você não deveria usar este projeto, indepedentemente do que o desenvolvidor escrever!!!!

A obsolescência de uma tecnologia porém não é o único motivo para o abandono de projetos open source. Muitas vezes, por diversos motivos, os desenvolvedores simplesmente deixam de atualizar e manter seus projetos, mesmo projetos open source relevantes muitas vezes são mantidos por um número pequeno de contribuidores principais, que não ganham absolutamente nada para fazer isso, tem empregos, familias e ainda querem se divertir em seu tempo livro.

É normal de se esperar que as vezes eles simplemente vão abandonar o barco a qualquer momento. Em projetos saudaveis há um ciclo constante e o projeto vai se perpetuando, mas muitas vezes isso não acontece. Adotar um pacote desconhecido é sempre uma decisão que deve ser tomada sabendo que ele pode ser abandonado a qualquer momento.

Inclusive, pesquisas já mostraram que uma parcela significativa dos pacotes disponíveis no npm, por exemplo, não são mais mantidos ativamente. Claro, como nada de importante é feito em JavaScript, isso não é um problema, mas a realidade é que deveria existir um processo minucioso na seleção de qualquer biblioteca aberta em ambientes sérios.

Projetos que têm o respaldo de grandes empresas, como Facebook, Google, Microsoft, ou organizações renomadas como Apache e Mozilla por outro lado não sofrem deste problema, presença de uma entidade por trás garante confiabilidade e segurança que o software não sera simplemente abandonado.

Agora sim espero ter respondido suas dúvidas!

3

Com toda a certeza, resolveu muitas dúvidas. É muito interessante conhecer sobre o tempo de vida de um projeto como o pacote wkhtmltopdf, que, com toda a certeza, ajudou muitas pessoas em seu tempo ativo. É uma pena que essa biblioteca tenha desaparecido com o descontinuamento da API do Qt 5.5. No entanto, com toda a certeza, serviu de inspiração para o surgimento das ferramentas Puppeteer Sharp e Playwright, que apareceram em 2017 e 2020, e têm uma forma de utilização (para captura de tela) muito semelhante.

Sobre um novo projetinho que forneça uma API para esse tipo de serviço, com toda a certeza, ele está a caminho. Por enquanto, o projeto está privado, mas assim que possível, iremos abrir um fork para tornar parte do projeto open-source, além de disponibilizar uma API que irá capturar uma imagem de um elemento HTML através do ID do elemento. A ideia ainda está em desenvolvimento, mas em breve será lançada.

Agradeço pela sua opinião e pelos conhecimentos compartilhados em sua resposta. Com toda a certeza, isso não ajudará apenas a mim. Sua resposta anterior também foi de grande ajuda. Além de conhecer outra ferramenta, notei que posso utilizar CLIs para capturar imagens da página. Certamente, isso será de grande ajuda também.

3

Ótimo, é sempre bom ser útil! Complementando em, por que alguns projetos são simplesmente abandonados e oferecendo uma valisosa fonte de conhecimento para quem deseja se engajar com o mundo do código livre.

"A Catedral e o Bazar", um famoso ensaio de Eric S. Raymond sobre engenharia de software aplicado ao desenvolvimento de software aberto. O autor apresenta uma série de "regras" que aprendeu com suas experiências e observações do desenvolvimento open-source.

A de número 5 afirma "Quando você perde o interesse em um programa, sua última obrigação é entregá-lo a um sucessor competente." Note que a regra pressupõe a necessidade de um esforço ativo em encontrar e preparar alguém para assumir o controle do software como forma de garantir a saúde do projeto. É claro, que se você deixar para cumprir esta última missão quando já tiver perdido o interesse no software você muito provavelmente não vai ter motivação para tal. Por isso tantos projetos são abandonados. Espero que agora pareça muito simples, certo?

A melhor forma de fomentar sucessores competentes é através da mentoria. Pelo menos é que o Google pensa.

Abraços e bons estudos!