História da Nette

As origens da Nette remontam a 2004, quando seu autor David Grudl começou a procurar uma estrutura adequada para escrever aplicações, já que o PHP puro não era mais suficiente. Nenhuma das soluções disponíveis na época lhe convinha, então ele gradualmente começou a delinear as características de uma nova estrutura, que mais tarde recebeu o nome Nette.

Naquela época, as estruturas atuais como Symfony, Laravel ou Ruby on Rails ainda não existiam. No mundo Java, o JSF (JavaServer Faces) era o padrão, e no concorrente .NET, o ASP.NET Webforms era a estrutura dominante. Ambos permitiam a construção de páginas usando componentes UI reutilizáveis. David considerou que seus métodos de abstração e tentativas de criar apatridia sobre o protocolo HTTP sem Estado, utilizando sessões ou postbacks, tinham falhas e eram fundamentalmente quebrados. Eles causaram muitas dificuldades para os usuários e mecanismos de busca. Por exemplo, se você salvou um link, você ficou surpreso ao encontrar conteúdo diferente sob ele mais tarde.

A possibilidade de compor páginas a partir de componentes reutilizáveis da IU fascinou David, que o conhecia bem da Delphi, uma ferramenta popular para a construção de aplicações desktop na época. Ele gostava dos mercados com componentes de código aberto para o Delphi. Então ele tentou resolver a questão de como criar uma estrutura de componentes que, por sua vez, funcionasse em completa harmonia com o HTTP sem estado. Ele estava procurando por um conceito que fosse amigável ao usuário, SEO e desenvolvedor. E assim nasceu Nette.

O nome Nette surgiu por acaso no banheiro, quando o autor avistou um frasco de gel de barbear Gillette, girado para que somente o llette pudesse ser visto.

Milhares de horas de pesquisa, pensamento e reescrita se seguiram. Em uma garagem empoeirada em uma vila em algum lugar fora de Brno, os primeiros contornos da futura estrutura estavam sendo criados. A base da arquitetura era o padrão MVC, que foi então utilizado pela agora esquecida estrutura PHP Mojavi e mais tarde popularizada pela propaganda em torno do Ruby on Rails. Uma das fontes inspiradoras foi até mesmo o framework phpBase nunca publicado por Honza Tichý.

Artigos sobre a próxima Nette começaram a aparecer no blog do autor. Era uma piada que se tratava de vaporware. Mas então, em outubro de 2007, na conferência de Praga sobre PHP, David apresentou publicamente a Nette. A propósito, esta conferência evoluiu para WebExpo um ano depois, mais tarde uma das maiores conferências de TI da Europa. Mesmo assim, Nette orgulhosamente apresentou uma série de conceitos originais, tais como o modelo de componentes acima mencionado, roteador bidirecional, forma específica de ligação entre os apresentadores, etc. Tinha formulários, autenticação, caching, etc. Tudo ainda é utilizado na Nette em seu conceito original até hoje.

Nette usa presentador em vez de controlador porque supostamente havia demasiadas palavras começando com con no código (controlador, controlador frontal, controle, configuração, recipiente, …).

No final de 2007, David Grudl publicou o código e Nette 0,7 foi lançado. Uma comunidade entusiasta de programadores se formou em torno dele e começou a se reunir todos os meses no evento Posobota. A comunidade incluiu muitos dos luminares atuais, como Ondrej Mirtes, autor da grande ferramenta PHPStan. O desenvolvimento da Nette avançou, e nos dois anos seguintes foram lançadas as versões 0.8 e 0.9, lançando as bases para quase todas as partes da estrutura atual. Incluindo trechos AJAX que antecedem a Hotwire para Ruby on Rails ou Symfony UX Turbo por 14 anos.

Mas uma coisa crucial estava faltando na Nette naquela época. Recipiente de injeção Dependecy (DIC). Nette estava usando um service locator e a intenção era mover-se para a injeção dependecy. Mas como projetar uma coisa dessas? David Grudl, que não tinha experiência com DI na época, foi almoçar com Vasek Purchart, que estava usando DI há cerca de meio ano. Juntos eles discutiram o tema e David começou a trabalhar na Nette DI, uma biblioteca que revolucionou completamente a maneira como pensamos sobre o design de aplicações. O recipiente de DI tornou-se uma das partes mais bem sucedidas da estrutura. E deu origem a dois spin-offs: o formato Neon e a biblioteca Schema.

A mudança para a injeção de dependência levou muito tempo, e nós esperamos alguns anos por uma nova versão do Nette. Portanto, quando finalmente saiu, ela foi numerada 2. Portanto, a versão 1 do Nette não existe.

Nette iniciou sua história moderna em 2012 com a versão 2.0. Ela também trouxe o Nette Database, que incluía uma ferramenta de banco de dados extremamente útil, agora 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 isto é possível? A versão 2.2 foi a mesma da versão 2.1, apenas dividida em vinte pacotes separados. A ferramenta Composer tomou posse no mundo PHP e mudou a maneira como pensamos sobre a criação de bibliotecas. Nette deixou de ser um monólito e se dividiu em partes independentes menores. Cada uma com seu próprio repositório, rastreador de problemas e seu próprio fluxo de desenvolvimento e criação de versões. Desta forma, a Nette não precisa passar pelos absurdos comuns em estruturas monolíticas, onde sai uma nova versão de um pacote, mesmo que nada tenha mudado. A divisão real dos repositórios Git envolveu várias semanas de preparação e centenas de horas de tempo de máquina.

Nette também ficou em um surpreendente 3º lugar na pesquisa global para a melhor estrutura PHP organizada pela revista Sitepoint.