História do Nette
O início do Nette remonta a 2004, quando seu autor, David Grudl, começou a procurar um framework adequado no qual pudesse escrever aplicações, pois o PHP puro já não era suficiente. Nenhuma das soluções disponíveis na época o satisfez, então ele começou gradualmente a esboçar as características de um novo framework, que mais tarde recebeu o nome de Nette.
Naquela época, frameworks atuais como Symfony, Laravel ou Ruby on Rails ainda não existiam. No mundo Java, o framework padrão era o JSF (JavaServer Faces) e, no concorrente .NET, o ASP.NET Webforms. Ambos permitiam construir páginas usando componentes de UI reutilizáveis. David considerou seus métodos de abstração e tentativas de criar estado sobre o protocolo HTTP sem estado usando sessão ou o chamado postback como falhos e fundamentalmente disfuncionais. Eles causavam muitas dificuldades para usuários e motores de busca. Por exemplo, se você salvasse um link, mais tarde encontraria um conteúdo diferente nele, para sua surpresa.
A própria possibilidade de compor páginas a partir de componentes de UI reutilizáveis fascinou David; ele a conhecia bem do Delphi, uma ferramenta popular na época para criar aplicações desktop. Ele gostava dos mercados com componentes de código aberto para Delphi. Portanto, ele tentou resolver a questão de como criar um framework de componentes que, ao contrário, funcionasse em completa harmonia com o HTTP sem estado. Ele procurava um conceito que fosse amigável para usuários, SEO e desenvolvedores. E assim Nette começou a nascer.
O nome Nette surgiu por acaso no banheiro, quando o autor viu um pote de gel de barbear Gillette, virado de forma que apenas llette era visível.
Seguiram-se milhares de horas de pesquisa, reflexão e reescrita. Na garagem empoeirada de uma vila em algum lugar perto de Brno, os primeiros contornos do futuro framework surgiram. A base da arquitetura tornou-se o padrão MVC, que era usado na época pelo agora esquecido framework PHP Mojavi e mais tarde foi popularizado pelo hype em torno do Ruby on Rails. Uma das fontes de inspiração foi até mesmo o framework phpBase nunca publicado de Honza Tichý.
Artigos sobre o próximo Nette começaram a aparecer no blog do autor. Brincava-se que era vaporware. Mas então, em outubro de 2007, na conferência PHP Seminář em Praga, David apresentou publicamente o Nette. A propósito, esta conferência evoluiu um ano depois para o WebExpo, mais tarde uma das maiores conferências de TI da Europa. Já naquela época, Nette ostentava vários conceitos originais, como o modelo de componentes mencionado, o roteador bidirecional, uma forma específica de linkar entre presenters, etc. Tinha formulários, autenticação resolvida, cache, etc. Tudo em Nette ainda é usado em sua concepção original hoje.
Em Nette, o termo presenter é usado em vez de controller, porque supostamente havia muitas palavras no código começando com con (controller, front controller, control, config, container, …)
No final de 2007, David Grudl também publicou o código, e assim a versão Nette 0.7 viu a luz do dia. O framework imediatamente atraiu enorme atenção. Uma comunidade entusiasmada de programadores se formou em torno dele, que começou a se reunir todos os meses no evento Posobota. A comunidade incluía muitas personalidades de hoje, como Ondřej Mirtes, autor da excelente ferramenta PHPStan. O desenvolvimento do Nette avançou rapidamente e, nos dois anos seguintes, as versões 0.8 e 0.9 foram lançadas, onde as bases de quase todas as partes atuais do framework foram estabelecidas. Incluindo snippets AJAX, que estavam 14 anos à frente do Hotwire para Ruby on Rails ou Symfony UX Turbo.
Mas uma coisa essencial faltava no Nette da época. Um contêiner de injeção de dependência (DIC). Nette usava o chamado service locator e a intenção era mudar para a injeção de dependência. Mas como projetar tal coisa? David Grudl, que na época não tinha experiência com DI, almoçou com Vašek Purchart, que usava DI há cerca de meio ano. Eles discutiram o tópico juntos e David iniciou o trabalho no Nette DI, uma biblioteca que revolucionou completamente a forma como se pensa sobre o design de aplicações. O contêiner DI tornou-se uma das partes mais bem-sucedidas do framework. E mais tarde deu origem a dois spin-offs: o formato Neon e a biblioteca Schema.
A mudança para a injeção de dependência exigiu bastante tempo e esperou-se alguns anos pela nova versão do Nette. Portanto, quando finalmente foi lançada, recebeu diretamente o número 2. A versão Nette 1, portanto, não existe.
Nette iniciou sua história moderna em 2012 com a versão 2.0. Também trouxe o Nette Database, que incluía uma ferramenta extraordinariamente útil para trabalhar com bancos de dados, hoje chamada Explorer. Esta biblioteca foi originalmente programada por Jakub Vrána, vizinho de David Grudl e autor da popular ferramenta Adminer. Seu desenvolvimento posterior foi então assumido por Jan Škrášek por três anos.
Em 2014, Nette 2.1 foi lançado, seguido em breve por Nette 2.2. Como isso é possível? A versão 2.2 era a mesma que a versão 2.1, apenas dividida em vinte pacotes separados. A ferramenta Composer se estabeleceu no mundo PHP e mudou a forma como a criação de bibliotecas era abordada. Nette deixou de ser um monólito e se dividiu em partes menores e independentes. Cada uma com seu próprio repositório, rastreador de issues e seu próprio ritmo de desenvolvimento e versionamento. Assim, em Nette, não precisam ocorrer absurdos comuns em frameworks monolíticos, onde uma nova versão de um pacote é lançada, embora nada tenha mudado nele. A própria divisão dos repositórios Git envolveu várias semanas de preparação e centenas de horas de tempo de máquina.
Nette também alcançou um incrível 3º lugar na pesquisa mundial sobre o melhor framework PHP organizada pela revista Sitepoint.