Blog: Reconstruyendo PHP-Hispano

En este artículo os contaré uno de los últimos retos de MobyteStudio que ha consistido, tal y como reza el título de esta entrada, en la reconstrucción de la comunidad de desarrollo PHP-Hispano.

Este texto pretende ser el primero de varios artículos, donde iremos explicando cómo ha sido la experiencia de llevar a cabo un rediseño completo, a nivel tanto de  programación como de aspecto gráfico de un sitio web ya en funcionamiento. En esta primera entrada, os contaré la historia de PHP-Hispano, y los motivos que nos llevaron a su renovación.

Para empezar, ¿qué es PHP-Hispano?

PHP-Hispano es una comunidad de desarrolladores web con más de 10 años de vida, que cuenta con cerca de 18.000 usuarios registrados, y un foro que roza ya los 70.000 mensajes. Este proyecto surgió como necesidad de un grupo de personas (entre los que me incluyo), que acababan de iniciar su aventura dentro del mundo del desarrollo web con PHP, y que requerían de un lugar donde resolver dudas entre sí y compartir conocimientos. Así que se planteó este proyecto como si de una práctica de carrera se tratase, tratando de aplicar sobre la web todo lo que se iba aprendiendo, y que de paso pudiera ser aprovechado por otras personas. Y de hecho, así fue, todo ese tiempo valió para aumentar mis conocimientos sobre desarrollo de aplicaciones web, PHP, tecnologías del lado del cliente (Javascript, Ajax), e incluso posicionamiento en buscadores, y todo se fue traduciendo en nuevas funcionalidades en la web.

screenshot.334Para los que tengáis ya cierta experiencia en el mundo del desarrollo, sabéis que hay proyectos con grandes expectativas, ideados para triunfar desde el primer momento, y que por diversas razones no terminan de cuajar, y existen otros proyectos que sin pretenderlo, simplemente funcionan. Y esto último fue lo que en cierta manera ocurrió con PHP-Hispano; la gente se vió atraida por el lema de la web “porque todos acabamos aprendiendo..” y cada vez eran más los usuarios que se incorporaban a la comunidad tanto de España, como de México, Argentina, Colombia, Perú, y muchos otros países de habla hispana. De esta manera la web continuó creciendo y se fueron incorporando nuevas secciones (scripts creados por los usuarios, desafíos de programación, guía de funciones, etc.). El resultado final, aunque no demasiado vistoso a nivel de diseño, era funcional y empezaba a alcanzar cierta complejidad (foros administrados, buscador de funciones de PHP, valoración de scripts realizados por otros usuarios, etc.)

¿Por qué comenzar desde cero?

Como dice el título de esta sección, ¿por qué comenzar de nuevo un proyecto que parece estar funcionando bien?. Nos podríamos haber limitado a mantener la misma web, darle un lavado de cara a nivel de diseño y habernos centrado en actualizar los contenidos.

La explicación es bien sencilla; la última versión de la web no era más que una evolución de un proyecto realizado en PHP, que se comenzó a desarrollar más como afición y ganas de aprender que otra cosa, todo a base de programación ‘de andar por casa’, sin el apoyo de ningún framework. Durante este tiempo, la plataforma se fue ampliando y mejorando, y aunque en cada evolución se hacía el esfuerzo por mejorar el código (se llegó a implementar un sencillo framework MVC), llegó un momento en el que era tan grande que se había vuelto inmanejable.

screenshot.332

Versión anterior de PHP-Hispano

Como ya sabéis, cuando un proyecto se comienza de esta forma, mezclando la falta de experiencia con el desconocimiento de lo que se pretende que sea el “producto” final, hace que no tengas una visión a largo plazo, y se acaban tomando decisiones equivocadas que lastran el desarrollo: mala definición de la base de datos, de diseño de clases, o una mala separación entre la vista y el modelo. Estas decisiones, además de afectar durante el proceso propio de construcción, acaban teniendo un efecto negativo sobre el mantenimiento de la misma, provocando que cada nuevo cambio sea el equivalente a caminar descalzo sobre las brasas de una hoguera. Y es que cuando el mantenimiento de una aplicación no resulta todo lo cómodo que debiera, podemos afirmar sin miedo a equivocarnos que el proyecto corre un alto riesgo de quedar abandonado a su suerte. Y esto fue un poco lo que le ocurrió a este proyecto, muchas mejoras en mente, pero demasiado costosas para llevarlas a cabo. Así,  la comunidad quedó a la deriva en los últimos años, principalmente por la dificultad que suponía su mantenimiento. Aunque todo seguía funcionando igual, el proyecto no estaba recibiendo todo la atención que se merecía y no se actualizaba con la suficiente frecuencia, lo cual se traduce irremediablemente en una pérdida progresiva de visitas.

Lo que ocurre es que cuando has invertido tantas horas en un proyecto propio, se convierte en poco menos que un hijo, y duele abandonarlo sin más.  Así que se decidió devolver a la vida a esta comunidad dándole un buen lavado de cara y contando esta vez con la ventaja de toda la experiencia acumulada estos años en el desarrollo de aplicaciones y recurriendo por supuesto a “artillería pesada”, como son el framework Symfony y Doctrine.

Ventajas de hacer un nuevo proyecto

Además de las razones expuestas anteriormente, hay que decir que antes de llevar a cabo tal esfuerzo, eramos conscientes de que un desarrollo desde cero nos aportaría un plus sobre la nueva comunidad:

  • Ya conocemos el proyecto, sabemos lo que funciona, lo que no, lo que ha sido mal diseñado desde el inicio, y lo más importante, tenemos las ideas suficientemente claras para saber cómo hacerlas bien. Así que esta vez sabíamos que podríamos contar, entre otras cosas, con una estructura de tablas mucho mejor definida, o un diseño de clases más adaptado a lo que se necesita. Además, ya tienes una ligera idea de hacia dónde puede crecer el desarrollo, de manera que en el nuevo diseño haces lo posible por facilitar las futuras tareas de ampliación.
  • Podemos aplicar de manera mucho más sencilla las nuevas tendencias que han ido apareciendo en cuanto a tecnología de desarrollo, en nuestro caso, desde funcionalidad Ajax (jQuery), hasta CSS3.  Todo esto resultará, la mayoría de ocasiones, en una mejor experiencia de usuario, un ahorro en la transferencia consumida, e incluso la posibilidad de crear una versión responsive (adaptada a móviles) sin demasiado esfuerzo.
  • Cuando uno lleva cierto tiempo programando, aprende que no hay que reinventar la rueda. Si existe algo que funciona y te puede ahorrar tiempo, úsalo, a no ser que tengas una idea en mente para mejorar lo que hay. Y esto es lo que ocurre con los frameworks, los cuales nos ofrecen un soporte extraordinaria para el desarrollo, incorporando bibliotecas y funciones para hacernos más fáciles mucha de las tareas comunes durante el desarrollo: comunicación con la base de datos, gestión de la seguridad, sistemas de plantillas o templates, mecanismos para caché de páginas, etc.  En nuestro caso nos decantamos por Symfony, debido principalmente a que ya teníamos cierta experiencia trabajando con este framework, sin embargo, hay que decir que existen numerosas alternativas que podrían haber sido igual de válidas como codeIgniter, cakePHP, Laravel, Yii, etc.

Inconvenientes

A pesar de todas las ventajas que hemos comentado, también existen una serie de inconvenientes o dificultades con las que sabíamos que nos encontraríamos. Llevar a cabo una tarea de este tipo no resulta fácil y muchos de los que tenéis experiencia en el desarrollo de aplicaciones sabréis el porqué. No hablamos sólo del esfuerzo de coger una plataforma, ya de por sí compleja, y volver a desarrollar todo de nuevo, si no que existen otros factores a tener en cuenta:

  • migración de datos. Una vez que la nueva plataforma ha sido desarrollada, tenemos que traernos de vuelta toda la información (o aquella que deseemos conservar) almacenada en la base de datos antigua. Sin embargo, en este tipo de casos rara vez vale con exportar de un sitio e importar en otro. La base de datos suele sufrir cambios importantes ya que se aprovecha para optimizar el modo en el que se almacena la información. Esto hace que tablas y campos de ambas versiones sean sustancialmente diferentes y se deban crear tareas independientes que se encarguen de recuperar la información.
  • cambio de plataforma. Recordemos que hablamos de un sitio web ya en funcionamiento que queremos sustituir por otro. Habrá un momento en el que una versión dejará de funcionar en detrimento de la otra, y este cambio debe realizarse de la manera más rápida posible para que los usuarios no sufran las consecuencias.
  • cambios en las url. Muchas de las URLs usadas en la versión anterior van a ser modificadas. Y claro, ¿qué hacer cuando Google ya tiene indexadas más de 50.000 páginas y muchas de ellas se encuentran bien posicionadas? Tenemos que tener mucho cuidado porque cualquier mala decisión puede hacer que nuestro posicionamiento se vea penalizado, cayendo de esta manera el número de visitas que recibe la web. Todo esto lo llevaremos a cabo a través de redirecciones, aunque es algo que explicaremos en futuras entregas.

Resultado final

Pues bien, tras un arduo trabajo, la nueva versión fue publicada hace un par de semanas y podéis verla en www.php-hispano.net. En el camino se han quedado alguna de las secciones de la versión anterior, como los desafíos y los archivos a prueba (scripts hechos por los usuarios), pero hemos conservado lo más importante, los foros y los recursos de información (artículos y tutoriales).

Sí, soy consciente de que os estaréis preguntando qué ha pasado entre medias, cómo se ha podido pasar de contar las ventajas e inconvenientes de realizar un nuevo proyecto hasta un apartado donde dice ‘Resultado final’, como si en la primera temporada de nuestra serie favorita, alguien nos contara lo que ocurre en el último capítulo. Todo tiene su explicación, y es que  la intención de los próximos artículos es la de desgranar algunas de las tareas que se han llevado a cabo durante este tiempo, y ver cómo hemos resuelto alguna de las dificultades que hemos comentado anteriormente.

Nueva versión de PHP-Hispano

Mientras tanto, os dejamos con alguna de las características de esta nueva versión:

  • Un sistema de foros totalmente renovado  con temas clasificados por etiquetas
  • Sistema de usuarios con karma,
  • Sistema de notificaciones interna para avisar de los últimos eventos de nuestro interés (nuevas respuestas, valoraciones de nuestros posts, etc)
  • Sección de artículos donde se publicarán contenidos de interés sobre desarrollo web
  • Sección de hostings gratuitos para alojar nuestros proyectos.
  • Sección donde se irán publicando ofertas de empleo dentro de este sector.

Ya sabéis que si tenéis alguna pregunta o queréis conocer algún detalle en particular, estaremos encantados de responderos.

Javier Orellana – Sígueme en Twitter (@JavierOrellanaZ)