A incrível história de um bug no Figma que na verdade não era um bug
Apenas mais uma história de uma convenção antiga e mal documentada
Em uma thread muito legal no Twitter o time do Figma contou a história de um bug em seu produto que na verdade não era um bug.
Tudo começa em novembro de 2019 com o report de um bug por um usuário do Figma:
Olá,
Estou com um problema ao dar zoom em um elemento em particular por conta do atalho (shift + 2) que é somente para teclas numéricas que estão posicionadas na parte de cima do teclado e não para teclas que ficam na direta do teclado do notebook.
Deu pra entender né?
O usuário utilizava um teclado estendido, contendo além dos números na parte de cima, também posicionados na direita.
Em resumo, ao pressionar Shift + 2 usando a tecla de cima, funciona, mas ao pressionar Shift + 2 usando o teclado numérico, não.
O bug só acontecia no Windows e não no Mac.
E aí que as coisas ficam mais interessantes.
O bug em si tem sua origem lá em 1977.
Foi nessa época que a IBM, a fabricante número 1 de computadores naquele momento, continuava com suas tentativas de conquistar o crescente mercado de computadores pessoais.
Neste ano a IBM lançou o IBM System/34, um “pequeno computador” para pequenas empresas - com teclado e tela chamados 5251.
O System/34 era um computador muito caro. Parte desse preço alto era um belo teclado, que vejam só, tinha teclas numéricas à direita, porém, teclas de seta à esquerda. (As teclas de seta não eram tão importantes nos computadores daquela época.)
Em 1980, a IBM lançou outro computador muito mais barato, o System/23.
O layout do teclado do IBM 5251 foi reutilizado, apesar de ter vindo com uma nova linguagem de design.
Mas foi o próximo computador da linha da IBM que teve mais sucesso, o IBM 5150 de 1981.
Este foi o famoso IBM PC.
O IBM PC foi um projeto muito rápido, então os designers decidiram apenas pegar o teclado do System/23 e apenas alterar as funções de algumas teclas. O bloco esquerdo foi substituído pelas teclas de função e as teclas de seta foram movidas para a direita.
Neste momento as teclas de seta eram mais importantes do que em 1977, para navegar por planilhas e menus. Mas as limitações do layout 5251 significavam que eles tinham que compartilhar espaço com o teclado numérico.
E então o time de engenharia criou uma tecla que podia alternar entre as setas e o teclado numérico. Essa tecla foi chamada de Num Lock.
Entretanto, a ideia não foi tão boa assim. Imagine usar uma planilha por um tempo. Você digita o número, depois deseja ir para outra célula com as setas e, em seguida, digita outro número. Pressionar Num Lock uma e outra vez para alternar entre os modos seria lento, irritante e reduziria o fluxo, especialmente porque Num Lock nem mesmo tinha uma luz.
Imagine precisar pressionar Caps Lock toda vez que você quiser colocar uma letra em maiúscula no início de uma frase e, em seguida, precisar pressioná-lo novamente, nunca vendo seu estado atual.
Bom, foi aí que a engenharia criou um atalho para usuários avançados e como o Shift era uma contraparte natural no mundo do Caps Lock, ele também poderia fazer o mesmo.
A solução foi permitir que fosse possível segurar a tecla Shift e pressionar a tecla de seta/numérica para reverter rapidamente o modo atual.
Isso foi engenhoso. Afinal, a outra mão estava livre e segurar a tecla Shift assim é muito mais rápido.
Agora era possível digitar seu número, pressionar Shift + 2 para ir para a próxima célula e continuar os cálculos.
Neste ponto já é possível perceber o que estava estava acontecendo com o bug Figma, não é mesmo?
Mas ainda tem mais um detalhe.
No final dos anos 80 a IBM finalmente mudou o layout do teclado em resposta às pessoas reclamando sobre uma série de problemas com o teclado 5150.
O que aconteceu foi o que muitos consideram o "teclado de Deus" - IBM Modelo M, com um layout estendido de 100 teclas que ainda está conosco até hoje.
Esse layout tinha suas setas separadas do teclado numérico, mas como se passaram 5 anos, algumas pessoas já se acostumaram com a situação do Num Lock, então isso teve que ser preservado também.
E se o Num Lock fica, o atalho Shift também precisa ficar.
E é exatamente isso que estava acontecendo com o usuário que relatou o bug do Shift + 2 no Figma, quase 40 anos depois que as decisões foram tomadas pela IBM.
O atalho do MS-DOS foi preservado no código em todas as versões do Windows, da 1.0 até a 10!
E assim, no Figma, ao apertar Shift + 2 no teclado normal acontece o “Zoom para seleção”, mas ao se pressionar Shift + 2 no teclado numérico o computador interpretava como “↓” - e isso obviamente fazia algo diferente.
Isso também explica por que isso nunca foi um problema em um Mac.
O primeiro Mac não tinha teclas de seta (para forçar devs a fazer um software orientado para o mouse) nem um teclado numérico.
Na época em que a Apple adicionou em 1987, ambos eram chaves separadas em seções, então o Num Lock nunca teve que acontecer.
Felizmente, navegadores possuem as informações necessárias para eliminar a ambiguidade entre um Shift + 2 e o outro Shift + 2, e assim o time do Figma conseguiu corrigir o bug.
Na prática, não era bug. Essa é apenas mais uma história de uma convenção mais antiga e mal documentada.
Esse é o verdadeiro bug de agente de usuário.
Muito interessante!