En el post anterior ya hablamos de la importancia de las decisiones tecnológicas. La elección del lenguaje servidor y su framework creemos que merecen una mención aparte. Como comentábamos la decisión de elegir el framework PHP fue una de las más delicadas de todas y que más tiempo nos llevó. Después de años de investigación, estudio, aprendizaje y uso hemos llegado a la conclusión de: ¿CodeIgniter o Symfony? ¿pastilla roja o azul?
Caso de éxito Symfony: Openart
A finales de 2008 teníamos un gran proyecto para un cliente en proceso de análisis, una red social de arte llamada Openart y tomamos la decisión de utilizar el recién aparecido Symfony 1.1 por su extensa documentación, toda la potencia que ofrece, y un último factor decisivo: el apoyo de toda la comunidad que lleva detrás. La curva de aprendizaje fue lenta, muy lenta, pero el resultado final, y sobre todo la experiencia a nivel de desarrollo de utilizar un framework externo fue todo un éxito.
Realmente lo que más problemas nos dió fue el ORM que venía por defecto y era el recomendado: Propel. Tuvimos que meternos a nivel de núcleo para optimizar muchas querys e intentar aliviar el cuello de botella que representaba en ese proyecto la base de datos por su multitud de relaciones. Después también tuvimos la mala suerte de que apareciera la versión 1.1 cuando teníamos media red social desarrollada en la 1.0. Como estábamos a mitad de proceso migramos el código, queríamos estar con la última tecnología para que al crecer la red social no tuvieramos problemas en un futuro con incompatibilidades. Digo mala suerte porque intuiamos que un cambio de concepto en algunos puntos del framework de una versión a otra no parecía normal, pero siempre que fuera a mejor… Después nos dimos cuenta que la filosofía del framework es tirar lo anterior si se detecta que no es del todo bueno, detalle que particularmente no compartimos y nos que nos causó muchos quebraderos de cabeza. De hecho actualmente el ORM por defecto ya no es Propel sino Doctrine.
Nos suele pasar que todo lo que no nos gusta en Symfony lo acaban cambiando, lo que es genial 😉
Aunque para ser sincero los cambios en Symfony siempre fueran a mejor, preferimos una mayor estabilidad en el framework lo cual genera también una documentación firme así como la reutilización constante de desarrollos previos. Esto es una opinión un tanto personal, la cual no todo nuestro equipo comparte :-D.
Caso de éxito CodeIgniter: Nosplay
Empezamos a trabajar con CodeIgniter de EllisLab exclusivamente para proyectos más pequeños y el resultado fue increible. Como ya sabéis, es un framework más pequeño y manejable (por lo menos en comparación con Symfony), con una curva de aprendizaje muchísimo más baja (en apenas una semana ya estaba todo nuestro equipo funcionando) y con algunas ventajas interesantes como la no necesidad de caché en el proyecto para su correcto funcionamiento (muy interesante en mini proyectos), y sobre todo su gran velocidad de rendimiento (era, y sigue siendo, uno de los frameworks más rápidos).
Ya con un equipo de desarrollo con experiencia en CodeIgniter este año 2010 hemos sacado uno de nuestros proyectos estrellas: nosplay, una red social de videojuegos en español. Un proyecto en el que creemos mucho y que desde que nació no ha dejado de crecer. Todo fue desarrollado con CodeIgniter 1.7, por lo que estamos especialmente orgullosos de haber demostrado que con CodeIgniter también se pueden desarrollar proyectos de magnitud gigantesca.
Conclusión
En definitiva, y por todas las razones que hemos mencionado, actualmente en nitsnets | studios desarrollamos en CodeIgniter, eso sí, apoyado con librerías de Pear y Zend Framework, además de varias de desarrollo propio.
Sin embargo, aún no le hemos cerrado la puerta a volver a Symfony porque en Marzo de 2011 llegará el esperado Symfony 2.0. Ya hemos leído en que lleva lo mejor de los dos mundos, Symfony 1.4 y CodeIgniter. Personalmente me da rabia en este aspecto que en el test de comparativa de rendimiento de Symfony 2.0 digan que es mucho más rápido que el resto de frameworks y se hayan dejado por analizar CodeIgniter… sospechoso. :-S
Muy interesantes los casos de éxito.
Habeis tocado framworks más lights como lemonade o fat free framework?
Saludos
Muy buen artículo. Gracias por compartir esta información. Estoy en este momento desarrollando en Drupal, y es tan desesperante lento e ilógico para mi que no quiero saber mas nada con Drupal. Estoy averiguando con qué framework empezar a trabajar. Me estoy decidiendo entre codeigniter y cakephp o bien, pegar el salto y meterme con Ruby on Rails.
gracias por el artículo!
Buenas Pablo:
La verdad es que estos frameworks no los hemos tratado, son micro frameworks y parecen muy interesantes.
Pongo los enlaces para quien los quiera probar:
Lemonade: http://www.limonade-php.net/
Fat Free Framework: http://fatfree.sourceforge.net/
El Fat Free me ha parecido muy interesante conceptualmente, tiene puntos interesantísimos; empezaremos con este.
Tu los has utilizado? Con cual te quedas? En comparación con CodeIgniter q te parecen? Incluso como para hacer una red social?
Seria interesante conocer vuestras experiencias 😉
No conocía Fat Free y parece interesante, pero creo que debe dar problemas de autocompletado con los IDE por la manera de crear los routes, o eso me ha parecido al leer el getting started.
Muy buen artículo, ah! yo también utilizo CodeIgniter 🙂
Muy interesante el análisis señor!
Sigo pensando que Symfony no es apto para los mortales corrientes, sino para grandes empresas. Aún en la versión 2 si copian, digo mejoran, cosas de Codeigniter seguirá alejado de la realidad del 70% de las empresas de desarrollo de software, que justamente es hacer desarrollos rápidos, escalables y rentables. Será otra pérdida de tiempo.
Ahora si lograrán llegar a igualar la curva de aprendizaje y desarrollo de Codeigniter en Symfony 2, seguro que será una alternativa, mientras tanto sólo leería las noticias… =)
Y si tienen buenos plugins y librerías en Codeigniter, podeis compartir alguna en el repositorio 😛
saludos!!!
La verdad que nosplay es un exelente trabajo, felicitaciones!!!!, yo justo estoy comenzando hace unos dias a usarlo y me parece espectacular el login, que plugin usaron?, justo necesito algo parecido pero la verdad todos los que probe me han defraudado, tank auth, ion auth, dx auth…a3m…es lo unico que le veo pobre a CI, pocos modulos/plugins que anden bien o que «existan».
Saludos.-
Buenas Alfredo. Gracias por las felicitaciones!
La verdad es que no hay muchos módulos/plugins en CI como bien dices. Nosotros estamos empezando a crear algunos, a ver si podemos publicar algo sobre eso!
En el caso del login de nosplay la verdad es que esta realizado desde cero con codificación y con el ORM doctrine como comentábamos.
Yo he trabajado mucho con codeigniter del cual vivo muy agradecido. Actualmente estoy desarrollando en zend framework y me ha parecido genial
@vicman si no es mucha molestia, ¿a qué se debe el cambio a Zend?
A mi el Zend aún no me convence… el desarrollo con CodeIgniter me parece más rápido.
Por cierto, ¿eres de Vic?
Saludos
Es cierto que symfony es casi el framework más complicado que hay, pero tambien es cierto que cuando se aprende te multiplica por 100 cada hora dedicada a su estudio, ademas tiene una gran cantidad de plugins y no hay que programar tanto.Además en sus últimas versiones tiene a Doctrine como ORM por defecto, el cual es muy usado en estos tiempos.
¿que opinais de KohanaPHP? ¿puede ser una evolucion del CodeIgniter? he leido que corrige errores que tiene codeigniter y que es mejor porque hay una comunidad detras y no una empresa privada.
que me recomendais?
Gracias
Buenas fupi:
KohanaPHP no hemos tenido la oportunidad de verlo en profundidad. Nos han hablado muy bien de él, pq como bien dices es como una evolución comunitaria (no empresa privada) de CodeIgniter.
Puede ser interesante pero no te puedo confirmar por falta de datos…
A nosotros con Symfony y CI nos ha ido muy bien 😉
Ahora estamos entusiasmados estudiando y evaluando otra de las que dicen que es el paso lógico a los desarrolladores de CodeIgniter. Se llama YII Framework: http://www.yiiframework.com/
Te animo como nosotros a probarlo también, ya os iremos contando!
Aunque no sea muy rigurosa (no me gusta nada este tipo clasificación…):
Si eres principiante en PHP te recomiendo CI o KohanaPHP, en plan intermedio quizas puedas tirar por YII, en plan más avanzadillo Symfony (metete con el 2 ya!)
En definitiva para empezar a trabajar en un framework el caso es meterse y que te sea beneficioso en tiempos 😉
Espero que si eso ocurre…no tengas bien informados para que nos pongamos las pilas, los que empezamos en estas cosas, yo le he cogido mucho «afecto» al CI.
Donde puedo conseguir una buena documentacion sobre codeigniter 2 y doctrine 2. Quiero comenzar a hacer desarrollos. Pero he tenido muchos problemas a la hora de utilizarlos. Alguna ayuda
Buenas Angel:
La mejor documentación sobre CodeIgniter la tienes en la propia web en la User Guide:
http://codeigniter.com/user_guide/
Sobre Doctrine 2 un tanto más de lo mismo:
http://www.doctrine-project.org/projects/orm/2.0/docs/en
Realmente esta muy bien documentado en las webs oficiales, mejor que en ningún sitio.
Existen libros de CodeIgniter pero están un tanto desfasados en tiempo y versiones.
En borradores tenemos pendiente publicar un tutorial de integrar CodeIgniter 2.0 con Doctrine 2.0 justamente!
Ya que CodeIgniter no tiene preinstalado este ORM y utiliza ActiveRecords
Así que has dado en clavo!
Esperamos que te sea útil los inicios siempre son duros ;D
Exelente…, estoy en la disyuntiva entre ambos frameworks, y esto me lo ha dicho todo…
Salu2 ABD
Para desarrolladores de poco experiencia sin dudas CodeIgniter es la mejor opcion.
Exelente… Todo queda claro… GRACIAS.
me parece interesante pero no encuentro la documentacion necesaria como para aprender desde el inicio, estoy interesado en aprender este frameword si alguien podria poner otros enlaces de codeigniter asi como su motor para manejar base de datos.
Buenas Jose:
Como comentaba a Ángel en los comentarios anteriores la mejor documentación sobre CodeIgniter la tienes en la propia web en la User Guide:
http://codeigniter.com/user_guide/
Sobre Doctrine 2 (motor de base de datos) un tanto más de lo mismo:
http://www.doctrine-project.org/projects/orm/2.0/docs/en
Aunque si estas empezando te recomiendo que trabajes con ActiveRecords del propio CodeIgniter y listo! te será más simple y para empezar no necesitas más
http://codeigniter.com/user_guide/database/index.html
espero que te sirva!
Yo trabajo con Codeigniter y me anda de puta madre, es rapido o velozz la curva de aprendizaje es extremadamente rapida y facil a demas de otras fremeworks trabaja bajo el concepto mvc que todos conocemos pero existe una extencion para ampliar nuestro cor de CI para llevarla a Hmvc algo mas avanzado para trabajar de forma modular para projectos grandes , aparte de que doctrine ya lo podemos implementar en nuestro CI como otra extencion mas, de verdad lo recomendaria por si quieres empezar a provar y despues ir subiendo a zend , Ci es la segunda comunidad mas grande y viene creciendo enormemente , cakephp es una caca jamas prueben eso , entonces asi pues manos a la obra !!! CI apoyenla
Hola! 🙂
Y ahora con el Symfony2? Con qué os quedaríais, symfony2 o codeigniter?
Y sabeis algo de cakePhp??
La pregunta del millón: ¿qué sería más interesante aprender para un sólo desarrollador que principalmente hace aplicaciones de pequeñaa y mediana envergadura? CakePHP, Codeigniter (o Kohana?) o Symfony2???
Un saludo y a seguir así de bien!
Actualmente estamos empezando con Symfony 2 en un proyecto grande y es más que interesante.
Normalmente esperamos unos meses después de la salida del framework para estudiarlo y ver si empresarialmente nos interesa 😉
La verdad es que ha mejorado mucho del anterior Symfony que ya era impresionante.
Con CakePHP hemos trabajado poco, algún proyecto heredado de otra agencia y ha cambiado muchísimo desde 2005 que fue cuando lo vimos por primera vez…
Para empezar sin ninguna duda te recomendamos CodeIgniter, la curva de aprendizaje es muy breve!
Estimado elad,
en la Conclusión (arriba), mencionas que en «nitsnets | studios», desarrollan en CodeIgniter apoyado con librerías de Pear y Zend Framework y otras de desarrollo propio. Me gustaría saber si puedes contarnos un poco cuales son las librerías de apoyo de Pear y Zend Framework y por que no usar las propias de CI (en caso de que estas existan).
Por último, ya que el post es del 2010 y ya estamos en 2012, ¿aún se apoyan con dichas librerías? ¿o la actual versión de CI 2.1.0 incluye mejoras con las cuales ya no es necesario apoyarse con Pear o Zend?
PD: Muy bueno el post
Saludos.
Buenas Richard:
Tienes razón ha pasado tiempo desde 2010.
Como decía en el comentario anterior hemos empezado a realizar un proyecto en Symfony 2.0 y tenemos bastantes esperanzas puestas en él ya iremos comentando.
Finalmente con YII http://www.yiiframework.com/ no nos hemos metido pero también parecía una opción interesante.
Te cuento un poco, seguimos utilizando CodeIgniter para los proyectos del día a día, en su versión 2.1.0 http://www.codeigniter.com
Sobre las librerías entre otras utilizamos:
– NuSOAP (http://codeigniter.com/wiki/CI_Nusoap_Library): web services toolkit for PHP.
– SimplePie (http://simplepie.org/wiki/plugins/start#codeigniter): rss-atom feed parsing .
– Wick (http://codeigniter.com/wiki/Wick): HMVC.
– PHP-ExcelReader (http://sourceforge.net/projects/phpexcelreader): lectura de ficheros de Excel.
– DOMPDF ( http://code.google.com/p/dompdf/): (PHP5 HTML to PDF renderer.
– OpenTok (https://github.com/opentok/OpenTok-CodeIgniter-Plugin): Servicio de videoconferencia OpenTok.
– Smart Image Resizer ( http://shiftingpixel.com/2008/03/03/smart-image-resizer/): Tratamiento de imágenes.
– Twitter Oauth (http://codeigniter.com/wiki/OAuth_for_Twitter): Conexión con la API de Twitter.
– Zend_Gdata_YouTube (http://code.google.com/intl/es/apis/youtube/developers_guide_php.html): librerias zen para la conexión con los gdata de Google como en Youtube.
– html_to_text (http://code.google.com/p/iaml/source/browse/trunk/org.openiaml.model.runtime/src/include/html2text/html2text.php?r=1820): Helper que convierte un documento HTML en texto plano.
También creamos nuestras propias librerías heredadas de otras mejorándolas o desde cero.
Todo esto daría para escribir varios interesantes post o artículos.
Las librerías son interesantes pero creo que los conceptos incluso más. Te recomiendo que veas nuestra conferencia sobre conceptos que publicamos en su día en el post sobre la Industralización de la web
http://www.lostiemposcambian.com/blog/web-2-0/industrializacion-en-la-web-conferencia-adwe/
espero que te sirva toda esta información
un saludo
Excelente articulo, yo también uso Codeigniter y no podría estar mas contento.. es un gran framework, liviano y poderoso.
Saludos a todos. Muy buen artículo. En mi experiencia les puedo ofrecer las siguientes recomendaciones:
1) Si están empezando su primer proyecto en PHP o no tienen mucha experiencia, no lo piensen dos veces y dedíquense a Codeigniter. ¿Por que esto?, simplemente es mas fácil de aprender a corto plazo, en menos de un Mes ya estarán desarrollando proyectos, a parte, pueden adaptar Jquery y Ajax de forma muy simple y rápida en el lado cliente. Por otro lado, si les exigen un proyecto de entrega inmediata definitivamente es la mejor opción y si poseen un equipo de trabajo en una empresa es mas fácil adaptar a nuevos miembros del equipo por su sencilléz.
2) ¿Cuándo pueden usar Symfony2? Úsenlo exclusivamente para proyectos de gran escala que necesiten mantenimiento a largo plazo o para cualquier emprendimiento. Symfony es un excelente framework que requiere de mucha pasiencia y dedicación de Meses, con este se aprende prácticamente un lenguaje y filosofía de desarrollo nuevo, está basado en la filosofía de trabajo Japonesa de Ruby on Rails. Adicionalmente en Symfony 2 pueden desarrollar sitios Web basados en Drupal y aplicaciones Web para dispositivos móviles (Android, IOS, Blackberry, entre otros) orientadas a servicios (contratan a un servidor).
Conclusión: Codeigniter para proyectos pequeños e inmediatos y Symfony2 para proyectos de gran escala y envergadura.
Hola chic@s,
Para todos aquellos que os estéis iniciando en CodeIgniter podéis adquirir este divertido manual en Amazon, espero sirva de ayuda, se llama MVC CodeIgniter para simpáticos newbies, tenéis la ficha aquí http://programarivm.com/portfolio/curso-mvc-code-ignite/
y el enlace Amazon aquí
http://www.amazon.es/CodeIgniter-simp%C3%A1ticos-newbies-desarrollo-ebook/dp/B00CNUL47I/ref=sr_1_2?ie=UTF8&qid=1367922454&sr=8-2&keywords=codeigniter
Espero sirva de ayuda.
Saludos,
Hola a todos,
Muy buen articulo, estoy trabajando en codeignter, me resulta mu rapido aunque no tiene ORM, por lo que estoy evaluando entre Doctrine o Datamapper.
Ya jugue un poco con datamaper, y me resulto bastante comodo. Ahora estoy entrando al mundo de doctrine, pero me esta costando un poco ponerlo a andar…
encontre una aplicacion bastante interesante desarrolado en CI que propone un marco de soporte al desarrollador, con un panel de admin ya creado, un crud, soporte de lenguaje y sesiones. Pero sin ORM 🙁
Me gustaria saber que opinan ustedes.
ci bonfire: http://cibonfire.com
Buenas Ginuxx, gracias por los comentarios! Nos animan a continuar escribiendo.
Sobre el ORM te recomiendo Doctrine, una vez le pilles el tranquillo lo vas a agradecer muchísimo.
No conocía CI Bonfire, sin duda lo vamos a estudiar. Tiene una pinta increible!
gracias
y ahora ya en 2013 que están usando? que otras cosas nuevas ah aprendido?
Buenas Ángel:
Pues estamos queriendo sacar tiempo para hablar de tecnologías en 2013 😉
Actualmente seguimos trabajando en PHP con CodeIgniter http://www.codeigniter.com; prácticamente todo.
Hemos adoptado el famosísimo framework de frontend HTML/CSS Bootstrap http://getbootstrap.com/ con el que se ha hecho Twitter para la estandarización de nuestros proyectos a nivel de HTML.
Utilizamos a diario jquery http://www.jquery.com para javascript también con javascript y la imprescindible librería para animación Tweenlitejs http://www.greensock.com/get-started-js/
Para las aplicaciones web (e incluso alguna web) estamos trabajando con el framework de javascript de Google http://www.angularjs.org/. Como hemos hablado alguna vez en el blog, aquí tienes un hola mundo: http://www.lostiemposcambian.com/blog/javascript/angularjs-framework-javascript-para-webapps/ y animaciones en angularjs http://www.lostiemposcambian.com/blog/javascript/animaciones-transiciones-angularjs/
Nuestra próxima aventura es probar más frameworks de PHP porque pese a estar muy contento del rendimiento de CodeIgniter estamos buscando algo más. En principio estamos mirando Laravel4 http://laravel.com/ pero esto aún no es una decisión tomada (en años posteriores estuvimos pensando volver a Symfony2 o probar YII). Si finalmente lo adoptamos esperamos poder hablar de ello y las ventajas que tiene.
Así que avanzando poco a poco!!!
Espero que te sirva y pronto podamos escribir más sobre el tema 😉
un abrazo
en pocas palabras los frameworks son para lamers.
Hola, quiero agregar un aporte, desde hace unos años he trabajado con CodeIgniter. Hace poco terminé un proyecto que me llevó la mitad de tiempo de lo estimado, lo hice con DynProj (www.dynproj.com). Con ésta herramienta avancé mucho y cuando necesité realizar algo puntual sólo descargué el proyecto y continué trabajando en él ya que devuelve un proyecto en CodeIgniter, jQuery, jEasyUI y con base de datos MySQL (que también te crea el script).
Espero que les sirva.
saludos!
Buenas Pedro:
Gracias por el aporte.
En la actualidad estamos migrando parte de nitsnets | studios a Laravel (http://www.laravel.com) y pronto hablaremos largo y tendido de ello.
Espero que os sea de utilidad 🙂