*Este artigo foi idealizado e escrito por quatro colunistas do Meiobit em um trabalho conjunto. Participaram Thiago Coelho, Bruno Alves, Cardoso e falcon_dark.

A versão atual do PHP é a 5.1.6 mas o núcleo de desenvolvimento da linguagem já trabalha na versão 6. Da versão 4 para a 5 da plataforma ocorreram modificações profundas, tanto que muitos scripts deixaram de funcionar. Isso ocasionou uma série de transtornos para desenvolvedores, prestadores de serviço e usuários da linguagem. E, principalmente, um atraso muito grande na adoção da versão 5. É comum, quando se contrata um servidor de hospedagem, encontrar suporte ao PHP4 e ao PHP5 (este último normalmente em suporte Beta) pois existe uma preocupação dos prestadores de serviço em suportar os scripts mais antigos, que ainda são maioria.

A versão 6, que gera muitas discussões nas listas de desenvolvimento oficiais do PHP, pode retirar muitas características da plataforma em uma operação de enxugamento para torná-la mais prática de ser usada. O problema, novamente, é a compatibilidade legada. Com as características que devem ser abandonadas muitos scripts escritos para as versões 4 e 5 podem, outra vez, parar de funcionar. Enquanto a equipe que desenvolve o PHP está obviamente preocupada em tornar a linguagem mais profissional fica a dúvida se essas modificações constantes podem afetar a credibilidade e a adoção do PHP como ferramenta de desenvolvimento.

A notícia de que mudanças no PHP6 poderiam criar incompatibilidade com o legado das versões 4 e 5 surgiu de um dos desenvolvedores da linguagem, Derick Rethans. Ele afirmou publicamente que, entre outras coisas, o PHP6 dará suporte ao Unicode. Isso tornaria as aplicações escritas em PHP mais internacionalizáveis, aumentando a flexibilidade do que pode ser escrito com a plataforma. Entretanto, ao contrário dessa modificação, as outras propostas retiram características que, quando usadas por scripts de outras versões, podem ocasionar em erros de execução paralisando os serviços. Vamos discutir aqui algumas das modificações mais profundas já propostas e seu possível impacto sobre as aplicações existentes escritas em PHP. Entre o que está planejado para mudar no PHP6 aparece:

1-Remoção completa de register_globals
Desde a versão 4 do PHP fala-se em abandonar essa característica assim programadores mais experientes já produzem código sem usá-la. Ainda que aplicativos escritos por desenvolvedores menos preocupados possam deixar de rodar na versão 6 o impacto disso dever ser pequeno sobre os aplicativos profissionais.

2-Remoção de magic_quotes_*
Boa parte dos programadores PHP sequer as usa e seu abandono já era discutido há muito tempo. Deve ocasionar pouco impacto sobre a plataforma.

3-O PHP6 deve incluir um mecanismo para que os desenvolvedores desliguem opções do ambiente que o administrador do site tenha deixado ligadas por padrão, e vice-versa.
Aqui vemos luzes vermelhas, pois os usuários não deveriam poder alterar opções do sistema sem o uso de um mecanismo que limite o que pode ser alterado, nos moldes do Apache. Não há indicação de que esse sistema vá existir o que pode gerar a situação incômoda do desenvolvedor administrar mais o sistema do que o próprio administrador. É apenas uma suspeita de nossa equipe que essa característica vá trazer problemas, mas a possibilidade está em aberto.

4-Remoção do safe_mode e foco no uso de open_basedir
O open_basedir é mais restritivo que o safe_mode e por isso permite uma flexibilidade maior, entretanto em servidores que armazenem diversos sites distintos (que é o caso mais comum na internet) o compartilhamento de scripts pode tornar-se problemático. Ponto para a segurança, mas os administradores de sistemas com PHP6 terão que suar um pouco mais a camisa.

5-Remoção de tudo que foi marcado como desatualizado desde o PHP 3/4
Muitos scripts, principalmente os mais “antigos” vão parar de funcionar definitivamente, exigindo que o código seja revisado e reescrito. Somando à isso o fato de querer aproveitar as novas funcionalidades vai haver muita gente decidindo que a migração não vale a pena ou que é melhor escrever a aplicação do zero do que ficar tapando buracos em código legado.

6-Tornar os identificadores sensíveis à caixa do texto
Aqui haverá um problema para desenvolvedores de Windows, que podem não estar acostumados com essa característica já existente em diversas outras linguagens, como o C/C++, por exemplo. Desenvolvedores UNIX não sentirão diferença pois nessa classe de sistema operacional a sensibilidade à caixa é padrão. Nesse aspecto os hábitos antes alimentados pelo PHP podem exigir adaptação de parte dos desenvolvedores. Além disso, scripts escritos com pouco cuidado podem parar de funcionar.

7-Remoção de vários aliases de funções
Scripts que fazem uso desses aliases não irão funcionar na nova versão do PHP. É uma simplificação boa, já que é melhor ter apenas um nome para cada coisa, e vai reduzir a complexidade do desenvolvimento. Mas outra vez os desenvolvedores terão que optar entre permanecer com uma versão antiga da linguagem ou trabalhar para modificar o código existente.

Essas são as principais modificações propostas para a versão 6 do PHP, que irão exigir cuidado dos profissionais que decidam pelo upgrade em seus servidores. Entretanto não são as únicas, mmuitas outras propostas e suas conseqüências podem ser observadas aqui. Certamente elas devem atrasar a adoção da nova versão, como aconteceu com o PHP5. Na versão 5 muito foi feito no sentido de tornar a linguagem orientada à objetos. Isso permite que os programadores escrevam aplicações mais complexas e maduras, mas as incompatibilidades com o legado das versões 3 e 4 do PHP foram um grande obstáculo para a adoção do PHP5. De tal sorte que o PHP5 ainda não tornou-se o padrão para as aplicações PHP no mundo, havendo uma forte presença do PHP4 no mercado.

O fato do cPanel demorar cerca de 6 meses para retirar do estágio Beta qualquer modificação na plataforma PHP irá atrasar a migração de boa parte dos usuários. Muitos scripts livres e gratuitos que são usados por uma parte grande do mercado, cujos administradores não são programadores e usam código de terceiros, podem demorar para serem migrados para o PHP6 paralisando ainda mais o movimento de migração para a nova versão. As mudanças da versão 4 para a 5 obrigaram muitos desenvolvedores a reescrever seus scripts do zero e as quebras de suporte legado propostas para a versão 6 irão deixar muitos programadores descontentes.

Ainda que os aplicativos desenvolvidos para o PHP4 que não tenham recebido adaptação para a versão 5 possam ser reescritos ou adaptados diretamente para a versão 6 é impossível negar que os programadores ficarão desconfiados. Começar os trabalhos para levar seus scripts para a versão 6 valerá a pena? Haverá outra quebra de suporte legado em uma futura versão 7? Essas perguntas agora encontram-se atrás de uma cortina de fumaça e devem levar algum tempo para serem respondidas. Talvez o mercado só comece a migrar realmente para o PHP6 quando o grupo que desenvolve a linguagem comprometer-se a manter suporte para uma nova versão. Podem se passar 2 ou 3 anos até que uma migração forte para a nova versão 6 seja verificada no mercado e até lá provavelmente poucos decidirão investir tempo e dinheiro para adaptar scripts antigos para a versão 5, dando uma sobrevida inusitada ao PHP4.

Essas mudanças na plataforma PHP que causam falta de compatibilidade com aplicações legadas são reflexos de um projeto pouco estruturado. A mudança de foco do PHP, desde seu nascimento até hoje, também contribuiram para que mudanças tão profundas fossem levadas à cabo. E é indiscutível que esse tipo de acontecimento abala o respeito que o mercado tem por dada solução. Essas guinadas bruscas demandam retrabalho de profissionais cuja hora de serviço não é das mais baratas. Produtos de empresas consolidadas, como Microsoft, Oracle, e outras, raramente colocam seus clientes em posições tão desconfortáveis em tão curto espaço de tempo. Esse panorama deixará muitos tomadores de decisão avessos ao PHP ainda que as mudanças efetuadas sejam reconhecidamente necessárias e bem vindas pelos profissionais técnicos.

Em uma análise mais profunda esse tipo de situação pode servir para o pessoal do Software Livre repensar um pouco mais a forma como grandes projetos é manejada. Não são raros os casos de projetos livres que obrigaram seus usuários a passarem pelo mesmo tipo de situação que o PHP. O Drupal, por exemplo, CMS usado aqui no Meiobit é um exemplo de aplicação que, de uma versão para outra, tornou todos os seus módulos incompatíveis e exigiu que programadores e usuários fizessem malabarismos. Podemos citar também o Firefox, que na versão 2 obrigou os criadores de extensões a adaptar suas criações à uma nova API. São exemplos para o SL de que talvez seja necessário um comprometimento maior com certas políticas tipicamente empresariais para manter seu mercado e sua comunidade.

Notícias relacionadas

ILO Navarro's picture

Mudanças são normais, apenas acho que o erro do pessoal do PHP é fazer essas mudanças muito lentamente.
Quando a microsoft "matou" o VB para criar a plataforma .NET fez de uma vez, sem ficar mudando aos poucos, o que reduziu um pouco o impacto.
Lembrando que o VB6 e anteriores são completamente incompatíveis com .NET, mudando tudo, desde a linguagem até como a programação deve ser feita.
Se for pra mudar, muda de uma vez, "uma paulada com força é melhor que várias pauladas fracas!".

----------------------------------------
--------Esta é uma assinatura!----------
----------------------------------------

By ILO
http://ilo.ciadolinux.com.br

Ricardo Bicalho's picture

O VB.Net é igual o Java ou C#. A diferença é apenas a sintaxe sem {} e alguns comandos semelhantes.

Nem mesmo a forma de programar ficou. Mas isso era necessário por causa das inúmeras limitações do VB6 para a plataforma nova.

Cobalto's picture

trasntornos ?

Cobalto | efeito cobalto

Fabio Luiz's picture

É... o artigo foi revisado 3 vezes e o n continuou no lugar errado. Agora foi corrigido. Obrigado, Cobalto.

Cobalto's picture

sem stress, só pra manter o profissionalismo do texto ^^

"nimguem gosta de teixtos mal escritos!"

Cobalto | efeito cobalto

Maquiavel escreveu em "O Principe" que façamos o mal todo de uma ves e o bem de pouquinho... acho que vale para informatica tambem, essa historia de mudar aos poucos causa mais transtorno que mudar tudo de uma ves...

coredump's picture

Olha só... Primeiro, a generalização de "pessoal do Software Livre" é muito, bem... generalizada. E como toda generalização, é errônea.

A questão toda é que o PHP sempre teve lá seus problemas de segurança e de design mas acabou se popularizando como linguagem facil para a Web. Agora o pessoal ta correndo atras pra colocar algumas coisas que são basicamente coerência mas que não se pensava nas versões mais antigas. Como 'register_globals'. É uma opção insana, mas existia e muita gente usou...

Eu acho que as alterações são boas, e o fato de eles estarem avisando é positivo. Mudanças tem de ser feitas calmamente SIM. A versão 5 já é um primeiro passo para isso.

Quem usa python sabe que a algum tempo o Guido (ditador benevolente do projeto Python) prometeu remover algumas funções e mudar algumas coisas, mas ele simplesmente avisou 'olha, essas funções vão sair, não use, use tal função no lugar dela para seu codigo nao quebrar no futuro'.

Ou seja, se os desenvolvedores PHP começarem AGORA a revisarem os seus códigos, não vão ter problemas para quando uma eventual versão 6 sair. A maioria das mudanças que foram citadas no artigo são, como eu ja disse antes, SANIDADE para fazer a linguagem ser mais séria e simples: identificadores sensiveies a maiúsculas e minúsculas, retirar aliases de função, isso tudo contribui para o codigo ficar mais simples e pode ser feito desde agora. Ou seja, basta o desenvolvedor interessado correr atras, testar o codigo e participar ativamente das listas.

Isso vale para qualquer mudança de ABI/API. E isso é uma rant com relação aos autores do artigo: não acusem assim projetos genericamente. Quando voces dizem que o Firefox mudou de versão e quebrou as extensões, soa como se a Mozilla Found. tivesse feito isso sem avisar, da noite para o dia, mas eu mesmo uso varios addons, entre eles o Performancing (pra postar no blog) e o Firebug (pra debugar aplicações web/javascript), essas duas já tinham se testado e se adaptado para a versão 2.0 assim que as primeiras Release Candidates e Betas saíram, assim como varias outras extensões, e no dia que eu instalei o Firefox 2.0 elas já estavam compatíveis e eu não tive problema algum. As que deram pau (como a TabMix ou a Distrust) foram de desenvolvedores que simplesmente não se interessaram/puderam testar com antecedência, mas BETA/RC serve pra isso. Ou seja, se voce desenvolve plugins ou modulos para qualquer projeto e sabe que a versão mais nova vai mudar API, corra atras dos Beta, das versões para desenvolvedores e atualize seu código. Não espere que por milagre tudo funcione magicamente.

micael's picture

concordo plenamente com o amigo coredump, o php esta avisando, e os desenvolvedores php de verdade não terão problemas.

Quando se disponibiliza um código é bom manter ele atualizado, se não, acredito que o desenvolvedor não pode ser chamado assim. Bons softwares recebem atualizações de acordo com os rumos do mercado, não apenas quando elas ocorrem.

No entanto, acho que os desenvolvedores do php deveriam realizar todas mudanças que planejam de uma só vez. Como tirar os register_globals etc etc.

Bom, pro primeiro post ainda to meio envergonhado, mas parabens pelo blog.

Bruno Alves's picture

Só tem um pequeno problema.

O PHP é uma linguagem interpretada e usada em ambientes multi-usuários.

Alterações bruscas como estas, removendo a compatibilidade com os scripts antigos causa um sério problema para os administradores de servidores.

Não é viável mudar a versão do PHP e acabar com milhares de sites não funcionando.

Os clientes não estão preocupadas com a versão do PHP, estão preocupadas se suas lojas on-line vão funcionar.

O PHP está querendo ensinar boas práticas aos desenvolvedores através de remodelagem da linguagem, o que não é bom por princípio.

E o pior, sem levar em consideração o transtorno que isso causará aos administradores, que em última instância são os responsáveis pela popularização do PHP, já que existem tantos programadores porque a hospedagem é muito barata.

Mas a partir do momento que precisarmos ter uma configuração diferente por cliente, não será possível manter os preços tão atrativos.

Sou programador PHP e sei que existem linguagem muito mais simples, mas que não decolam pelo preço da hospedagem.

Só espero que o PHP não perceba isso tarde demais, pois é uma das minhas linguagens preferidas.

--
Bruno Alves
Professional root
http://www.brunoalves.eti.br

coredump's picture

Não é viável mudar a versão do PHP e acabar com milhares de sites não funcionando.

Como eu disse no outro comentário, se começarem a mudar o código agora, nada vai parar de funcionar.

O PHP está querendo ensinar boas práticas aos desenvolvedores através de remodelagem da linguagem, o que não é bom por princípio.

Convenhamos, se a linguagem tivesse começado melhor não precisava consertar agora, mas se eles estão vendo essa necessidade, então o que se pode fazer? Smiling

Concordo.

Veja minhas ponderações...

Há algum tempo o pessoal do PHP vem alertando que algumas funções estão em desuso, que seão descontinuadas, que outras como por exemplo "pg_numrows" serão substituídas por "pg_num_rows".
Que o register_globals ativo é furo de segurança e desde a versão 4.3 que o default é off.

Acredito que os desenvolvedores zelosos já alteraram seus códigos adaptando para as mudanças, que são improtantes.
Quer um teste: procure por mysql_numrows no site do PHP.
Não vai achar nada. Mas se procurar por mysql_num_rows vai achar.

Se a equipe quer melhorar a segurança e a padronização da linguagem, porque então os caras ficam oferecendo resistências?
Preguiça? Má fé?
Sem problema, ninguém é obrigado a migrar seu código!
Mas também ninguém deve reclamar de mudanças para melhorar.

Ribamar FS - http://ribafs.net

Bruno Alves's picture

O problema não é evoluir, mas sim tirar a compatibilidade com elementos da linguagem que são válidos hoje ou foram válidos no passado.

Nem todos os donos de sites são programadores PHP (aliais, a maioria não é), contratam alguém para criar o site deles e não querem acordar com o site sem funcionar porque o host atualizou a versão do PHP.

Esta visão poética não funciona no mercado, as pessoas pagam para que as coisas funcionem, se não funcionar param de pagar, simples assim.

A demora na adoção do PHP 5 é tão grande, pois ninguém quer arriscar perder 5000 clientes porque esta versão gera um código melhor que as anteriores e códigos ruins vão parar de funcionar.

A linguagem pode evoluir, sem perder a compatibilidade com as versões anteriores.

Se você pegar um fonte do Pascal, ele ainda compilará no Delphi 2006, o máximo que terá que fazer é substituir alguns uses.

Isso é pensar no cliente, isso é pensar no usuário.

Já vi vários comentários de desenvolvedores do PHP que estão se lixando para os administradores (e conseqüentemente para os usuários), isso não deveria ser assim, afinal é impossível rodar o PHP sem um servidor.

Repito, o problema não está na evolução, mas na forma como está sendo feita.

--
Bruno Alves
Professional root
BrPoint

Acredito que ou eu não falei bem claramente ou você, pois me parece que estamos falando de algo totalmente diferente.
Para não baixar o nível e evitar perca de tempo para mim, vou evitar responder e comentar seu comentário.
Fui.

Ribamar FS - http://ribafs.net

Robson França's picture

Oi Bruno, beleza?

Vamos por partes:
1) "O problema não é evoluir, mas sim tirar a compatibilidade com elementos da linguagem que são válidos hoje ou foram válidos no passado."
Isso eu concordo. O problema é que o PHP não está apenas evoluindo, está tirando todos os "ranços" da tecnologia. Um desses ranços chama-se register_globals, que é um tremendo furo de segurança.

2) "Nem todos os donos de sites são programadores PHP (aliais, a maioria não é), contratam alguém para criar o site deles e não querem acordar com o site sem funcionar porque o host atualizou a versão do PHP."
O problema aí é chamar um cara para fazer o site, o cara construir tudo, e depois sumir. Portanto temos duas possibilidades: ou o cara é profissional e está trabalhando na migração do código (incluindo algumas melhorias) e cobrando um preço módico; ou o cara é amador e o dono da "lojinha" vai precisar contratar um profissional para fazer isso. Não tem como fugir

3)"Esta visão poética não funciona no mercado, as pessoas pagam para que as coisas funcionem, se não funcionar param de pagar, simples assim."
Essa não é bem uma visão poética. E, de fato, elas vão pagar para que as coisas funcionem. Um exemplo: tem muitas videolocadoras que tem sistemas feitos em Clipper, rodando debaixodo do MS-DOS. E tem muitos donos de locadoras que nem pensam em atualizar o S.O.. Mas se um agente da ABES e outro da Polícia baterem na porta dele, ele vai ser obrigado a gastar para por as coisas em ordem. Por outro lado, quando o programa exige uma manutenção, é uma coisa do mercado você cobrar por ela. Mesmo que essa manutenção ocorra porque a linguagem evolui.

4)"A linguagem pode evoluir, sem perder a compatibilidade com as versões anteriores.

Se você pegar um fonte do Pascal, ele ainda compilará no Delphi 2006, o máximo que terá que fazer é substituir alguns uses."
Nem sempre a plataforma pode evoluir sem perder compatibilidade. Seguindo no exemplo do Pascal, se você fez um programa em Pascal que acessa portas de E/S do PC diretamente é bem provável que ele não funcione. Pior: a adaptação desse código é bem complicada. Fora programas que desenham gráficos diretamente, que tocam som diretamente, etc. Um código simples pode até ser convertido. Mas qualquer código mais complicado não.

5) "Já vi vários comentários de desenvolvedores do PHP que estão se lixando para os administradores (e conseqüentemente para os usuários), isso não deveria ser assim, afinal é impossível rodar o PHP sem um servidor."
Se o site for sério, ele deve ter uma equipe de TI que inclui (pelo menos) um programador. A idéia aqui é: eu não preciso conhecer PHP para manter o meu negócio. Mas como PHP é uma tecnologia-chave do meu negócio preciso contratar alguém que conheça.

Concluindo: a evolução é gradativa, não está sendo feita aos solavancos. O register_globals mesmo caiu em desuso desde o PHP 4.2. Portanto eu acredito que não será uma tragédia grega essa migração.

Abraços

Bruno Alves's picture

Robson,

quando estamos falando de um aplicativo que roda em um ambiente não compartilhado, isso faz todo sentido, pois é fácil para o usuário decidir se atualiza ou não.

O exemplo que deu dos sistemas em Clipper para locadoras é perfeito, a decisão está na mão do dono da locadora, ele pode investir em um novo sistema ou deixar da maneira que está o resto da vida.

Já quando falamos em um servidor utilizado por 1000 usuários ou clusters com mais de 50000 usuários a coisa não é tão simples.

Muitos usuários contratam o desenvolvedor para fazer, mas não contratam suporte, muitos usam sistemas livres prontos (que nem sempre acompanham as mudanças), muitos compram pacotes prontos, enfim, existem vários motivos para que um sistema que funcione hoje não venha a funcionar com o upgrade.

Por que acha que a adoção do PHP5 está tão lenta?

Eu mesmo só atualizei um servidor para o PHP5, onde rodo os meus sites, pois sei que eles vão funcionar.

Já tive sérios problemas com atualização que me forçaram a voltar para uma versão anterior, isso não é bom.

Não adianta dizer que o cliente tem que se virar para o sistema dele funcionar, pois sempre vai existir alguém rodando uma versão anterior e o cliente simplesmente irá para o outro host, onde o sistema dele funciona.

Para ter um programador dedicado a concertar sites de clientes, o custo da hospedagem teria que ser bem maior, o que afugentaria os clientes.

Ter ambientes mistos, também tem custo maior.

Hospedagem é um mercado extremamente concorrido e não dá para ficar inventando moda.

Abraço

--
Bruno Alves
Professional root
BrPoint

lucianojs's picture

Já se tem um roadmap? quando será lançado esta versão?

mmuitas tbm devem ser observadas.. ;P

Opções de exibição de comentários

Selecione seu modo de exibição dos comentários favorito e clique "Salvar opções" para ativar suas mudanças.



Design Wenetus