Resolver la primera duda que surge es, por desgracia, un tema complejo: ¿Qué plataforma nos conviene para crear sitios web? ¿Cual es la mejor?
Elegir una plataforma sin tener antes información, supone una infinidad de tiempo perdido en aprendizaje.
El listado de plataformas presentado no es en absoluto exhaustivo. Por simplicidad y para reducir el número de propuestas, muchas plataformas excelentes quedan fuera del listado. Se presentan, a criterio del autor del post, las que considero mejores y más recomendables.
Tabla de contenidos
CMS vs framewoks
Tanto con un CMS (Content Management System, gestor de contenidos) como con frameworks, es posible hacer cualquier cosa, ya que el código (HTML, CSS, JavaScript, PHP, Python, …) es algo a lo que siempre podemos recurrir. Sin embargo, para proyectos de gran complejidad (ej. Muchos productos, aplicaciones avanzadas para agregar funcionalidades especiales, …) el CMS rara vez es la opción adecuada.
Podría concluirse en un intento de responder rápidamente, y como regla general, dependiendo del perfil del desarrollador web:
- CMS: perfil de no programador; se busca la máxima rentabilidad (rápido y barato); blogs simples, no hay demasiada complejidad. De entre los CMS que existen los 3 actualmente más populares son WordPress, Drupal y Joomla.
- Framework MVC: programadores; personas que pueden (o quieren aprender a escribir código; sitios que requieren de una alta personalización y/o sofisticación; sitios robusts, rápidos, flexibles y 100% escalables.
En las plataformas CMS, el coste de desarrollo es menor. Hacemos más con menos trabajo y muchos típicos elementos web están ya disponibles de forma automática o con la adición de plugins.
Aunque personalmente, en esta comparativa me decanto por los frameworks, y más concretamente por el framework Django con Python, hay varias evidencias que no se pueden negar:
- Con un CMS es absolutamente posible crear un sitio web relativamente sencillo, incluso de aspecto profesional, sin escribir una sola línea de código.
- El CMS WordPress es con diferencia la plataforma más utilizada en el mundo para el desarrollo web, y eso no es por casualidad. La facilidad para crear sitios, la comunidad que hay detrás, la cantidad de plugins y módulos existentes para cubrir funcionalidades, lo hacen una opción interesante.
Lo anterior no significa ni mucho menos que con un CMS se pueda hacer cualquier cosa. Cuando la complejidad de la tarea supera al CMS, hay que introducir código. El CMS nos ofrece el mecanismo para poder introducir ese código, pero no el código en sí mismo.
Por tanto, para un sitio web simple, puede ser una mejor opción usar un CMS como WordPress. Pongamos un ejemplo en el que le damos a nuestro cliente un precio 4 veces superior al la que le da la competencia, la cual le va a montar un simple WordPress. Es muy posible que cualquier individuo que no sepa ni una sola palabra de código se lleve el trabajo.
Afortunadamente, cuando nuestro cliente nos demanda un alto grado de personalización y/o aplicaciones complejas, tenemos argumentos suficientes para vender el desarrollo con un framework.
Como conclusión final, puede que la solución sea simplemente adecuar la elección de la plataforma en función del tipo de sitio que el cliente necesita, en vez de aferrarse a una plataforma, de una forma obstinada.
Ventajas de los CMS
- Desarrollo más rentable (generalmente). Al cliente final no le importa que herramientas has usado.
- Facilidad de uso. Editores visuales; biblioteca de medios desde donde gestionar las imágenes, audios, etc.
- Elementos y funcionalidades ya implementados y/o con editores visuales para gestionarlos con facilidad: SEO, sitemap, galerías de imágenes, clasificación de posts por categorías, …
Los CMS incluyen muchas funcionalidades, de entre las cuales varias o muchas no necesitaremos usar. Pueden ser vistas como ventajas o, en ocasiones, como desventajas:
Guardado de historial de revisiones, que con el tiempo se vuelve gigantesco.
Gestión de miniaturas. WordPress crea automáticamente imágenes miniatura para cada imagen que introducimos en la biblioteca, y estas no se muestran.
Desventajas de los CMS
Las siguientes son claras desventajas, (según mi opinión):
- Requiere actualizaciones regulares por seguridad y son más vulnerables a ataques.
- La pesadilla de los Plugins (ver apartado WordPress).
Si realmente no aprovechamos muchas o ninguna de estas funcionalidades, es posible que realmente no necesitamos un CMS.
Ventajas de los frameworks
En un proyecto web en el que vemos que no se van a estar cambiando constantemente los contenidos, no deberíamos de utilizar un CMS. Sería mejor utilizar un desarrollo a medida que tiene las siguientes ventajas:
- Sitio web muchísimo más personalizado, sofisticado, robusto y flexible.
- Menos pesado, al contener solo lo que necesitamos, y código limpio. Ausencia de código basura generado por los editores visuales y los plugins de los CMS. Esta no es una cuestión estética, el código basura afecta a la velocidad del sitio, y por consiguiente a al experiencia de usuario y al SEO.
- Escalabilidad. Sitios 100% escalables, preparados para un altísimo tráfico.
- Mejora de la seguridad contra los ataques web.
- Cuanto más tecnologías estandarizadas utilicemos, (HTML5, CSS, JavaScript, …) más independiente será nuestro sitio de cudalquier plataforma, y más eficiente.
Desventajas de los frameworks
- Mayor coste de desarrollo.
- Más difíciles, requieren mayor tiempo de aprendizaje.
Plataformas CMS
El proceso de creación de un sitio con las 3 plataformas más populares de software CMS, WordPress, Joomla y Drupal, es el siguiente: el software se descarga desde la página oficial y se instala y configura en el servidor deseado.
En este artículo no entraré a valorar Joomla. Solo comentar que este es más parecido a WordPress que a Drupal, en cuanto a que es más adecuado para no programadores.
WordPress
CMS basado en módulos, libre y gratuito. No debe confundirse WordPress.org (software autoalojado, del que trata este artículo) con el WordPress.com de los blogs gratuitos.
WordPress es el CMS más usado en el mundo con diferencia, y posiblemente sea la plataforma más rentable de todas las que existen.
Ventajas
Las automatizaciones que tiene permiten ahorrar tiempo de desarrollo y hacer realmente muchas cosas sin saber código. Ni mucho menos todas.
Desventajas
- A medida que aprendemos, queremos agregar nuevas y más sofisticadas funcionalidades, mejorar el sitio, personalizarlo aun más. Es entonces cuando lo que en un principio eran todo facilidades, se convierte en dificultades y a veces en pesadilla.
- Para sacar partido a fondo de WordPress, debe comprenderse su jerarquía de plantillas, como crear plantillas y etiquetas de plantilla, e iría bien algo de PHP. Sin estos conocimientos, no podemos hacer tareas tan simples como poner cabeceras o menús diferentes en páginas diferentes (quizá sí, buscando un plugin que lo haga).
- Gestión de miniaturas de imágenes: Si no conocías la existencia de las miniaturas, y llevas un tiempo insertando imágenes en la biblioteca WP, usa un cliente FTP como Filezilla y echa un ojo a lo que hay en el directorio http://www.tu-dominio/wp-content/uploads/año/mes/, para ver lo que WordPress te ha preparado.
- La pesadilla de los Plugins. Los CMS basados en plugins, como WordPress:
- introducen un potencial agujero de seguridad por cada plugin;
- sobrecargan el sitio web ralentizando el tiempo de carga de las páginas;
- a menudo provocan incompatibilidades entre ellos mismos, al ser de diferentes fabricantes;
- se pierde un tiempo incalculable buscando plugins para cada funcionalidad que queremos implementar, para normalmente descubrir que la solución que necesitamos solo está disponible en la versión premium (de pago) del plugin.
- La incomprensible dificultad de insertar código JavaScript y PHP, que sin embargo últimamente ha mejorado algo. Los temas de pago suelen incluir soluciones para insertar JavaScript. Para PHP podemos encontrar un plugin (uno más, suma y sigue).
- Si insertamos código que llame a funciones JavaScript, es mejor olvidarse del editor visual. Este sobrescribe el código de la llamada. Lo he comprobado.
- Cuantas más funcionalidades del tema o del CMS usemos, mas dependientes seremos de ese tema y de ese CMS, y más complicada será una hipotética migración a otro tema, o incluso a otra plataforma, como por ej. Django/Python.
Drupal
El software CMS Drupal es más complejo que WordPress y tiene una curva de aprendizaje bastante más alta.
En contrapartida, es un software de calidad notablemente superior a WordPress, más flexible y escalable, hecho para programadores. Así, una vez superada la dificultad inicial, hay ventajas que compensan el esfuerzo.
El sistema modular de Drupal es diferente. Su granularidad permite hacer sitios más personalizados. Considerando los aspectos citados podría considerarse Drupal como a mitad de camino entre un CMS y un Framework.
Grandes compañias y organizaciones usan Drupal en sus sitios web: Ubuntu, MTV, Universidad de Oxford, La Casa Blanca (gobierno de EEUU), … solo por citar algunas.
Según mi opinión y la de muchos expertos, Drupal es el mejor CMS libre y gratuíto.
Frameworks del lado servidor, estilo MVC (modelo vista controlador)
Los frameworks del lado servidor (es decir, «los frameworks de aplicaciones web») son software que hacen más fácil escribir, mantener y escalar aplicaciones web. Proporcionan herramientas y bibliotecas para simplificar operaciones comunes de desarrollo web.
Framework Django (Python)
Django es el framework para desarrollo web más popular para programadores Python.
Es libre y gratuito bajo licencia BSD.
Django nos permite crear sitios Web, escribiendo aplicaciones web con Python en el lado servidor.
Django NO es un CMS. Es necesario escribir el código para hacer que una web funcione.
Es sin duda el framework basado en Python más popular.
Django trabaja con PostgreSQL, MySQL, SQLite y Oracle, y se pueden utilizar otras bases de datos con controladores de terceros.
Enlaces de interés
djangosites.org:
Una larga lista de sitios hechos con Django.
Flask
Framework minimalista para Python. Muy popular, particularmente entre desarrolladores que necesitan proporcionar servicios web en sistemas pequeños, y con recursos escasos (ej. ejecutar un servidor web en una Raspberry Pi, Controladores de Drones, etc.)
Otros frameworks Python de calidad
- Pyramid.
- Web2py.
Ruby on Rails (Ruby)
Rails, o Ruby on Rails, es un framework web escrito para el lenguaje de programación Ruby. Sigue una filosofía de diseño muy similar a Django. Es MVC (modelo vista controlador).
Entorno Node.js
Node.js es un entorno que utiilza JavaScript en el lado servidor, de código abierto, multi-plataforma, permite a los desarrolladores crear toda clase de herramientas de lado servidor.
Node.js está dentro de los mejores. Los considero una gran solución para crear sitios web de enorme calidad. Una alternativa digna a Python/Django. Entre otras de sus ventajas:
- Enorme rendimiento y escalabilidad.
- El código está escrito en «simple JavaScript», por lo que se pierde menos tiempo en detalles ralacionados con los cambios entre lenguajes. Por otra parte, no requiere el aprendizaje de otro lenguaje, (porque JavaScript en el lado cliente es obligado).
- JavaScript es un gran lenguaje.
- Gran comunidad de desarrolladores y bibliotecas para hacer casi cualquier cosa imaginable.
Express (Node/JavaScript)
| Sitio web de Express | Tutorial Express de la MDN |
Framework para Node.js. Minimalista, fácil de usar, rápido, amplia documentación, …
Facilita la migración de programadores web de JavaScript de lado cliente a desarrollo de lado servidor, y es eficiente con los recursos.
Meteor
Libre y de código abierto, escrito usando Node.js, Meteor intenta solventar la brecha backend/frontend, proporcionando un framework único para los dos.
Permite la creación tanto de aplicaciones web como apps móviles en puro JavaScript.
Enlaces de interés
[developer.mozilla.org] Qué
son, como funcionan y como escoger un framework web
Deja una respuesta