O criador do SQLite revela que o segredo de 26 anos de sucesso foi construir as próprias ferramentas, minimizar contribuições externas e manter a qualidade do código com testes rigorosos.
Isso mostra a essência da "liberdade", muitas vezes ignorada no complexo ecossistema open source.
Índice
-
A jornada de 26 anos de código de Richard Hipp, criador do SQLite
- 1.1. O nascimento do SQLite: resolução de problemas que começou em um navio de guerra
- 1.2. O crescimento do SQLite e seu sucesso comercial
- 1.3. Licença, filosofia open source e desenvolvimento de ferramentas próprias
- 1.4. Testes rigorosos e desenvolvimento de software na era da IA
- 1.5. A sustentabilidade do SQLite e seu lado humano
1. A jornada de 26 anos de código de Richard Hipp, criador do SQLite
O criador do SQLite, Richard Hipp, colocou em prática ao longo de 26 anos de desenvolvimento de código a seguinte filosofia:
- desenvolver ele mesmo as ferramentas de que precisa;
- minimizar contribuições externas de código;
- manter a qualidade do código com testes rigorosos;
- reduzir dependências externas para garantir liberdade no desenvolvimento.
1.1. O nascimento do SQLite: resolução de problemas que começou em um navio de guerra
SQLite surgiu em um projeto naval
- O SQLite começou em um trabalho contratado relacionado ao navio de guerra USS Oscar Austin.
- Na época, Richard Hipp participava, como contratado da General Dynamics, do projeto de construção do navio DDG-79 da Bath Iron Works.
- Houve problemas no desenvolvimento do sistema de informações de controle de avarias da embarcação.
- Outra empresa havia investido milhões de dólares, mas não conseguiu entregar um resultado adequado.
Limites dos sistemas de banco de dados existentes
- Para resolver os problemas do sistema de controle de avarias, Richard Hipp desenvolveu rapidamente um software baseado em heurísticas.
- Porém, havia um problema: se o mecanismo de banco de dados Informix usado para armazenar os dados fosse interrompido, o software também parava de funcionar.
- O software precisava continuar funcionando mesmo quando o administrador do sistema desligasse o mecanismo de banco de dados.
- Isso o levou a pensar em uma abordagem em que a aplicação lesse diretamente os dados no disco, sem um processo de banco de dados separado.
- Como na época era difícil encontrar um mecanismo de banco de dados SQL que atendesse a esses requisitos, ele precisou desenvolver um por conta própria.
Estudo autodidata de bancos de dados relacionais
- Na época, buscas na internet ainda não eram algo tão comum quanto hoje.
- Richard Hipp pesquisou materiais em uma biblioteca universitária local para estudar tecnologia de bancos de dados relacionais.
- Naquele período, MIT, Harvard e Berkeley já conduziam pesquisas ativas em bancos de dados relacionais.
- Mas, por limitações geográficas, ele não conseguia acessar facilmente as pesquisas mais recentes.
- No fim, acabou estudando e implementando por conta própria a tecnologia de banco de dados de que precisava.
1.2. O crescimento do SQLite e seu sucesso comercial
Um projeto que não começou com objetivo de lucro
- O SQLite não foi desenvolvido desde o início com foco em monetização.
- As versões iniciais foram lançadas como software livre.
- Na época do desenvolvimento, não havia plano de transformar isso em negócio ou obter receita com ele.
Primeiro contrato comercial com a Motorola
- Alguns anos após o lançamento público do SQLite, Richard Hipp foi contatado pela fabricante de celulares Motorola.
- A Motorola queria embarcar o SQLite em seus telefones.
- Isso levou ao primeiro contrato comercial do SQLite.
- O contrato não seguiu um modelo de licenciamento por uso, mas sim um modelo de preço fixo.
Colaboração com a AOL
- Depois disso, a America Online (AOL) também fechou um contrato para incluir o SQLite em pacotes de CD-ROM.
- Esse contrato também foi feito em modelo de preço fixo.
- Richard Hipp avaliou que, na época, o valor do contrato foi relativamente baixo em comparação com o valor real do SQLite.
Symbian OS escolhe o SQLite
- O Symbian OS, usado em celulares da Nokia e de outras marcas, realizou um teste cego para escolher um mecanismo de banco de dados.
- Ao todo, 10 mecanismos de banco de dados participaram da avaliação.
- Como resultado, o SQLite foi o escolhido.
- Nesse processo, foi levantada a questão de que o SQLite dependia demais de um único desenvolvedor central.
- Recebeu-se a sugestão de formar um consórcio para aumentar o chamado bus factor.
Bus factor
É uma métrica que indica se um projeto consegue se manter caso algumas de suas pessoas-chave deixem repentinamente de poder trabalhar nele.
Um bus factor de 1 significa que o projeto pode ter dificuldade para se sustentar se um único desenvolvedor essencial sair de cena.
Criação do consórcio e dedicação integral
- Mitchell Baker, da Mozilla, deu conselhos sobre a criação de um consórcio.
- Com base nisso, foi criado o consórcio do SQLite.
- Após a criação do consórcio, Richard Hipp passou a se dedicar integralmente ao desenvolvimento do SQLite.
- Ao contratar vários funcionários, ele passou a operar uma organização de desenvolvimento pequena, mas sustentável.
Plano de suporte de longo prazo até 2050
- Em 2010, a Airbus quis usar o SQLite nos sistemas aviônicos do projeto da aeronave A350.
- A Airbus perguntou se o SQLite poderia ser mantido e suportado no longo prazo.
- Considerando que a vida útil da fuselagem de uma aeronave é de cerca de 40 anos, foi prometido suporte de longo prazo.
- Essa promessa não era tanto uma obrigação legal, mas sim um objetivo de longo prazo perseguido pelo projeto SQLite.
- Atualmente, Richard Hipp definiu 2050 como sua meta pessoal para encerrar o suporte ao SQLite.
- A meta foi estabelecida com base na ideia de manter o código por mais tempo do que a vida útil prevista dos dados, em um tipo de abordagem de "código voltado aos dados, mais 50 anos".
1.3. Licença, filosofia open source e desenvolvimento de ferramentas próprias
O surgimento da licença de “oração”
- A versão 1 do SQLite dependia da biblioteca GDBM.
- Como o GDBM usava licença GPL, o SQLite também inevitavelmente sofria influência da GPL.
- Depois, para oferecer suporte a consultas por intervalo, foi desenvolvido um backend de armazenamento próprio baseado em B-tree.
- Com a remoção da dependência de bibliotecas externas, tornou-se possível escolher livremente a licença.
A escolha do domínio público
- Na época, as licenças mais conhecidas eram basicamente a MIT e a Berkeley.
- Em vez de usar uma licença com cláusulas legais complexas, Richard Hipp publicou o SQLite em domínio público (Public Domain).
- Mais tarde, descobriu que o conceito de domínio público não é reconhecido da mesma forma em todos os países.
- Ainda assim, a política de divulgação do SQLite acabou sendo aceita, na prática, de forma semelhante a uma licença open source.
O texto da “oração”
No cabeçalho do código-fonte do SQLite, em vez de um texto jurídico convencional, foi incluído um trecho mais próximo de uma bênção ou oração.
May you do good and not evil.
May you find forgiveness for yourself and forgive others.
May you share freely, never taking more than you give.
À medida que o SQLite se tornou uma das bibliotecas de software mais usadas do mundo, esse texto também passou a simbolizar sua filosofia de licenciamento peculiar.
Um modelo de desenvolvimento que minimiza contribuições externas
- O SQLite não recebe pull requests ativamente como um projeto open source típico.
- Ele mantém uma abordagem em que as contribuições externas são minimizadas, e a equipe central escreve e gerencia o código diretamente.
- Richard Hipp compara pull requests a um "free puppy".
- Assim como receber um filhote de graça ainda cria responsabilidades futuras de cuidado e manutenção, aceitar código externo traz responsabilidades de longo prazo como:
- manutenção de código
- testes
- documentação
- correção de erros
- gestão de compatibilidade com outras plataformas
- responsabilidade técnica de longo prazo
- Essa limitação de contribuições externas é um dos fatores que permitiu ao SQLite manter qualidade e direção consistentes por mais de 26 anos.
Exemplos de ferramentas próprias
Fossil
- Fossil é um sistema de controle de versão próprio criado para gerenciar o projeto SQLite.
- Foi desenvolvido em uma época parecida com a do Git.
- Além do gerenciamento do código-fonte, ele fornece de forma integrada:
- controle de versão
- rastreamento de issues
- wiki
- fórum
- interface web
- O próprio Fossil foi construído com base no SQLite.
- Por isso, o Fossil também funciona como uma plataforma prática de beta testing do SQLite.
- Durante o desenvolvimento e a operação do Fossil, foi possível identificar e melhorar problemas do SQLite do ponto de vista de um desenvolvedor de aplicações.
- Richard Hipp avalia que, enquanto o Git é adequado para grandes projetos distribuídos como o kernel do Linux, o Fossil é mais apropriado para projetos pequenos como o SQLite.
Lemon
- Lemon é uma ferramenta criada para gerar o parser SQL do SQLite.
- Em vez de usar Yacc ou Bison, ela foi feita do zero.
- Por ser uma ferramenta própria, foi possível melhorar livremente a forma de geração do parser de acordo com as necessidades do SQLite.
Ferramentas próprias e a filosofia da liberdade
- Para Richard Hipp, desenvolver ferramentas próprias não é apenas uma preferência técnica.
- Ele vê criar as próprias ferramentas de que precisa como uma forma de cuidar de si mesmo.
- Reduzir dependências externas faz com que ele seja menos afetado por decisões de outros projetos ou empresas.
- Ele entende que essa independência amplia a liberdade do desenvolvedor.
- Ao mesmo tempo, também sente peso e preocupação pelo fato de o SQLite ser usado como dependência crítica em inúmeros sistemas no mundo todo.
1.4. Testes rigorosos e desenvolvimento de software na era da IA
Testes como núcleo do sucesso do SQLite
- Um dos fatores centrais para o SQLite manter sua estabilidade por tanto tempo é o nível extremamente rigoroso de testes.
- A equipe do SQLite vai muito além de simplesmente verificar se as funcionalidades funcionam, validando diversos casos excepcionais e plataformas.
- Os testes são tratados com tanta importância que o volume de código de teste é muito maior do que o do código real do produto.
Aplicação do padrão DO-178B
- A equipe do SQLite aplicou aos testes a abordagem do DO-178B, padrão de desenvolvimento de software para aviação.
- Com isso, aumentou sistematicamente a cobertura de testes.
- Nos estágios iniciais do desenvolvimento do Android, depois de atingir um nível de cobertura equivalente ao DO-178B, praticamente desapareceram os relatos de bugs.
- Essa experiência confirmou que testes rigorosos têm impacto direto na melhoria real da estabilidade do software.
Descoberta de novos bugs com fuzzing
- Mais tarde surgiu a técnica de profile-guided fuzzing.
- Fuzzing é uma abordagem que insere dados aleatórios ou modificados em um programa para encontrar erros inesperados.
- Novos tipos de bugs, difíceis de encontrar mesmo com testes no nível DO-178C, foram descobertos com fuzzing.
- Isso mostra que cobertura alta de testes, por si só, não é suficiente para encontrar todos os erros.
Bugs descobertos por IA
- Recentemente, também têm surgido casos de uso de IA para procurar bugs ou redigir relatórios de bugs.
- O projeto SQLite já recebeu relatos de bugs suspeitos de terem sido gerados por IA.
- A IA pode se tornar uma nova ferramenta de verificação de software para complementar testes e fuzzing.
A avaliação de Richard Hipp sobre IA
- Richard Hipp diz que sua opinião sobre IA pode mudar todos os dias.
- No momento, ele a usa como uma ferramenta muito útil.
- Ele contou que, ao fazer ao ChatGPT perguntas sobre código do SQLite, recebeu respostas no seguinte tom:
“Claro, você também sabe disso...”
- Ele explicou que sentiu algo meio inquietante ao ver a IA falar sobre código escrito por ele como se soubesse mais do que o próprio autor.
- A IA é útil para pesquisar informações e obter ideias.
- Porém, nem sempre está correta e pode fornecer informações erradas de forma extremamente convincente.
- Código gerado por IA também apresentou problemas de compatibilidade, como funcionar em um sistema operacional e não funcionar em outro.
- Por isso, mesmo resultados produzidos por IA precisam ser revisados e corrigidos por humanos.
Conselho para desenvolvedores mais jovens
- Richard Hipp recebe bem tentativas de fazer fork do SQLite para criar um banco de dados melhor.
- Mas destaca que, para chegar ao mesmo nível do SQLite, são necessários:
- mais de 25 anos de desenvolvimento contínuo
- dedicação obstinada a um único tema
- testes e melhorias de longo prazo
- observação contínua das necessidades dos usuários
- experiência acumulada por meio de repetidas falhas
- Software excelente não é feito em pouco tempo.
- Ele avalia que a IA pode mudar profundamente a forma de desenvolvimento de software, mas que ainda é difícil prever como será esse futuro.
1.5. A sustentabilidade do SQLite e seu lado humano
Por que foi possível durar 26 anos
- Richard Hipp explica o sucesso do SQLite mais por providência divina e sorte do que por sua própria capacidade.
- Ele diz não se considerar um programador excepcionalmente brilhante.
- Ainda assim, analisa que certas características ajudaram no desenvolvimento do SQLite:
- a postura de manter teimosamente seu próprio jeito de fazer as coisas
- a atitude de questionar ideias estabelecidas
- o hábito de criar as próprias ferramentas quando necessário
- a inclinação de se concentrar em um único problema por muito tempo
- a postura de aproveitar o próprio processo de desenvolvimento
- Ele diz que foi importante o processo contínuo de pensar em como tornar o SQLite cada vez melhor.
Vantagens de uma equipe pequena
- Richard Hipp diz que não é particularmente habilidoso em lidar com muitas pessoas ou administrar relações políticas dentro de uma organização.
- Por causa dessa personalidade, manteve a equipe de desenvolvimento do SQLite pequena.
- Como resultado, ele avalia que essa estrutura enxuta ajudou na consistência da direção do SQLite e na rapidez das decisões.
- Ele reconhece que não tem a habilidade de coordenar relações com inúmeros desenvolvedores como Linus Torvalds, do Linux.
A empresa administrada com a esposa Ginger
- Richard Hipp administra a empresa com sua esposa, Ginger.
- Os dois mantêm um trabalho em equipe flexível, chegando a trocar de funções conforme a situação.
- Ginger é musicista e também é habilidosa em ajudar outros músicos que enfrentam problemas com computadores.
- Richard Hipp comenta que Ginger é mais conhecida do que ele na comunidade local.
O lado humano do desenvolvimento de software
- Richard Hipp não enxerga software apenas como um conjunto de código ou tecnologia.
- Ele enfatiza que elementos humanos como emoções dos desenvolvedores, relações de colaboração, obsessões, fracassos e senso de realização são importantes no desenvolvimento de software.
- Software é um resultado complexo e abstrato, mas por trás dele existem histórias das pessoas que o criaram.
Livro recomendado: The Soul of a New Machine
- Richard Hipp recomenda 《The Soul of a New Machine》 como livro para entender o lado humano do desenvolvimento de software e de computadores.
- O livro não trata apenas de tecnologia de computação.
- Ele aborda elementos como:
- a paixão dos desenvolvedores
- conflitos internos nas organizações
- desafios técnicos
- fracassos e frustrações
- colaboração e competição
- emoções no processo criativo
- Ele enfatiza a importância de compreender profundamente tecnologias complexas e, ao mesmo tempo, conseguir transmiti-las como histórias humanas.
Conclusão
O motivo de o SQLite ter conseguido se manter com sucesso por mais de 26 anos não é apenas excelência técnica.
Os principais fatores desse sucesso podem ser resumidos assim:
- Desenvolveu diretamente a tecnologia necessária para resolver problemas reais.
- Reduziu dependências externas e manteve o controle sobre o projeto.
- Considerou a responsabilidade de manutenção de longo prazo mais importante do que contribuições externas.
- Criou ele mesmo ferramentas necessárias, como Fossil e Lemon.
- Aplicou testes rigorosos em nível de software aeronáutico.
- Aproveitou IA e novas tecnologias de desenvolvimento, mas sem confiar cegamente no resultado.
- Operou o projeto com uma equipe pequena e relações humanas próximas.
- Mergulhou obstinadamente em um único tema por muito tempo.
O ponto central mostrado pelo caso do SQLite é que liberdade não é a ausência total de restrições, mas a condição de poder assumir responsabilidade e exercer controle sobre as ferramentas e o código que se usa.
A forma como o SQLite é desenvolvido — reduzindo dependências externas, criando as ferramentas necessárias e validando tudo de forma rigorosa — é um exemplo importante do que significa desenvolvimento de software sustentável mesmo em uma era de IA em rápida transformação.
4 comentários
O Do-178 da RTCA é um guia curto o suficiente para que seja realmente possível lê-lo e aplicá-lo. Ele é amplamente utilizado no setor de aviação.
https://studylib.net/doc/27132454/rtca-do-178b
"Mais de 25 anos de desenvolvimento contínuo" é realmente incrível...
Muito legal... parece até um filme
A mentalidade dele é muito legal.