Mudanças

Estou deixando Go e Fyne para trás: o retorno ao PHP e ao Gambas3

Ao longo da minha trajetória como desenvolvedor de software, experimentei diferentes linguagens, tecnologias e ferramentas. Algumas acompanharam boa parte da minha carreira, enquanto outras surgiram como alternativas que decidi explorar em novos projetos. Go foi uma dessas experiências. Desenvolvi bibliotecas, ferramentas e aplicações utilizando a linguagem, mas, depois de algum tempo trabalhando com ela, percebi que não era o caminho que gostaria de continuar seguindo.

Essa mudança também envolve o Fyne, framework que utilizei para desenvolver aplicações desktop em Go. A partir de agora, meus esforços estarão concentrados em PHP, para desenvolvimento web, e Gambas3, para aplicações desktop. São tecnologias que já fizeram parte da minha trajetória profissional e com as quais tenho uma familiaridade que considero importante para desenvolver e manter meus projetos.

Outro fator determinante nessa decisão é que meu foco de desenvolvimento passa a ser 100% Linux. Quando comecei a utilizar Go, a possibilidade de desenvolver aplicações multiplataforma era um dos principais atrativos, especialmente pela possibilidade de distribuir executáveis para diferentes sistemas operacionais. Naquela época, essa característica atendia aos meus objetivos. Entretanto, minhas prioridades mudaram e não pretendo mais direcionar meus projetos desktop ao Windows. Consequentemente, deixou de existir uma das principais razões que me levaram a escolher Go.

Minha experiência com Go

Quando comecei a trabalhar com Go, esperava encontrar uma linguagem que combinasse simplicidade, desempenho e facilidade de desenvolvimento. Algumas características realmente me agradaram, como a compilação rápida, o modelo de concorrência e a possibilidade de gerar executáveis independentes. Entretanto, a experiência cotidiana acabou revelando aspectos que não correspondiam às minhas expectativas.

Apesar de ter uma sintaxe relativamente pequena, Go nem sempre proporciona a simplicidade que sua proposta sugere. Em diferentes situações, encontrei estruturas, implementações e convenções que, na minha visão, acrescentavam complexidade ao desenvolvimento sem oferecer um benefício proporcional. Tarefas que poderiam ser resolvidas de maneira mais direta acabavam exigindo mais código e uma organização que considero excessiva para determinados cenários.

Também não me identifiquei com algumas decisões de projeto da linguagem. Ao longo dos meus projetos, percebi que precisava me adaptar constantemente a uma maneira de desenvolver que não combinava com minha experiência e preferência por implementações mais diretas. Isso acabou comprometendo a produtividade que eu esperava obter ao escolher Go.

Reconheço que a linguagem tem méritos e pode ser uma excelente opção em determinados contextos, principalmente quando suas características de concorrência, desempenho e distribuição de executáveis são relevantes. Porém, reconhecer suas qualidades não significa ignorar os problemas que encontrei na prática. Para os projetos que desenvolvo, os custos de trabalhar com Go passaram a superar as vantagens que inicialmente me atraíram.

Com a mudança definitiva do meu foco para Linux, continuar investindo nessa linguagem perdeu ainda mais sentido dentro da minha estratégia. Por isso, decidi encerrar gradualmente sua utilização nos meus projetos, em vez de continuar desenvolvendo novas soluções em uma tecnologia com a qual já não me identifico.

Do Fyne ao Gambas3 com GTK

No desenvolvimento desktop, também estou encerrando minha utilização do Fyne. Algumas aplicações foram construídas com esse framework justamente porque ele permitia aproveitar a proposta multiplataforma de Go. Entretanto, agora que meu desenvolvimento estará direcionado exclusivamente ao Linux, prefiro trabalhar com uma ferramenta mais alinhada ao ambiente que escolhi.

Minha opção é o Gambas3, ambiente com o qual já trabalhei anteriormente e que oferece uma experiência de desenvolvimento muito mais próxima daquilo que procuro. Seus componentes integrados, a construção de interfaces gráficas e a organização do ambiente permitem desenvolver aplicações sem precisar introduzir tantas camadas e dependências para implementar funcionalidades comuns.

O Gambas3 também me permite trabalhar de maneira mais direta, com uma linguagem acessível e recursos que facilitam a construção e a manutenção dos softwares. Não estou escolhendo uma tecnologia desconhecida para experimentar uma nova possibilidade, mas retomando uma ferramenta que já conheço e que considero adequada ao meu atual direcionamento.

Dessa forma, as aplicações desenvolvidas com Fyne serão gradualmente reescritas em Gambas3. Aproveitarei esse processo também para revisar algumas implementações e melhorar a estrutura dos projetos, quando necessário.

PHP novamente como base de todos os meus sistemas web

No desenvolvimento web, a mudança será o retorno definitivo ao PHP como minha principal linguagem. Tenho aproximadamente 15 anos de experiência com PHP, período em que desenvolvi sistemas, bibliotecas e diferentes soluções para a web. Conheço sua evolução e acompanhei diversas mudanças na linguagem, o que me permite trabalhar com bastante familiaridade em seu ecossistema.

Experimentei Go também para desenvolvimento web, mas não encontrei motivos suficientes para continuar utilizando-a nesse cenário. Para os sistemas que desenvolvo, PHP oferece uma experiência mais produtiva e permite trabalhar com a objetividade que valorizo. Não preciso recorrer a uma linguagem diferente para obter desempenho ou estruturar aplicações web quando já tenho uma ferramenta consolidada na minha trajetória.

Minha preferência pelo desenvolvimento procedural também tem influência nessa escolha. Gosto de ter controle sobre o fluxo de execução, trabalhar com código direto e evitar abstrações que não acrescentem valor real à solução. Essa filosofia está presente inclusive no BluMiga Framework, projeto que desenvolvo com a proposta de oferecer uma estrutura enxuta para aplicações web, sem a complexidade desnecessária que pode acompanhar frameworks mais robustos.

Portanto, os sistemas web que atualmente desenvolvi em Go também serão migrados para PHP. Quero concentrar meus projetos web em uma linguagem que conheço profundamente, na qual já construí boa parte da minha experiência profissional e que continua atendendo às minhas necessidades.

Como ficará minha estrutura de desenvolvimento

Com essas mudanças, pretendo organizar meus projetos em torno de duas linguagens principais, cada uma atendendo às finalidades em que considero mais adequada sua utilização.

PHP será utilizado no desenvolvimento de sistemas web, aplicações CLI com PHPacker/TypePHP, microsserviços com Swoole, APIs, bibliotecas e ferramentas relacionadas ao seu ecossistema.

Gambas3 ficará responsável pelas aplicações desktop, ferramentas de linha de comando (CLI) e bibliotecas voltadas ao ambiente Linux.

Essa organização também significa que não pretendo mais desenvolver aplicações desktop para Windows nem manter Go e Fyne como tecnologias centrais dos meus projetos. A migração será gradual, respeitando as necessidades de cada software, mas a direção tecnológica já está definida.

Escolher as ferramentas certas faz parte do desenvolvimento

Depois de tantos anos trabalhando com programação, entendo que a escolha de uma tecnologia precisa considerar muito mais do que popularidade, desempenho ou tendências do mercado. É necessário avaliar também a experiência de desenvolvimento, a facilidade de manutenção e o quanto aquela ferramenta realmente contribui para alcançar os objetivos do projeto.

Go foi uma experiência da qual tirei aprendizados, mas também me mostrou que nem toda tecnologia que parece interessante inicialmente continuará fazendo sentido depois de utilizá-la em projetos reais. Não tenho interesse em insistir em uma escolha apenas para justificar o tempo investido nela.

PHP e Gambas3 representam um retorno a tecnologias que já conheço, mas também uma decisão sobre como quero trabalhar daqui para frente. Com o Linux como meu único foco de desenvolvimento, posso direcionar meus esforços para um ambiente no qual tenho interesse e no qual pretendo continuar construindo minhas soluções.

Meu objetivo permanece o mesmo: desenvolver softwares, bibliotecas e ferramentas úteis, mantendo controle sobre minhas implementações e evitando complexidades que não tragam benefícios concretos.

Não se trata de escolher a tecnologia mais popular, mas aquela que me permite desenvolver melhor.

Meu conteúdo te ajuda de alguma forma?

Apoie