Houve um bug no WordPress que só afetava canhotos. Ou, pelo menos, pessoas que seguram o telemóvel na mão esquerda. E ficou 7 anos sem ser corrigido — não por ser difícil de resolver, mas porque ninguém que o podia corrigir conseguia dar por ele.
Foi o Terence Eden que contou esta história no blog dele. E é daquelas que merece ser partilhada.
O mistério do comment box fantasma
O Terence tem um blog otimizado ao detalhe. Pouco JavaScript, tudo a funcionar sem sobressaltos. Um dia, um leitor queixa-se: “quando estou a fazer scroll no telemóvel, aparece-me uma caixa de comentários do nada. É impossível ler um artigo sossegado.”
O Terence faz scroll no próprio site dezenas de vezes por dia. E nunca lhe aconteceu. Como é que um bug pode existir para uns e não para outros?
A resposta está na mão que segura o telefone.
O scroll e o polegar
Quando usamos o telemóvel com a mão direita, o polegar faz scroll pelo lado direito do ecrã. O link de “responder” a um comentário estava do lado esquerdo. Nunca se cruzavam.
Mas quem usa a mão esquerda faz scroll exatamente onde esse link está. E o link tinha um listener de touchstart que, ao ser roçado, abria a caixa de comentários.
O Terence é destro. O leitor que reportou o bug é canhoto. O bug existia há anos — o Terence só não o via porque o seu polegar direito nunca lá tocava.
O código que já não fazia sentido
A origem disto remonta a 2017. Alguém no WordPress adicionou um touchstart listener aos links para contornar o velho problema do delay de 300ms nos toques em mobile.
Esse delay existia nos browsers para distinguir entre um toque normal e um duplo-toque para fazer zoom. Mas já em 2013 o Chrome tinha resolvido a situação. Em 2015, a library FastClick já estava obsoleta porque o problema tinha desaparecido.
Mesmo assim, em 2017, o código foi adicionado ao core do WordPress. E lá ficou.
A correção? Duas linhas apagadas
O bug foi reportado oficialmente no trac do WordPress em 2019 — ticket #46713. Ficou esquecido durante 7 anos.
Até que o Terence, depois de perceber a causa, abriu um PR e resolveu a coisa. A correção foi simples: apagar duas linhas de código.
Não houve algoritmos complicados nem mudanças arquitectónicas. Foi remover um listener que já não fazia sentido e que, além de não servir para nada, ainda causava este problema a uma fatia significativa dos utilizadores.
O que aprendemos com isto
Este bug é um exemplo clássico de viés do programador. Quem escreveu o código (e quem manteve o WordPress durante anos) era, muito provavelmente, destro. Testava o site com a mão direita e nunca se deparava com o problema.
O mesmo fenómeno acontece em todo o lado: interfaces desenhadas por pessoas destras ignoram canhotos, algoritmos treinados com dados de maiorias esmagadoras falham minorias, features são testadas apenas no dispositivo do developer.
A parte mais irónica? Se o bug tivesse afetado destros, teria sido resolvido no dia seguinte.
Moral da história
Testem o vosso software com pessoas diferentes de vocês. Usam o telemóvel com a mão direita? Experimentem com a esquerda. Usam Chrome? Abram no Safari. Têm 20 anos? Perguntem a alguém de 50 se a letra é legível.
Pode ser que descubram um bug que, para vocês, nunca existiu.
Recursos: - Post original do Terence Eden - Bug report original no WordPress Trac (#46713) - Commit que adicionou o touchstart listener em 2017 - PR do Terence a corrigir o bug - Chrome blog: 300ms tap delay gone away
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário