¿Por qué Cakephp no es popular a pesar de ser uno de los primeros marcos de PHP que se ha escrito?

Descargo de responsabilidad: soy un miembro central del proyecto.

Menciona un par de problemas en su pregunta: popularidad , adopción y características que no le gustan . Por lo tanto, haré todo lo posible para responder cada uno de estos puntos por separado …

Popularidad

En primer lugar, no estoy seguro de cómo llegaste a entender que CakePHP no es popular, o cómo midiste su popularidad. Lo que puedo decirte es que actualmente es el cuarto marco PHP más popular en GitHub (además de aparecer en los marcos de aplicaciones web), y también se encuentra entre los 5 proyectos de código abierto más populares que usan PHP, de unos 155.499 proyectos actualmente . Yo diría que es bastante “popular”.

Solo el mes pasado, hemos tenido 120 solicitudes de extracción fusionadas en el repositorio de framework. Excluyendo fusiones, 38 autores han empujado 29 confirmaciones para dominar y 442 confirmaciones para todas las ramas. Parece bastante para un proyecto que no consideras “popular”.


Durante el último año, hemos tenido más de 31 millones de visitas a páginas de más de 8 millones de visitantes únicos a nuestros sitios web. Nuestros servidores son generosamente donados por Rackspace , quien creo que no admitiría ese tráfico si el marco no fuera “popular”.

En el aspecto social de las cosas, actualmente tenemos 12,484 seguidores en Twitter (CakePHP (@cakephp) | Twitter), 14,932 me gusta en Facebook (CakePHP), 19,013 miembros en nuestro grupo de Google (Grupos de Google) y 105 personas conectadas al # El canal IRC de cakephp en Freenode ahora mismo. El número de asistentes a CakeFest (la conferencia anual de CakePHP) también ha estado creciendo constantemente. Puedes escuchar la nota clave de eso en un podcast aquí: Episodio 3: resumen de CakeFest

¿Popularidad? Tal vez.

Adopción

Supongo que esto es una cuestión de percepción, y cómo piensas medirlo. Actualmente hay 21,197 preguntas etiquetadas con “cakephp” en Stack Overflow . Yo diría que muchos desarrolladores potenciales están “adoptando” y preguntando sobre el marco.

En las últimas dos semanas, hemos tenido 10.695 clones del repositorio de git y 63.299 visitas a páginas de unos 12.880 visitantes únicos a la página de GitHub para el marco (tenga en cuenta que hay muchos repositorios en la cuenta de la organización, solo estoy contando el repositorio del framework central). Esto es solo por un período de 2 semanas.


Para una vista de línea de tiempo más larga, aquí está el historial de confirmación completo (que incluye la rama 3.0 ), y muestra claramente la “adopción” del desarrollador en lo que respecta a la contribución (diría que alguien no contribuye a un proyecto si no hay ganancia para ellos) , es una inversión ).


Actualmente tenemos 286 contribuyentes al proyecto (incluido un equipo central de 25 miembros), que no incluye a algunos de los 355 contribuyentes a la documentación, que también es de código abierto. Todas estas personas han “adoptado” el proyecto hasta cierto punto.

El proyecto en sí es 100% impulsado por la comunidad . No hay inyección de capital o recaudación de fondos más allá de las donaciones al proyecto a través de la Cake Software Foundation y sus esfuerzos, como la capacitación de CakePHP, la certificación de CakePHP y los eventos. Por lo tanto, todo el crecimiento se origina en la comunidad de desarrolladores. Sin “adopción”, todo sería imposible.

Características desagradables

No tengo dudas de que si le preguntas a alguien que ha trabajado con las versiones 1.xo 2.x lo que no le gustó, el hecho de que los modelos devuelvan matrices probablemente estará en esa lista. A decir verdad, y como miembro central del marco, también estaba en mi lista. Sin embargo, vale la pena señalar que la versión 3.x ya no devuelve matrices, devuelve objetos. Al igual que muchas cosas de las que se queja la gente en CakePHP , ahora son cosas del pasado, que desafortunadamente viven gracias a la notoriedad o información errónea del pasado.

Otra gran queja es que es lenta. Bueno, para ser honesto, en los 1.x días que pudo haber sido cierto. Pero desde la serie 2.x , que vio un aumento significativo en el rendimiento, esas afirmaciones ya no pueden soportar su peso. Por ejemplo, aquí hay una aplicación creada en CakePHP , que ha estado en los sitios de mejor desempeño en el índice de New Relic :


Además, mira esta charla de Christian Winther , si realmente quieres saber cómo hacer una escala de aplicación (spoiler: “CakePHP tiene muy poco que ver con hacer una aplicación escalable en primer lugar” ):

Y, en cuanto a la calidad del código base, aquí tiene una calificación A + para la consistencia del código: Análisis de convenciones de codificación

Para dar un poco de historia, el marco se inspiró en las primeras versiones de Ruby on Rails , que aboga por la convención sobre la configuración, a veces causando una relación de amor / odio con los desarrolladores, porque es obstinada .

Esto significa que CakePHP tiene una forma de hacer las cosas, que si sigues el recorrido, obtendrás mucho trabajo por ti y más tiempo para construir tu aplicación. Estas convenciones no son un secreto, están claramente definidas para los desarrolladores.


Es importante recordar que CakePHP fue uno de los marcos PHP originales (como mencionó en su pregunta). Ha existido durante 10 años , que es un tiempo muy largo y “respetable” para que un proyecto construido por la comunidad sobreviva. Sin embargo, esto también significa que es muy maduro y probado exhaustivamente en escenarios y entornos de la vida real. Por razones por las cuales esto es probablemente algo positivo, recomendaría revisar la charla de José Lorenzo sobre el estado de “abuelo” del marco:

El marco comenzó en los 4 días de PHP, cuando faltaba mucha de la bondad orientada a objetos en el propio lenguaje PHP. En aquel entonces, el marco solucionó estas deficiencias al proporcionar mucha de la magia que se introdujo de forma nativa en PHP 5+ (por ejemplo, los comportamientos del modelo eran básicamente rasgos, muy por delante de su tiempo). Para obtener más información sobre la historia de CakePHP , consulte este artículo de Larry Masters , un fundador original del marco: CakeDC – CakePHP 3.0 está llegando

Sobre el tema de la longevidad, CakePHP siempre ha tenido un soporte muy fuerte para BC (compatibilidad con versiones anteriores). Esto podría ser el motivo de una introducción algo más lenta de nuevas funciones basadas en actualizaciones del lenguaje PHP, a favor de no hacer que los desarrolladores tengan que realizar reescrituras de sus bases de código. Aun así, cuando se lanzan nuevas versiones del marco (alrededor de 110+ hasta la fecha) se proporciona una guía de migración. Además, para actualizaciones mayores y menores, también hay un shell de actualización, así como herramientas para ayudar a los desarrolladores a pasar de una versión a otra.

Aunque esto (progresión lenta, menos interrupciones de BC) puede ser una de las razones por las que los desarrolladores más impacientes eligen cosas más nuevas y brillantes, también es la razón por la que otros se quedan con CakePHP , porque saben que no se quedarán atrás. Esta es probablemente mi única respuesta que vale la pena por la “adopción obstaculizada” a la que aludiste. Cualquier otra razón probablemente tenga algo que ver con las matrices .

Conclusión

Desafortunadamente, la comunidad PHP puede ser algo combativa cuando se trata de marcos. Esto no es necesariamente algo malo, la herramienta que usa y su elección siempre serán algo obstinadas, basadas en sus gustos y experiencias, y tendrán cierto nivel de sesgo en función de su estilo y enfoque como programador.

Probablemente sea una autopromoción desvergonzada, pero hablé sobre los beneficios de CakePHP , así como sobre los buenos enfoques para el desarrollo, puedes encontrar las diapositivas aquí: Enterprise Cake

Además, para aquellos que predican el mantra “no sigue patrones de diseño”, aquí hay otra charla como argumento contrario a eso:

Reflexión final: pruebe todo, diferentes marcos y bibliotecas. Tenga en cuenta a los falsos profetas y evite seguir la exageración, las mejores soluciones son las que brindan los resultados y pueden demostrar su valía y resistir el paso del tiempo.

Hay ventajas y desventajas de cualquier marco. Cuando se trata de la prueba de concepto, he descubierto que es difícil obtener una respuesta concreta de por qué los usuarios piensan que un marco es mejor que el otro. La mayoría de las opiniones que veo sobre estos marcos están sesgadas … se basa en muchos factores pero no en hechos … He trabajado con CakePHP y Laravel y creo que ambos tienen excelentes características y ambos tienen características que necesitan mejoras. Todo depende de lo que te guste … Para poner las cosas en una mejor perspectiva, me gusta más trabajar con el ORM de Laravel, pero me gusta más el Sistema de enrutamiento de CakePHP. Además, en general, me gusta crear sitios web (es decir, blogs, sitios corporativos) con CakePHP, pero cuando se trata de crear API, me gusta usar Laravel. No tengo resultados reales de “laboratorio” que demuestren por qué me gusta uno más que el otro … son solo elecciones personales y lo que mejor se adapta a mi visión como programador … Elogios a todos los involucrados en la creación de estos marcos y en realidad mantenerlos con el mismo ¡pasión!

Depende del programador mismo. En el pasado, estaba usando CakePHP y me encanta, luego trato de cambiar a Laravel 4.x. No diré que Laravel es un mal marco, ¡no! O CakePHP no es popular, ¡no lo es! Aunque, la popularidad no es importante (al menos para mí).

Laravel es un gran marco, pero reconozco que con Laravel, solo uso las herramientas del marco, no el marco en sí, como: compositor / embajador, sistema de migración y opciones de línea de comandos, ¡realmente me encanta! Hasta que me doy cuenta, que todas las cosas de la línea de comandos dentro de laravel, estaban disponibles en CakePHP, y además me gusta la forma en que CakePHP maneja objetos, como Comportamiento, Componente, Ayudante y otros.

No comparo entre laravel y cakephp, y trato de decidir cuál es mejor, ¡absolutamente no! Solo quiero decir que, no importa que estemos usando un marco que sea ‘popular’ o no, lo más importante es el poder del marco en sí mismo, si el marco puede ayudarnos o no a desarrollar y finalizar nuestras aplicaciones.

Concéntrese en nuestra lógica empresarial y use un marco que pueda respaldar el desarrollo de nuestras aplicaciones. Es más importante que la popularidad del framework .

Conozca las características del marco y decida que el marco puede ayudarnos o no.

Habiendo tratado con CakePHP durante un semestre como parte de un término de trabajo cooperativo, una de las principales razones por las que no me gustó fue por la simple razón de que si no estaba usando Cake para “hornear” su esquema, casi no había concepto de un modelo. Todo se devolvió como matrices profundas de la base de datos al usar su ORM.

Otro problema con Cake fue la documentación. No es muy útil cuando se trata de descubrir cómo hacer algo a la manera de “Pastel”. Parece que la única aplicación para la que CakePHP fue diseñada fue para crear blogs.

CakePHP no es el marco de trabajo que se debe usar si planeas intentar transferir el código sobre esquemas de bases de datos o códigos anteriores. Creo que el marco tiene más potencial en el caso en que un desarrollador pueda comenzar a construir una aplicación desde cero, o va a hacer una reescritura de software. Por otra parte, Cake no aprovecha las nuevas funciones de lenguaje de PHP, por lo que puede ser beneficioso utilizar un marco que no sea compatible con versiones anteriores de PHP (5.4 y versiones posteriores)

En el lado positivo de las cosas: Cake hizo que la integración con Memcached / Amazon Elasticache y Redis fuera bastante simple. Aunque terminé escribiendo mi propio plugin Memcached, fue bastante sencillo.

En cuanto al contexto: la aplicación en la que estaba trabajando era una versión móvil de una de las bolsas de trabajo en línea más grandes de Quebec, Canadá, con una deuda tecnológica bastante profunda por un mantenimiento deficiente a lo largo de los años.

No diría que la tasa de adopción es decepcionante, ya que parece bastante subjetivo, sin embargo, hay muchas opciones para elegir y Cakephp es tan obstinado como Rails. Por lo tanto, no hay muchos desarrolladores de Php como ese, ya que la mayoría de los desarrolladores de PHP no suelen ser fanáticos de OO. No estoy implicando que a todos los desarrolladores de PHP no les gusten los conceptos de OO, pero la mayoría son programadores de nivel principiante a intermedio.

Es complicado, usa ORM para todo, está desactualizado, usa mal conceptos y patrones.

Ni siquiera es comparable a los marcos modernos. Es como manzanas y naranjas, aunque ambas son frutas …

Sin mencionar que te encierra profundamente en el marco. Es el camino de la torta o la carretera.

Si tuviera que elegir un marco hoy es Symfony2 o Laravel4 y me mantendría muy lejos de Cake, CodeIgniter y similares.

La actualización de la versión no es posible. Si construye su proyecto en una versión, se quedará atascado con eso. Demasiado complicado de usar. La instalación es difícil. Este no es un buen marco.

respuesta honesta, de alguien que todavía está! ganarse la vida con la torta desde la versión uno días alfa, pero no por mucho tiempo espero:

déficit de amor