Mi entorno de desarrollo para SugarCRM

En este artículo voy a hacer un pequeño repaso a las principales herramientas que utilizo en mi trabajo desarrollando módulos para SugarCRM.

En general la mayoría de las herramientas son válidas para el desarrollo de cualquier aplicación web basada en PHP.

Este entorno de desarrollo es el resultado de mucho tiempo probando diversas aplicaciones y formas de trabajar. La elección final de los programas no responde solo a criterios técnicos sino (y en ocasiones únicamente) a gustos personales. Por otro lado hay aplicaciones que descarté en su día que posíblemente hayan mejorado estos años. Así que desde aquí os animo a que me hagáis sugerencias o contéis cómo es vuestro entorno de desarrollo para aplicaciones web.

Sistema base: Ubuntu y servidor LAMP

Aunque últimamente desarrollo usando Ubuntu casi todas las aplicaciones que utilizo son multiplataforma por lo que podréis usarlas sin (demasiados) problemas sobre Windows.

Uso Linux por varias razones:

  • Es software libre.
  • Ya trae muchas de las herramientas que utilizo como programador.
  • El gestor de paquetes me hace muy fácil instalar las que me faltan.

Y de todas las distribuciones de Linux elegí Ubuntu por que es la que menos tiempo me quita en mantenimiento, aunque en muchas ocasiones su simplicidad hace que se quede corto en funcionalidades o rendimiento con respecto a otras distribuciones.

Para el desarrollo de cualquier aplicación PHP se necesita al menos un servidor LAMP (Linux + Apache + MySql + PHP) o bien WAMP (con Windows). En mi caso en su día instalé XAMPP por su facilidad de montaje (sobre todo en Windows) y por su portabilidad. Aunque montar una plataforma LAMP en Ubuntu se realiza con un solo comando:

  sudo tasksel install lamp-server

Programación

Para programar utilizo:

Eclipse

Es uno de los más potentes IDEs disponibles y soporta todo tipo de lenguajes. Hay que tener en cuenta que para desarrollar aplicaciones PHP no solo es necesario contar con soporte para el lenguaje PHP sino tambien para Javascript, HTML, CSS, XML ...

He probado muchos editores e IDEs y al final siempre acabo quedándome con Eclipse. No es el mejor en muchos de los lenguajes necesarios pero si es el más equilibrado entre todos.

Además del IDE base utilizo los siguientes plugins y complementos:

  • PDT: PHP Development Tools (www.eclipse.org/pdt) Son una serie de plugins que permiten editar código PHP, HTML, Javascript, ect. Se pueden instalar sobre un Eclipse cualquiera o descargar directamente una distribución de Eclipse que lo incluya.
  • Sql Explorer: (eclipsesql.sourceforge.net) Añade a eclipse capacidades para navegar por las tablas de diversas bases de datos, ver el contenido y ejecutar consultas.
  • RexxDev: (rexxdev.sourceforge.net) Soporte para editar archivos shell. Yo lo utilizo para crear scripts de bash para automatizar tareas como clonar sitios web o instalaciones automáticas de SugarCRM.
  • SubClipse: (subclipse.tigris.org) Gestión de versiones con Subversion integrada en Eclipse.
  • Mylyn: (www.eclipse.org/mylyn) Gestión de tareas y proyectos. Lo uso principalmente porque tiene integración con Trac (gestión de tareas, código, wiki...) 

Firefox

En la parte del cliente web, nada mejor que Firefox con extensiones de desarrollador:

  • Firebug: La herramienta de desarrollo web por excelencia. Imprescindible especialmente si trabajamos con Javascript o Ajax y muy útil para temas gráficos y de maquetación. Permite modificar el código HTML y ejecutar código Javascript viendo el resultado en tiempo real sobre nuestra página.
  • FirePHP: El complemento perfecto para el desarrollo PHP con Firebug. Permite el registro de mensajes y objetos que se muestran en la consola de Firebug. Los objetos complejos y arrays se visualizan en forma de arbol y con sintaxis de colores. Se complementa con una librería que hay que instalar en el servidor PHP.
    Web Developer Toolbar: Conjunto de herramientas de utilidad para desarrollar. En general casi todas sus funcionalidades son cubiertas por Firebug, pero tiene alguna que otra que resulta de mucha utilidad, especialemente para trabajar con formularios.
  • Dummy Lipsum: Genera código de relleno para formularios.
  • Colorzilla: Permite medir los colores que se ven en la web.

Otros

SugarDevTools: (www.sugarforge.org/projects/sugardevtools) Es un módulo de desarrollo para SugarCRM que permite realizar ciertas tareas de administración desde accesos directos, acceder a configuraciones ocultas y mostrar el registro de ejecución entre otras cosas. Lamentáblemente no hay versió todavía disponible para las últimas versines de SugarCRM.

Chrome: El navegador web de Google es bastante más rápido de Firefox y ya incluye herramientas de desarrollo parecidas a las que ofrece Firebug (aunque, en mi opinión, menos completas). Entre otras cosas, suelo usarlo cuando necesito tener 2 sesiones diferentes abiertas o cuando Firebug se pone lentorro (cuando los layouts de las webs son muy complejos)

Gestión del proyecto

TRAC

La principal herramienta que utilizo para llevar control del proyecto es TRAC. Trac me permite llevar el control de todas las tareas, la documentación y el código fuente.

Gracias a TRAC puedo tener en un solo sitio, accesible vía web, todos los archivos que conforman un proyecto, las tareas, y el código fuente. Es muy fácil relacionar cambios en el código con tareas o con la documentación gracias a su sintaxis wiki.

De esta manera tengo una referencia para el futuro de que cambios hice en cada parte del código, cuanto tardé, los problemas que me encontré, ect...

Subversion

Todo proyecto software necesita una correcta gestión de las versiones. Para ello uso Subversion (SVN) que se integra perfectamente tanto con Eclipse como con TRAC.

Como no todos los ficheros generados se tratan desde eclipse también utilizo de cliente de SVN RabittVCS , que se integra directamente con el explorador de archivos Nautilus. Si trabajais en Windows teneis Tortoise SVN que realiza una tarea similar.

 

Tanto TRAC como subversion han sido superados por otras aplicaciones que, en mi opinión, son más completas. Cuando tenga algo de tiempo probablemente pruebe y migre a alguna de ellas:

  • Redmine: Para la gestión del proyecto. Es muy similar a TRAC pero se le añade soporte multiproyecto.
  • Git: Para la gestión de versiones.

Otras herramientas

A parte de las típicas herramientas orientadas al la generación de código fuente, eventualmente hay que echar mano de otras para ciertas tareas:

  • Bash: Para mi una herramienta básica. La utilizo para realizar automatizaciones como, desplegar un Sugar para desarrollo, clonar una aplicación web o publicar los cambios en un servidor remoto. Cuando desarrollaba en Windows también usaba habitualmente bash mediante CygWin. Si además de Sugar programas también en Drupal (como es mi caso) la consola se hace aún más potente gracias a Drush.
  • Rsync: Herramienta de sincronización de ficheros. La uso desde los scripts de bash para replicar el sistema de archivos de diversas aplicaciones web. Tiene la ventaja de que solo transmite los cambios y que puede funcionar a través de SSH. Esto hace que se pueda automatizar fácilmente la publicación de la web en un servidor de hosting.
  • Inkscape y Gimp: Por si hay que hacer algún gráfico. En Sugar esto no es muy habitual pero en otro tipo de desarrollos ocurre con más frecuencia.
  • PHPMyAdmin: Administración de las bases de datos a través de una aplicación web. Es un complemento más al SqlExplorer y para algunas tareas me resulta más cómodo.

 

Re: Desarrollo de un CRM

Hola

Desarrollar un CRM en web se puede hacer con múltiples herramientas. Aquí solo cuento las que usaba yo en su momento (hace ya 2 años) y centradas en un CRM concreto (SugarCRM) y un lenguaje (PHP).

Desde entonces las herramientas de desarrollo han evolucionado bastante.

Si lo que buscas es crear una nueva aplicación desde cero solo tienes que buscar información sobre creación de aplicaciones web. Al fin y al cabo, en cuanto a herramientas a usar, da igual que sea un CRM, un ERP, un sofware de facturación o un CMS.

En cualquier caso, intenta no reinventar la rueda. Construye tu aplicación sobre algún framework y si este es específico para construir CRMs mejor.

Un saludo

Desarrollo de un CRM

hola...Estoy planeando un proyecto de tesis que consiste en el desarrollo de un CRM necesito saber que herramientas usar, la intencion es trabajar directamente des de un servidor web, me podrian ayudar??:)