Aconselharam-me a leitura deste
artigo sobre
Progressive Enhancement vs.
Graceful Degradation, já tinha alguns conceitos sobre estas duas aproximações ao desenvolvimento web mas, acho que mesmo para quem já conheça, trata-se de uma leitura agradável.
Tentando definir rapidamente: são duas filosofias com abordagens diferentes sobre a maneira de desenvolver páginas web (desde
html, css, javascript, etc.) de forma a conseguir abranger o maior número de
browsers.
O
progressive enhancement sugere que se deve começar pelo browser target mais fraco, por exemplo, o site deve ser desenvolvido tendo por base um dispositivo móvel com capacidades limitadas de navegação e sem javascript/css, e a partir daí acrescentar funcionalidades/estilo como se estivessemos a adicionar camadas.
O
graceful degradation sugere começar pelo topo, isto é, apontar para o nosso browser target moderno, por exemplo, HTML5/CSS3 em Firefox/Chrome/Safari e desenvolver de forma a que cada página seja tolerável a falhas dos browsers. Isto quer dizer se o browser não entender uma determinada regra de CSS ou javascript deve ser possível garantir o mínimo indispensável de navegação e funcionalidades, estas vão diminuindo conforme o browser cliente.
Estas duas filosofias parecem misturar-se um bocado, pegando por exemplo numa textbox que deverá ser um input para uma data. Podemos adicionar comportamento e estilo com CSS e javascript de forma a que esta textbox só aceite datas num determinado formato (tipo uma textbox com filtro, calendário, icon, etc). Se o browser cliente não suportar javascript não existirá nenhum problema, a textbox continuará a fazer aquilo que é preciso mas de uma forma menos elegante. Técnicas deste género podem ser usadas em ambas as filosofias, a diferença é como abordar o desenvolvimento desde o ínicio.
Na minha opinião pessoal, o
progressive enhancement deve ser usado para construir sites internet (sobretudo se tiverem algum nível de acessibilidade), assim conseguimos atingir um maior público alvo, será um site bastante funcional num dispositivo mais fraco e além disso terá muitas funcionalidades/aspecto extras num browser moderno. Esta forma de desenvolver parece-me boa sobretudo se houver tempo e orçamento adequado.
Por outro lado, no desenvolvimento de uma intranet/extranet o conjunto de browsers é mais homogéneo e normalmente o orçamento será mais apertado, numa situação destas diria que adoptar uma estratégia de
graceful-degradation parece ser mais adequado. É possível desenvolver rapidamente para um browser target e usando técnicas como mencionei em cima permitir que mesmo browsers mais antigos (IE6, pda's, etc.) sejam capazes de renderizar as páginas com eficácia e serem completamente funcionais.
Sugiro que, mesmo depois desta introdução, leiam o artigo mencionado no início porque, entre outras coisas, o autor fala dos prós e contras de cada uma das aproximações de uma forma mais detalhada.