Deixando o cargo de mantenedor após 10 anos · Edição #3777 · mockito/mockito · GitHub

PUBLICIDADE

Deixando o cargo de mantenedor após 10 anos · Edição #3777 · mockito/mockito · GitHub

Em março de 2026, serei o mantenedor do Mockito por 10 anos (quase um terço de toda a minha vida). Olhando para o futuro, decidi que o marco de uma década é um bom momento para passar a manutenção a outras pessoas. Nos próximos meses, até março, dedicarei algum tempo para garantir uma transição tranquila na manutenção.

Nesta edição listo diversas considerações que me levaram a tomar essa decisão. A comunicação e a discussão dos planos para manutenção futura estarão em outro lugar, provavelmente em uma edição separada do GitHub. Fique atento para isso.

Dreno de energia devido à mudança do agente JVM

Como você deve saber, o Mockito 5 lançou uma mudança significativa em que seu artefato principal agora é um agente. Isso ocorre porque a partir da JVM 22, a chamada “anexação dinâmica de agentes” anterior é colocada atrás de um sinalizador. Esta mudança faz sentido do ponto de vista da segurança e eu apoio-a.

No entanto, a forma como isso foi apresentado aos mantenedores do Mockito consumiu energia, para dizer o mínimo. Mockito é provavelmente o maior usuário desse agente e é frequentemente buscado como inspiração em outros projetos. Como tal, Mockito é frequentemente pioneiro no suporte a recursos JVM, construídos sobre uma base sólida com ByteBuddy. Módulos foi um recurso que levou meses de trabalho árduo de Rafael para ser descoberto, incluindo o fornecimento de feedback aos mantenedores da JVM.

Infelizmente, esta forma colaborativa de trabalhar não foi o caso quando se discutiu agentes. Para mim, parecia que o recurso foi apresentado como um negócio fechado por causa da segurança. Embora a ligação dinâmica seja problemática em muitos aspectos, não foram propostas soluções alternativas. Tudo bem, já que Mockito é pioneiro nessas soluções, mas neste caso senti que fomos deixados em paz.

Minha opinião pessoal é que as pessoas envolvidas na mudança subestimaram severamente o impacto social que ela teve. O fato de não existir suporte adequado à construção até hoje mostra que os agentes não são uma prioridade. Tudo bem se não for uma prioridade, mas quando foi comunicado ao Mockito eu percebi como “Mockito está impedindo o ecossistema JVM usando anexo dinâmico, mude imediatamente e descubra por conta própria”.

Aqui, o fato de eu (e outros) sermos voluntários fazendo o melhor para o projeto é importante para entender o impacto social. Quando você pressiona indivíduos que fazem esse trabalho em seu próprio tempo por boa vontade, as coisas desmoronam. É comum brincar com os XKCDs sobre o fato de que todo o mundo do código aberto depende de alguns indivíduos. Isso não poderia ser mais verdadeiro nesta situação, onde o sistema colaborativo entra em colapso quando muita pressão é colocada sobre os indivíduos.

Esta saga plantou a semente para reconsiderar minha posição como mantenedor.

Kotlin como o futuro e estranho

É inegável que a popularidade do Kotlin como linguagem cresceu nos últimos anos. Embora o Mockito mantenha vários sabores para linguagens JVM, esses pacotes normalmente incluem açúcar que torna a integração mais agradável. Em todos os casos, o mockito-core continua sendo o local onde a funcionalidade é implementada.

Infelizmente, esse modelo não se aplica bem ao Kotlin. Enquanto quase todas as linguagens JVM funcionam de maneira semelhante, o Kotlin geralmente faz as coisas de maneira diferente. Isso significa que em vários lugares do mockito-core, existem fluxos separados dedicados ao Kotlin. Na maioria das vezes, isso é resultado direto de Kotlin fazer (na minha opinião) travessuras na JVM que a JVM nunca pretendeu suportar, mas foi capaz de fazê-lo.

Mesmo dentro do próprio Kotlin, os recursos não funcionam de forma consistente. As funções de suspensão são o exemplo mais conhecido. Como tal, o código Mockito se torna mais espaguete, sua API às vezes é totalmente duplicada apenas para oferecer suporte a um recurso principal da linguagem Kotlin e, em geral, menos sustentável.

Embora eu compreenda perfeitamente os motivos pelos quais os desenvolvedores aproveitam a riqueza de recursos do Kotlin como linguagem de programação, sua implementação subjacente tem desvantagens significativas para projetos como o Mockito. Francamente, não é divertido lidar com isso.

Para mim, um futuro onde Kotlin se torne mais predominante não é um futuro que me dê esperança de poder continuar dedicando energia ao Mockito.

Atividades alternativas de código aberto

Sempre fui um fã do trabalho de código aberto e contribuí para centenas de projetos em todos esses anos. Mockito é meu projeto mais importante, mas também trabalhei consistentemente em outros. Nos últimos meses, redescobri a alegria de programar trabalhando no Servo. É um mecanismo web escrito em Rust.

Quando preciso escolher como quero passar minhas 2 horas noturnas em uma determinada semana, raramente preferi o Mockito no ano passado. No passado, Mockito era minha preferência e eu gostava muito. Hoje em dia, Servo e projetos relacionados proporcionam muito mais diversão.

Justificar por que precisei trabalhar no Mockito torna-se difícil quando (por causa dos motivos acima) parece uma tarefa árdua. O trabalho voluntário não deve parecer uma tarefa árdua, pelo menos não por muito tempo.

Resumindo

Como você leu, esses três fatores combinados me levaram à decisão. O primeiro ponto explica porque comecei a duvidar da minha posição, o segundo ponto porque não tenho esperança de que as coisas mudem no bom sentido e o terceiro ponto como encontrei prazer de uma forma diferente.

Embora esses pontos tenham tido impacto sobre mim como mantenedor, minha hipótese é que isso não se aplica a outros da mesma forma. Sei que outras pessoas estão ansiosas para trabalhar no suporte Kotlin, por exemplo. Por isso concluí que uma década é tempo suficiente para ajudar Mockito a avançar. Agora é hora de outra pessoa assumir o controle, pois acredito que isso é do interesse do Mockito como projeto. Porque, em última análise, foi por isso que escolhi me tornar mantenedor: acreditei que, com meu trabalho, poderia melhorar o Mockito para milhões de engenheiros de software.

Para aqueles que estão se perguntando: sim, aconselho sinceramente a todos que assumam uma tarefa voluntária, como manter um projeto de código aberto. Foi uma honra e um privilégio fazê-lo e agradeço àqueles com quem gostei de trabalhar.

Fonte: theverge

Mais recentes

PUBLICIDADE

WP Twitter Auto Publish Powered By : XYZScripts.com