¿Debo construir mi propio CMS o confiar en uno preconstruido? [cerrado]


23

Relacionado : Como programador principiante, ¿debería favorecer la construcción de mis propias bibliotecas en lugar de usar bibliotecas de terceros?

Como desarrollador web PHP de nivel intermedio a avanzado y joven (15 años), ¿debería crear un CMS completamente nuevo para mi sitio web o confiar en software prefabricado como WordPress o Drupal?

No creo que WordPress sea lo suficientemente potente / escalable como para poder manejar lo que estoy tratando de hacer y después de jugar un poco con Drupal en los últimos días, no parece estar a la altura de mi gusto. y tampoco está bien documentado, así que tengo algunos problemas para hacer que realice ciertas tareas simples. Me encantaría usar algo como ExpressionEngine, pero no tengo el dinero para pagar una licencia comercial que actualmente cuesta alrededor de $ 300, por lo que no se puede.

Originalmente comencé a codificar mi sitio como un sistema temporal para que mis usuarios pudieran comprar actualizaciones y otras cosas como la moneda del juego hasta que pudiera abrir un nuevo sitio web, pero después de comenzar, rápidamente me di cuenta de que necesitaba hacerlo escalable , así que a partir de entonces codifiqué con la idea de convertirlo en un sitio web con pleno funcionamiento. Solo tomó un par de días, pero todos los elementos básicos están ahí (registro, inicio de sesión, modificaciones de la cuenta, etc.) y creo que sería un gran comienzo para un CMS privado.

Lo último que quiero agregar es que si tuviera que construir mi propio CMS, ¿debería usar un marco PHP como CodeIgniter, con el que tengo bastante experiencia?

Tal vez otros desarrolladores podrían darme pistas sobre en qué me estoy metiendo.


11
No subestimes la cantidad de horas dedicadas a hacer que los CMS existentes sean lo que son. Puede que se sorprenda severamente ...

Respuestas:


23

Depende totalmente de tu situación. Se han hecho grandes sitios con CMS por ahí. Creo que es mejor que primero comprendamos dos conceptos, CO y TCO.

CO (costo de propiedad)

Cuando compra algo, el monto que paga es CO. En el caso de WordPress, no es nada, porque WordPress (o muchos otros softwares CMS) son gratuitos.

TCO (costo total de propiedad)

Imagine que compra una PC por 10000 dólares. ¿Y que? Debería dedicar tiempo a instalar el software en él (el tiempo es un recurso valioso, por lo tanto, es como gastar dinero en esa PC), luego puede comprar una cámara web, otra grabadora de DVD y algunos cables adicionales. Entonces necesita aprender a usar el software instalado. En otras palabras, el costo total de poseer una PC no es de $ 10,000. Es mucho más que eso.

En el caso del software CMS, su CO realmente no tiene nada que ver con tasas muy bajas. Pero muchas experiencias muestran que su TCO no es bajo en absoluto. Las grandes empresas gastan casi miles de dólares para obtener un buen sitio en Joomla o WordPress.

Otro factor es el nivel de personalización . A veces desea utilizar un software tal como está sin ningún cambio. En ese caso, WordPress, Joomla, Drupal o cualquier otro CMS podría ser un muy buen candidato, y no debe escribir su propio CMS. Pero hay veces que necesita un alto nivel de personalización. En ese caso, realmente se frustra al personalizar un CMS listo para usar para satisfacer sus necesidades.

En realidad, quería usar el software CMS listo, pero después de pasar un tiempo valioso aprendiendo diferentes CMS y descubriendo las debilidades de cada uno, terminé creando mi propio CMS. Thought Results es mi sitio personal y se crea a través de este CMS. Lo publicaré pronto, para que otros también puedan usarlo.

Todavía otro factor es la extensibilidad . Créeme, te hace viejo llevar un CMS del estado estático al estado extensible. Las plantillas, módulos, complementos, proveedores, bases de datos y almacenamiento, mecanismos de enrutamiento y casi cualquier parte de un buen CMS deben ser extensibles.

Por último, mi sugerencia personal es comenzar a construir un CMS, para que al menos aprenda algunos de los conceptos más fundamentales detrás de él. Pero también trate de usar los existentes. Buena suerte.


Wow, excelente respuesta. Algunas de estas cosas que nunca he considerado, pero son realmente agradables de saber ahora. Como dijiste con la personalización, realmente necesito mucho de eso, por lo que originalmente recurrí a Drupal porque había escuchado que se suponía que era genial con cosas como esas. Sin embargo, en mi caso, necesito tener mucha interacción entre varios servidores, PayPal, un registro ampliamente personalizado y otras cosas que realmente no son fáciles de manejar por algo como Drupal. Muchas gracias por su respuesta, realmente lo aprecio. :)
Alex Bennett

Sin embargo, también me gustaría que le preguntara, ¿me recomendaría usar un marco como CodeIgniter o construir el mío a medida que avanzo (tal vez por la experiencia)?
Alex Bennett

1
Bueno, @Alex, me alegro de haber podido ayudar. Pero también lo siento, ya que mi plataforma es .NET y no estoy muy familiarizado con los frameworks PHP. Pero usar un marco es definitivamente alentador. Uso Entity Framework como ORM, por lo que usar un ORM en PHP realmente puede impulsar su desarrollo.
Saeed Neamati

Muy bien, gracias de todos modos. La única razón por la que no quisiera usar un marco es para la práctica, pero creo que probablemente sería más seguro para mí usar uno en este caso, ya que es un sitio de producción y no quiero perder el control. vulnerabilidades que pueden surgir conmigo creando mi propio CMS / framework.
Alex Bennett

1
@ Alex Bennett, Otra cosa, hay CMS de código abierto. Si obtienes el código fuente. Puede comenzar con eso y luego modificarlo a su gusto. Esto realmente aceleraría la construcción de la suya. Es como un enfoque híbrido. ¿Quién realmente quiere reinventar la rueda?
MVCylon

18

Estoy jugando a los defensores de los demonios aquí, sin embargo, hay que decirlo. Algunos de los problemas más comunes con los desarrolladores de software:

  • Bajo la estimación del tiempo y esfuerzo involucrados en completar un proyecto trivial, dejemos llevar uno grande
  • Falta total de comprensión de la realidad empresarial
  • Sobreestimación de las propias habilidades y productividad.
  • Subestimación de la complejidad y detalles sutiles.
  • La creencia de que su problema es tan único que nadie lo ha resuelto todavía.

¿Está seguro de que no está cometiendo ninguno de estos errores, porque incluso por unos 15 años, $ 300 podrían ganarse en unas pocas semanas, y lo que parece proponer podría llevar meses. Piense en lo que sucedería si tuviera un trabajo remunerado y comprara ExpressionEngine con el dinero. ¿Se entregaría antes, con características aún mejores que un trabajo de bricolaje?


1
Soy bastante maduro para tu promedio de 15 años, como espero que puedas ver, y no creo que haya cometido el error de hacer alguna de las cosas que mencionaste. He pasado mucho tiempo investigando posibles soluciones y aún no he encontrado una buena para mi situación. En cuanto al dinero, mi negocio gana más de $ 300 en ingresos por mes (no es mucho, pero paga las máquinas dedicadas) para poder obtener el dinero, pero estoy tratando de jugarlo de manera conservadora e invertir en cosas que son imprescindible, como hardware y publicidad. Sin embargo, gracias por la respuesta, realmente lo tendré en cuenta.
Alex Bennett

No creo que realmente estés haciendo un CMS tanto como una solución personalizada. Si crea un CMS verdadero, probablemente podría distribuir / vender el CMS. Creo que estarías un poco loco (como yo, pero ...) para crear un CMS completo.
HelloFictionalWorld

2
@Alex necesita considerar ese tiempo == dinero, específicamente su tiempo. ¿Cuánto vale? Si su CMS tarda más de 30 horas en producir (@ $ 10 / h), ExpressionEngine es una mejor opción. Del mismo modo, si esas 30 horas de trabajo dedicadas a otras cosas generan más valor real para su sitio que $ 300, ExpressionEngine es una mejor opción.
CdMnky

8

Hay dos respuestas a esto.

Una es simple: no, no reinventes la rueda. Hay muchos sistemas CMS excelentes y si aprende a usar uno bien, entonces, si necesita algo que no ofrece, puede concentrar más su habilidad en crear un complemento para ese propósito en lugar de reinventar el rueda.

El segundo es un poco menos obvio: sí. Si desea comprender cómo funciona un CMS y los problemas que se encuentran en la creación de uno, no hay ningún daño en construir su propio. Probablemente nunca tendrá el poder y la flexibilidad de uno de los sistemas CMS existentes y como hay aproximadamente 100000000000 sistemas de gestión de contenido PHP en el lugar, hay muy pocas posibilidades de que alguien más esté interesado en él, pero tampoco lo hará. tenga las cosas que no necesita y probablemente funcionará mucho más pequeño y más simple que cualquiera de los sistemas más grandes. Tomará mucho tiempo, es poco probable que los resultados sean tan buenos y no hará ninguna diferencia para el resto del mundo, pero en términos de su desarrollo y aprendizaje, podría ser un ejercicio útil.

En cualquier caso, antes de embarcarse en la construcción de la suya, probaría los sistemas principales disponibles solo para tener una idea de cómo funcionan, qué hacen bien y qué creen que podrían hacer mejor. Tener una buena comprensión de esos puede informar su decisión sobre si hay o no algún beneficio en la creación de la suya.


Gracias por la respuesta. Sin embargo, solo para aclararlo: si construí este CMS no tendría intenciones de lanzarlo, ese no es un mercado en el que estoy. Solo sería para mí y se construiría para hacer solo las cosas que quiero / necesito. Sin embargo, he experimentado con otros, pero parece que no puedo encontrar uno que esté bien documentado y haga las cosas que necesito sin obligarme a cambiar el núcleo de alguna manera, por eso comencé a considerar hacer el mío. Otra razón por la que quiero construir la mía propia es para la práctica, ya que estoy trabajando para convertirme en desarrollador web (o algo similar) después de la universidad. :)
Alex Bennett

3
Escribo como alguien que implementó un cms PHP muy pequeño, muy simple y muy básico hace un tiempo y lo ha usado en bastantes sitios desde entonces. No hace más que un pequeño fragmento de lo que hacen los sistemas de mayor escala, pero hace todo lo que necesito para sitios más pequeños y, como está basado en archivos planos, se ejecuta prácticamente en cualquier lugar. Así que aprecio totalmente que a veces realmente solo quieras construir el tuyo propio.
glenatron

5

Si nunca ha intentado programar un CMS, esta podría ser una muy buena oportunidad para hacerlo. Aprenderá bastante y, independientemente de si lo termina, tendrá una muy buena idea de, por ejemplo:

  • Lo que es difícil de hacer y lo que es fácil.
  • Cómo internacionalizar y localizar tus páginas
  • Cómo manejar usuarios y roles
  • Cómo manejar el mantenimiento de las estructuras de datos subyacentes en lugar de requerir sentencias de actualización SQL.
  • Cómo manejar páginas de varias partes.
  • Cómo manejar eficientemente el contenido estático.
  • Cómo escalar a múltiples computadoras y alta carga.
  • Cómo proporcionar API para personalizaciones y temas de usuarios.

Incluso puede encontrar algunos de estos que ha aprendido cómo no hacerlo. Esa experiencia también es importante.

Personalmente, llegué a una etapa en la que aprendí que "cuán difícil puede ser" solo cubre un pequeño porcentaje del trabajo que realmente se necesita hacer para crear un producto de alta calidad, y si tuviera que elegir un CMS, buscaría uno popular con una base de código accesible accesible y una buena documentación, y una buena arquitectura de complementos que me permita escribir complementos adecuados y luego actualizar el CMS base cuando salga una nueva versión.


Gracias por el aporte, ya he tenido bastantes experiencias de cómo no hacerlo. Por ejemplo, escribo 30 líneas de código para hacer una tarea simple y luego, 2 días después, reviso el código y descubro que podría acortarlo en 10 líneas. Esas experiencias, por muy molestas que sean, definitivamente ayudan al proceso de aprendizaje, ya que tienden a hacer que las cosas se "peguen" más.
Alex Bennett

@Alex, esta experiencia de "cómo NO hacerlo" escala con el tamaño de la base de código de su proyecto. Pero, supongo que debes hacerlo al menos una vez para apreciarlo :)

3

Esto es solo un poco una respuesta a su pregunta. Supuse que te gusta php y no vas por la forma CMS prefabricada. ¡Bienvenido al club! Muchos de nosotros hemos ido por el mismo camino. Algún consejo que podría aliviar su carga.

Comencé a construir mi propio CMS, implementación de MVC, controlador de internacionalización (i18n), controlador de sesión, alguna forma de capa de abstracción de base de datos, alguna forma de controladores de formulario, etc. Y luego descubrí que lo que estaba haciendo realmente estaba hecho antes, pero de una mejor manera por frameworks. Entonces, esto significa que no tiene que reinventar la rueda por completo, sino justo donde se ajusta a sus necesidades. Los marcos hacen su vida más fácil, pero requieren mucho esfuerzo para leer y aprender. Me llevó un año dominar realmente Symfony, y no me arrepiento en ningún momento.

Y tienes suerte, porque en este momento hay muchos más marcos de alta calidad que antes. Para nombrar unos pocos :

  • Symfony : Hoy lanzaron la versión 2.0 estable, es algo emocionante. Está ligeramente acoplado, lo que significa que puede usar cualquiera de los componentes o elegir usar todo como un paquete integrado. Tiene buena documentación y una base de usuarios activa. De lo contrario, la versión 1.4 desactualizada también sigue siendo muy confiable y útil. Tiene muchos complementos poderosos para hacerte la vida más fácil. (Manojos)
  • Zend Framework : algunos afirman que no está realmente actualizado (no todas las nuevas características 5.3), pero ha estado presente por un tiempo ahora, y es básicamente un conjunto de componentes útiles (nuevamente acoplados libremente, no un juego de todo o nada) ) Lo uso como un juego de herramientas para hacer cosas como buscar (zend_lucene) y generar archivos PDF. Pero también tiene un conjunto de controladores MVC de uso común. Debe investigarlo si no lo ha hecho. Muy bien documentado
  • CakePHP : Lo usé hace mucho tiempo y no pude pasar por la documentación. Aparentemente, esto ahora es mejor y probablemente valga la pena considerarlo.

  • Yii : No lo he usado, pero últimamente hay mucha confusión, probablemente valga la pena.

  • CodeIgniter : escuché a muchas personas elogiar a codeigniter por su fácil curva de aprendizaje y facilidad de uso. No lo he usado.

Si quieres probar Python, muchas personas también elogian a Django y, por supuesto, a Ruby on Rails.

Probablemente haya más, pero esto debería serle útil. Si no desea utilizarlos, aún puede aprender mucho de estos marcos. ¡Buena suerte!


Gracias, tengo mucha experiencia con CodeIgniter pero no he probado ninguno de los otros. Sin embargo, definitivamente los tendré en cuenta.
Alex Bennett

1
laravel.com ?? CodeIgniter es actualmente el más utilizado, pero Lavarel lo está superando rápidamente
Mawg

1
Sip. Esta publicación tiene cuatro años. Laravel recién comenzaba en ese entonces.
Arend

1

La respuesta depende en gran medida de lo que intente lograr.

Si tiene la intención de desarrollar sus habilidades, aprenda sobre la gestión de contenido, etc. Entonces sí, por supuesto, desarrolle las suyas propias. Del mismo modo, si desea aprender un marco, úselo.

Sin embargo, si su enfoque es el juego que menciona y sus jugadores, entonces la respuesta es casi seguro que no. Su tiempo es un recurso finito y, por lo tanto, costoso. El tiempo dedicado a desarrollar un CMS es tiempo que no se dedica a desarrollar el juego, y es el juego el que genera ingresos. Entonces hazte la pregunta. ¿El tiempo dedicado a desarrollar este CMS en lugar de adquirir uno va a mejorar la experiencia de juego de mis jugadores más que el tiempo dedicado a desarrollar el juego? Si la respuesta es sí, entonces desarrolle, de lo contrario no lo haga.

De manera similar, la decisión del CMS de código abierto sobre ExpressionEngine debería reducir el ToC como dice Saeed. En pocas palabras, si Cost (Wordpress)> Cost (ExpressionEngine) gasta los $ 300. Aquí el costo es el costo_compra + (horas_para_personalizar * su_hora_tiempo).


1

Encuentre un CMS que se ajuste al 90% de sus necesidades y modifíquelo con el tiempo para agregar funcionalidad que no proporciona.

Esto le permitirá iniciar temprano y adaptarse a medida que cambien sus necesidades y las de sus usuarios.


Si bien esto parece estar eligiendo lo peor de ambos mundos, no estoy de acuerdo con el voto negativo, así que lo subí.
Mawg

1

Te animo totalmente a construir tu propio CMS. Es, con mucho, la mejor manera de conocer los entresijos de un sistema de este tipo con respecto a la personalización y la seguridad. Pero tengo que preguntarme qué tan intermedio o avanzado eres con tus habilidades de PHP. Esto no se refiere a tu edad, créeme.

La bandera para mi fue "No creo que WordPress sea lo suficientemente potente / escalable como para poder manejar lo que estoy tratando de hacer y después de jugar un poco con Drupal en los últimos días, simplemente no parece a la altura de mi gusto y tampoco está bien documentado, por lo que tengo algunos problemas para hacer ciertas tareas simples ".

La gran cantidad de libros y sitios sobre la personalización de Worpress y Drupal, sin mencionar los sitios de alto perfil que se ejecutan en estos, demuestran que debe saber qué está haciendo para obtener sitios como estos. Sin mencionar que se reservan presupuestos completos para ejecutar estos sitios.

Enlaces por ejemplo:

http://drupal.org/cases

http://wpmu.org/wordpress-showcase-20-high-profile-sites-running-on-wordpress

Esto no es para desanimarte en lo que estás tratando de hacer, hazlo. Solo quiero asegurarme de que no dediques demasiado tiempo (reinventando la rueda) y te frustres en cierto momento y solo digas "ef", cuando puedas estirar tus talentos y mostrar a la gente, incluidos los empleadores , lo que tienes con las herramientas disponibles actualmente. En el mundo real y la economía actual, el tiempo es dinero, y las empresas y organizaciones no tienen el tiempo y / o presupuestos para lidiar continuamente con la creación de proyectos desde cero.
La información actual se mueve a la velocidad de la luz, razón por la cual los programadores que pueden separar el ruido y crear contenido / aplicaciones / sistemas con un tiempo de respuesta adecuado tienen una gran demanda.


0

Solo usted puede responder si Wordpress o Drupal pueden hacer lo que necesita un CMS, pero si desea probarlos, ¿por qué no utilizar una máquina virtual de Turnkey Linux , como la de Wordpress , Drupal , Joomla o cualquiera de los demás con la etiqueta de gestión de contenido .

Suponiendo que ya tiene instalado el reproductor VMware o VirtualBox , a los pocos minutos de descargar cualquiera de estos dispositivos, podría probar el software usted mismo, con una inversión de tiempo mínima.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.