<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ENDER SOFTWARE, desarrollo de software a medida &#187; Tecnología</title>
	<atom:link href="http://www.ender.es/category/tecnologia/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ender.es</link>
	<description>Factoría de software</description>
	<lastBuildDate>Wed, 14 Jul 2010 10:36:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Desarrollo para terminales móviles</title>
		<link>http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/</link>
		<comments>http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 14:57:10 +0000</pubDate>
		<dc:creator>javi</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=755</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Últimamente en Ender nos estamos planteando la posibilidad de comenzar a desarrollar aplicaciones para dispositivos móviles relacionadas con nuestros sistemas. Cada vez los usuarios están más acostumbrados a migrar las funciones<a href="http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;t=Desarrollo+para+terminales+m%C3%B3viles" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;title=Desarrollo+para+terminales+m%C3%B3viles&amp;srcUrl=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;srcTitle=Desarrollo+para+terminales+m%C3%B3viles&amp;snippet=%C3%9Altimamente%20en%20Ender%20nos%20estamos%20planteando%20la%20posibilidad%20de%20comenzar%20a%20desarrollar%20aplicaciones%20para%20dispositivos%20m%C3%B3viles%20relacionadas%20con%20nuestros%20sistemas.%20Cada%20vez%20los%20usuarios%20est%C3%A1n%20m%C3%A1s%20acostumbrados%20a%20migrar%20las%20funciones%20que%20tradicionalmente%20realizaba%20un%20ordenador%20hacia%20sus%20tel%C3%A9fonos%2C%20n" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;title=Desarrollo+para+terminales+m%C3%B3viles&amp;summary=%C3%9Altimamente%20en%20Ender%20nos%20estamos%20planteando%20la%20posibilidad%20de%20comenzar%20a%20desarrollar%20aplicaciones%20para%20dispositivos%20m%C3%B3viles%20relacionadas%20con%20nuestros%20sistemas.%20Cada%20vez%20los%20usuarios%20est%C3%A1n%20m%C3%A1s%20acostumbrados%20a%20migrar%20las%20funciones%20que%20tradicionalmente%20realizaba%20un%20ordenador%20hacia%20sus%20tel%C3%A9fonos%2C%20n&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Desarrollo+para+terminales+m%C3%B3viles+-+http://b2l.me/z5gpj&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;title=Desarrollo+para+terminales+m%C3%B3viles" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p><a href="http://www.ender.es/wp-content/uploads/2010/04/iphone-vs-android.jpg"><img class="size-medium wp-image-756 alignright" title="iphone-vs-android" src="http://www.ender.es/wp-content/uploads/2010/04/iphone-vs-android-300x222.jpg" alt="" width="300" height="222" /></a>Últimamente en Ender nos estamos planteando la posibilidad de comenzar a desarrollar aplicaciones para dispositivos móviles relacionadas con nuestros sistemas. Cada vez los usuarios están más acostumbrados a migrar las funciones que tradicionalmente realizaba un ordenador hacia sus teléfonos, netbooks u otros dispositivos de menor capacidad de proceso. Y en el mundo empresarial, hacia el que nos orientamos, las extranets cada vez realizan un mayor número de funciones en sustitución del software &#8216;tradicional&#8217;. Es fácil ver que ambas tendencias se combinarán en el futuro, y si bien los terminales móviles de gama alta no deberían tener ningún problema en utilizar una extranet básica, siempre será mucho más eficiente utilizar una aplicación específica.</p>
<p>Por tanto, allá vamos, a explorar las posibles opciones. Desarrollar para dispositivos móviles no es como desarrollar para ordenadores. En los ordenadores, la opción es clara: IBM PC compatible con alguna de las distintas versiones de windows acumula el noventa y pico por ciento del mercado. Salvo que controles la infrastructura sobre la que va a correr la aplicación, no queda otra opción que programarla para windows, por pura estadística. En el mundo móvil el panorama es muy distinto&#8230; No hay, ni de lejos, un claro dominador del<a href="http://www.canalys.com/pr/2010/r2010021.html"> mercado de los sistemas operativos para móviles</a>: Android (5% en 2009), Blackberry (21%), Windows Mobile (9%), iPhone OS (15%), Symbian (49%), Palm (&gt;3%)&#8230; Además, los propios porcentajes son engañosos: Los mayores porcentajes los poseen sistemas operativos que llevan más (bastante más) tiempo en el mercado, y por tanto han tenido tiempo para que un mayor número de dispositivos de varias generaciones funcionen sobre ellos&#8230; lo que no significa que en el futuro sigan haciéndolo.</p>
<p>De hecho, tanto <a href="http://es.wikipedia.org/wiki/Symbian_OS">Symbian</a> como <a href="http://es.wikipedia.org/wiki/BlackBerry">Blackberry</a> parecen sistemas destinados a morir. Cada día son menos los nuevos terminales que corren sobre estos SOs, siendo sustituidos por <a href="http://es.wikipedia.org/wiki/Android">Android</a>, <a href="http://es.wikipedia.org/wiki/Windows_Mobile">Windows Phone</a> (antiguo Mobile) o versiones nativas de linux. Por tanto no parecen una buena opción como elección, hoy por hoy.</p>
<p>Windows Phone está siendo adaptado como sistema por bastantes terminales, cuenta con la ventaja de tener una gran integración con los PC que corren sobre windows, pero no parece terminar de convencer a los usuarios. Sin duda, si hoy por hoy hay dos sistemas operativos para móviles estrella son Android y iPhone OS. Son con diferencia los más avanzados técnicamente, y ambos están &#8220;en pañales&#8221;, mostrando sólo el comienzo de su potencial, por lo que todo el mundo apuesta por uno o por otro para convertirse en el &#8220;Windows&#8221; de los teléfonos móbiles.</p>
<p>Android es hijo de Google. Es un sistema operativo libre y abierto, que permite que cualquier fabricante lo incluya en su dispositivo. Así, no sólo existen en el mercado teléfonos móviles que lo lleven, también hay toda una gama de otros dispositivos (tablets, netbooks, etc) que funcionan sobre él.</p>
<p>Iphone OS, a su vez, es propiedad de Apple y es el sistema sobre el que corren tanto los iphone como los nuevos ipods. Ningún otro fabricante puede utilizarlo, pero el golpe que apple dio al mercado de los smart phones con el iphone (acaparando un buen porcentaje del mercado en muy poco tiempo), y el hecho de que el dispositivo estrella de apple (iPod, lider indiscutible de otro mercado casi tan grande como el de los terminales móviles) también lo emplee hacen que sea una opción muy atractiva para los desarrolladores de aplicaciones.</p>
<p>En resumen: Se trata de elegir desarrollar para iPhone o para Android. Y no se trata sólo de elegir la opción que te lleve a un mayor número de clientes, o la que tenga mejor perspectiva de futuro. Como vamos a ver, el problema es mucho más profundo.</p>
<p>Mucha gente no conoce como funciona el proceso de desarrollo de una aplicación, así que vamos a explicar un par de conceptos claves. Para desarollar software existe una gran variedad de lenguajes&#8230; El &#8220;lenguaje&#8221; original de los procesadores de los ordenadores, como casi todo el mundo sabe, es un lenguaje binario. Largas cadenas de ceros y unos que hacen que el procesador haga una cosa u haga otra. Obviamente, &#8220;hablarle&#8221; directamente al procesador es casi imposible por lo extremadamente complejo, para eso existen los lenguajes de programación. Los lenguajes son abstracciones de este lenguaje binario. Es decir, si quieres que el ordenador imprima en la pantalla &#8220;hola mundo&#8221; no es necesario que te aprendas cómo ordenárselo en binario, sino que según el lenguaje que escojas escribiras algo parecido a write(&#8216;hola mundo&#8217;) o print(&#8216;hola mundo&#8217;). A partir de ahí, ese lenguaje se traducirá automáticamente al lenguaje del procesador para que el ordenador entienda lo que quieres que haga.</p>
<p>La cuestión es que hay cientos, miles de lenguajes. Muchos son similares, todos hacen más o menos lo mismo, pero sigue habiendo cientos. Algunos son más apropiados para unas tareas y otros para otras, pero al final, casi cualquier cosa se puede hacer con cualquier lenguaje y es sólo una opción personal. A su vez, cada lenguaje tiene un gran número de &#8220;librerias&#8221;. Las librerías son packs de código que te permiten realizar alguna acción complicada sin tener que programarla una y otra vez. Por ejemplo, para calcular una raiz cuadrada no haremos todos los pasos que serían necesarios cuando la resolvemos &#8220;a mano&#8221;: Le indicaremos al ordenador que vamos a usar la librería &#8220;matemáticas.lib&#8221; y con ella podremos simplemente usar la llamada &#8220;raizcuadrada(25)&#8221;. Es un concepto un poco extraño para alguien que no ha programado nunca, pero en realidad es la base de la programación profesional. Un programa normalmente usa un número bastante grande de estos componentes, conteniendo al final tanto o más código importado y ensamblado  como código propio y original.</p>
<p>¿Por qué explicar todo este rollo? Porque sino no es fácil explicar por qué la opción de desarrollar para iPhone es tan mala. La razón: La <a href="http://www.eff.org/files/20100302_iphone_dev_agr.pdf">licencia de desarrollo de Apple</a>. Apple tiene una concepción de sus productos que intenta dejarlo todo <a href="http://www.eff.org/deeplinks/2010/03/iphone-developer-program-license-agreement-all">atado y bien atado</a>. Pretenden controlar todo, desde la fabricación de los componentes hasta el software que corre en ellos. Y lo han llevado un paso más allá con el desarrollo para iphone. En desarrollo de software no es habitual tener que pagar una licencia para desarrollar programas para una plataforma. Pagar por poder usar ciertos programas o componentes sí, pero no por &#8220;el derecho&#8221; de desarrollar software. Pero Apple, en su intento por controlar qué se desarrolla y que no para sus sistemas, la ha introducido. Cien dólares de licencia anual para ser un desarrollador certificado por Apple. Sin esta certificación, tus programas no estarán en la tienda iphone, y por tanto no podrán funcionar en ningún teléfono ni ipod (Ya que no se puede instalar software en estos dispositivos de ninguna otra manera). La licencia no es costosa, pero tiene problemas mucho más profundos que el dinero: Apple se reserva el derecho de echar por tierra todo tu trabajo. Puedes  desarrollar una aplicación y que al final Apple decida no aprobarla, tirando abajo meses de trabajo. Y lo que es aún peor, se reservan el derecho de cambiar las condiciones que rigen qué es aceptable o qué no. En su última revisión de la licencia incluyeron una nueva cláusula que restringe los lenguajes en los que se puede programar a los tres o cuatro elegidos por ellos, y prohibe, directamente, el uso de librerías externas que no hayan proporcionado ellos mismos. En el mundo de la programación, esto es como decirle a un mecánico que no puede utilizar ninguna herramienta, excepto un destornillador de un modelo y tamaño específicos, para hacer cualquier cosa.</p>
<p>Android, por el contrario, es un sistema operativo libre. Su código fuente <a href="http://source.android.com/">está disponible</a> para cualquiera que quiera verlo. Cualquiera puede desarrollar aplicaciones sin tener que pagar nada, sin que nadie pueda decirte que no, sin que nadie tire por tierra tu trabajo. No hay prohibiciones en Android. En ese sentido, es muy parecido a lo que ocurre en el mundo del PC: Cualquiera puede hacer cualquier cosa, de la manera quiera hacerla. Las opciones son infinitas. Todo esto se ve claramente en el hecho de que el número de aplicaciones disponibles para android crece exponencialmente, y que cada vez más fabricantes de terminales lo ofrecen como base de sus dispositivos.</p>
<p>Durante todo el año pasado, el crecimiento del iPhone parecía imparable. Su tecnología era mucho más avanzada que la de los sistemas operativos rivales y el usuario lo notaba y elegía. El lanzamiento de Android y su generalización en los últimos meses parece enfrentarse directamente a esta tendencia. Android rivaliza (o supera) al iPhone OS en tecnología, y los teléfonos que lo incluyen suelen ser de una gama tan alta como el iphone.</p>
<p>La diferencia, para nosotros, es que Apple, en su intento por controlarlo todo, ahoga a los desarrolladores. Las condiciones que impone son draconianas, prácticamente nunca vistas en el mundo del desarrollo del software. No tienes derechos sobre tu propio producto, te limita las herramientas que puedes utilizar para desarrollarlo, te arriesgas a que sus propias condiciones cambien unilateralmente. Y esto no son condiciones en las que queramos desarrollar.</p>
<p>Android, para nosotros, es el futuro.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 260px; width: 1px; height: 1px;">http://es.wikipedia.org/wiki/BlackBerry</div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;t=Desarrollo+para+terminales+m%C3%B3viles" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;title=Desarrollo+para+terminales+m%C3%B3viles&amp;srcUrl=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;srcTitle=Desarrollo+para+terminales+m%C3%B3viles&amp;snippet=%C3%9Altimamente%20en%20Ender%20nos%20estamos%20planteando%20la%20posibilidad%20de%20comenzar%20a%20desarrollar%20aplicaciones%20para%20dispositivos%20m%C3%B3viles%20relacionadas%20con%20nuestros%20sistemas.%20Cada%20vez%20los%20usuarios%20est%C3%A1n%20m%C3%A1s%20acostumbrados%20a%20migrar%20las%20funciones%20que%20tradicionalmente%20realizaba%20un%20ordenador%20hacia%20sus%20tel%C3%A9fonos%2C%20n" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;title=Desarrollo+para+terminales+m%C3%B3viles&amp;summary=%C3%9Altimamente%20en%20Ender%20nos%20estamos%20planteando%20la%20posibilidad%20de%20comenzar%20a%20desarrollar%20aplicaciones%20para%20dispositivos%20m%C3%B3viles%20relacionadas%20con%20nuestros%20sistemas.%20Cada%20vez%20los%20usuarios%20est%C3%A1n%20m%C3%A1s%20acostumbrados%20a%20migrar%20las%20funciones%20que%20tradicionalmente%20realizaba%20un%20ordenador%20hacia%20sus%20tel%C3%A9fonos%2C%20n&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Desarrollo+para+terminales+m%C3%B3viles+-+http://b2l.me/z5gpj&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/&amp;title=Desarrollo+para+terminales+m%C3%B3viles" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/04/desarrollo_para_terminales_moviles/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>El software libre en tu empresa: qué puedes hacer y qué no</title>
		<link>http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/</link>
		<comments>http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 16:40:30 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=608</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! En todas las empresas, a día de hoy, hace falta software&#8230; ya sea para escribir cartas, para llevar la contabilidad o para publicar cosas en la web, sin software a día<a href="http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;t=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;srcUrl=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;srcTitle=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;snippet=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;summary=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no+-+File: /data/app/webapp/functions.php<br />Line: 66<br />Message: Duplicate entry 'z5snX' for key 'code'&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>En todas las empresas, a día de hoy, hace falta software&#8230; ya sea para escribir cartas, para llevar la contabilidad o para publicar cosas en la web, sin software a día de hoy no se hace casi nada. Así que&#8230; ¿de dónde lo sacamos? Se me ocurren tres formas de obtener software (que en realidad son cuatro):</p>
<ul>
<li>Pagar por el software: ya sea pagar por licencias de uso de un software que ya existe, como comprar Windows o la Office, o pagando a empresas como nosotros para que os hagan el software a medida.</li>
<li>Tener software pirata: hace unos años esto era, de largo, lo más común&#8230; pero creo que poco a poco va disminuyendo, cada vez hay menos. Entre las campañas anti piratería y los sistemas anti copia, con la conexión ubicua a internet esto es cada vez más difícil.</li>
<li>Usar software libre. Es una alternativa muy atractiva, claro, por varias razones que ahora explicaré&#8230; sin embargo, hay que tener en cuenta un par de cosas, sobre todo en cuanto a las licencias a través de las cuáles se <a href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/170px-Heckert_GNU_white.svg.png"><img class="alignright" title="GNU" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/170px-Heckert_GNU_white.svg.png" alt="Licencia GPL" width="170" height="166" /></a>distribuye el software.</li>
</ul>
<h2>¿Software libre, o software gratis?</h2>
<p>Puede ser una de las dos cosas, y también las dos&#8230; la confusión puede venir de la palabra <em>free</em>, que en inglés significa tanto &#8216;libre&#8217; como &#8216;gratis&#8217;. Por eso, en inglés, cuando se habla de &#8216;free software&#8217; se distingue entre <strong>free, as in beer</strong> (es decir, gratis, como en &#8216;cerveza gratis&#8217;) y <strong>free, as in speech</strong> (es decir, libre, como en &#8216;libre expresión&#8217;).</p>
<p>Yo entiendo software libre como el que está abierto a modificaciones externas&#8230; es decir, se permite el acceso libre al código fuente y a la documentación de desarrollo, de forma que cualquiera pueda obtener dicho software, y hacer el uso que necesite, siempre que se ajuste a los términos de la licencia de distribución del software que sea. Cuando alguien libera un software, lo hace bajo una <a title="Licencias de uso" href="http://es.wikipedia.org/wiki/Software_libre#Tipos_de_licencias" target="_self">licencia de uso</a>; es decir, una serie de condiciones que hay que cumplir si usas ese software. Lo que puedes o no puedes hacer, por tanto, viene definido por los términos de dichas licencias. No me voy a extender en los términos de cada licencia, está bien explicado en la <a title="wikipedia" href="http://es.wikipedia.org/wiki/Software_libre" target="_blank">wikipedia</a>, sino que me interesa más reflexionar sobre qué puedes y qué no puedes hacer con el software dependiendo de la licencia que tenga.</p>
<p>Es decir, puedes tener software libre que es gratuito (que es el caso más común, que todos conocemos), pero también hay otras alternativas: puedes tener software libre que no es gratuito (más abajo hablaré de ello), y software gratis que no es libre, como todo el software freeware de los 90.</p>
<h2>La madre del cordero: el copyleft</h2>
<p>La filosofía básica que envuelve a la licencia libre más restrictiva, la <a title="licencia GPL" href="http://es.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">GPL</a>, es lo que se llama el <a title="copyleft" href="http://es.wikipedia.org/wiki/Copyleft" target="_blank">copyleft</a>. Este concepto viene como oposición directa del copyright, y se basa en la idea de compartir libremente las obras producidas (no se aplica sólo a software, sino a cualquier obra de producción propia). La idea básica es la que cualquiera pueda acceder a tu software, en este caso, y hacer las modificaciones que quiera, las mejoras o los cambios, sin ninguna limitación y sin tener que pagar derechos de autor. Pero esto no significa que este modelo de licencia no tenga ninguna restricción, todo lo contrario. La idea es que, si el software que se ha liberado tiene copyleft, todas las derivaciones del mismo tienen que tener copyleft. Es decir, no se puede coger un software libre, hacer unas modificaciones, y generar un producto nuevo que no sea libre.  Cuidado, esto no significa en absoluto que no se pueda cobrar por el trabajo. <strong>GPL no significa gratis, sino libre</strong>.</p>
<p>A la hora de evaluar si podemos usar un software que está distribuido  sobre una licencia libre tenemos que tener en cuenta qué es lo que vamos  a hacer con él. Si es para uso privado, podemos coger el software, modificarlo, cambiarlo como queramos, no tiene ningún problema&#8230; el asunto viene cuando lo que queremos hacer es distribuir las modificaciones que hemos hecho&#8230; entonces es cuando entra en juego el asunto <strong>viral </strong>que tiene la GPL: cualquier producto que incluya software GPL como alguno de sus componentes, debe ser GPL a su vez.</p>
<p>Hay licencias menos restrictivas, como la <a title="LGPL" href="http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License" target="_blank">LGPL</a>, que permiten el enlace de software LGPL con software de otros modelos de licencia y licenciar el software obtenido de la forma que se quiera&#8230; lo fundamental de la licencia GPL es que todo lo que contenga al menos una linea de código GPL debe ser distribuido con la misma licencia</p>
<h2>Libre no significa gratis necesariamente &#8211; un ejemplo con WordPress</h2>
<p>O no habría nicho de negocio para nadie&#8230; ninguna de las licencias de software libre dicen que tenga que ser gratuito. Lo que dice la GPL es que el software que tú distribuyas debe serlo utilizando la GPL&#8230; es decir, puedes cobrar por el software, o por el trabajo, pero no puedes decirle al cliente que no puede distribuir libremente ni cambiar el software que le das, porque como está protegido por la GPL, tiene derecho a hacer lo que quiera dentro de la GPL.</p>
<p><a href="http://www.wordpress.org"><img class="alignleft" title="WordPress" src="http://t0.gstatic.com/images?q=tbn:Yduk3uKrjyKpjM:http://en.flossmanuals.net/floss/publish/WordPress/rsrc/WordPress/Introduction/icon_big.png" alt="wordpress" width="125" height="112" /></a>Un ejemplo que estamos utilizando nosotros ahora: cuando los clientes nos piden que les hagamos desarrollos web, estamos utilizando <a title="WordPress" href="http://wordpress.org/" target="_blank">WordPress</a> para hacerlos (de hecho, nuestra propia página está hecha utilizando wordpress). WordPress está distribuido utilizando la licencia GPL y, por tanto, los temas (que son las adaptaciones que cambian el aspecto que tiene la página), también están sujetos a la licencia GPL (como se explica muy bien en este <a title="artículo" href="http://carrero.es/todos-los-temas-de-wordpress-son-gpl/3553" target="_blank">artículo</a>). Esto significa que, si nosotros le desarrollamos un tema especializado a un cliente, nosotros no le podemos exigir al cliente que no cambie o distribuya dicho tema a quién quiera (bueno, nosotros podemos decir lo que queramos, pero el cliente no tiene por qué hacernos caso, ya que la licencia del tema tiene por fuerza que ser GPL). Si queremos, podemos poner una tienda de temas WordPress y que la gente los compre, siempre y cuando nosotros no limitemos las acciones de nuestros clientes dentro de la GPL.</p>
<p>Siempre había pensado que la GPL era una licencia muy restrictiva, y creo que es uno de esos problemas de <a title="Lost in translation" href="http://www.youtube.com/watch?v=yYAS92XPvIM" target="_blank">lost in translation</a>, ya que al leer &#8220;todo software derivado de GPL debe ser GPL&#8221;, y &#8220;GPL es una licencia &#8216;free&#8217;&#8221;, durante años he interpretado que todo software GPL debe ser gratis, y que los derivados también, y esto no es cierto. Una extensión a esta explicación, y un análisis de las implicaciones podéis leerlo <a title="artículo" href="http://www.prelovac.com/vladimir/interesting-wordpress-gpl-implications" target="_blank">aquí</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;t=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;srcUrl=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;srcTitle=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;snippet=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;summary=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no+-+File: /data/app/webapp/functions.php<br />Line: 66<br />Message: Duplicate entry 'z5snX' for key 'code'&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integración continua: proyectos Delphi en Hudson</title>
		<link>http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/</link>
		<comments>http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 17:10:00 +0000</pubDate>
		<dc:creator>leon.domingo</dc:creator>
				<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=264</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Cuando se desarrolla &#8220;en grupo&#8221; hacen faltan varias herramientas para trabajar de una forma eficiente. Una de ellas es la utilización de algún sistema de versiones (Subversion, CVS, mercurial, git, etc),<a href="http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;t=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;title=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson&amp;srcUrl=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;srcTitle=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson&amp;snippet=Cuando%20se%20desarrolla%20%22en%20grupo%22%20hacen%20faltan%20varias%20herramientas%20para%20trabajar%20de%20una%20forma%20eficiente.%20Una%20de%20ellas%20es%20la%20utilizaci%C3%B3n%20de%20alg%C3%BAn%20sistema%20de%20versiones%20%28Subversion%2C%20CVS%2C%20mercurial%2C%20git%2C%20etc%29%2C%20y%20la%20otra%20es%20la%20compilaci%C3%B3n%20autom%C3%A1tica%2C%20lo%20que%20habr%C3%A9is%20visto%20muchas%20veces%20como%20%22nightly%20bui" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;title=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson&amp;summary=Cuando%20se%20desarrolla%20%22en%20grupo%22%20hacen%20faltan%20varias%20herramientas%20para%20trabajar%20de%20una%20forma%20eficiente.%20Una%20de%20ellas%20es%20la%20utilizaci%C3%B3n%20de%20alg%C3%BAn%20sistema%20de%20versiones%20%28Subversion%2C%20CVS%2C%20mercurial%2C%20git%2C%20etc%29%2C%20y%20la%20otra%20es%20la%20compilaci%C3%B3n%20autom%C3%A1tica%2C%20lo%20que%20habr%C3%A9is%20visto%20muchas%20veces%20como%20%22nightly%20bui&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson+-+http://b2l.me/z6c3v&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;title=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>Cuando se desarrolla &#8220;en grupo&#8221; hacen faltan varias herramientas para trabajar de una forma eficiente. Una de ellas es la utilización de algún sistema de versiones (Subversion, CVS, mercurial, git, etc), y la otra es la compilación automática, lo que habréis visto muchas veces como &#8220;nightly builds&#8221;.</p>
<p>Estos sistemas nos permiten por un lado ahorrar tiempo (el programador no tiene que preocuparse de compilar todo el código que forma un producto/proyecto cada vez que hace algún cambio), y por otro generar una salida uniforme e integrada de todos los posibles cambios que se han producido (los cambios de varios programadores &#8220;confluyen&#8221; en único producto compilado que incluye las correcciones y mejoras de todos aquellos). Estos sistemas, lógicamente, están integrados con los sistemas de control de versiones, de modo que los cambios en uno sean detectados por el otro.</p>
<p>Nosotros utilizamos un sistema &#8220;free&#8221; llamado <a href="http://en.wikipedia.org/wiki/Hudson_%28software%29" target="_blank">Hudson</a>. Hudson es una aplicación web (servlet) sobre Apache o Glass fish que nos permite compilar automáticamente nuevas versiones con los cambios que hacemos en el código.</p>
<p>Para que Hudson genere nuevas versiones de un módulo (métodos, aplicaciones, &#8230;) tenemos que configurar un trabajo o <em>job</em> que le indique qué tiene que hacer para generar dicho módulo compilado.</p>
<p>En <strong>ender</strong> creamos (y configuramos) un job por método, por aplicación o por test, esto hace cada &#8220;pieza&#8221; independiente (hasta cierto punto) del resto. Debemos identificar cada uno de estos jobs con un nombre único. Normalmente estos nombres son iguales al nombre del módulo. Cuando hay diferentes módulos con el mismo nombre utilizamos un prefijo para el nombre. Por ejemplo,</p>
<p><em>Alu01 </em>en la vista <strong>Turno</strong><br />
<strong>SQL_</strong>Alu01 en la vista <strong>SQL_Turno</strong></p>
<p>Un trabajo en Hudson puede estar o no dentro de una <strong>vista </strong>(<em>view</em>). Una vista es como un saco dentro del que agrupar ciertos trabajos que están relacionados entre sí. En nuestro caso, esa relación siempre es porque todos ellos pertenecen a un mismo producto/proyecto. No es obligatorio que un trabajo esté dentro de una vista, pero nos permite ver rápidamente todos los trabajos relacionados con un producto/proyecto. Estas vistas son las pestañas que aparecen cuando entramos en la home de Hudson (ARGOS, AFORO, Olympo, IHMSI, etc).</p>
<p>Para crear un nuevo trabajo pinchamos en &#8220;<em><strong>New Job</strong></em>&#8221; en la parte superior izquierda del sitio web de Hudson. Si nos encontramos en una vista, dicho trabajo se creará bajo esa vista. Si estamos en la home se creará sin vista asociada, y posteriormente lo podremos encontrar bajo la vista general &#8220;<em><strong>All</strong></em>&#8220;.</p>
<p><a href="http://www.ender.es/wp-content/uploads/2010/02/hudson_new-job.jpg"><img class="size-full wp-image-275 alignnone" src="http://www.ender.es/wp-content/uploads/2010/02/hudson_new-job.jpg" alt="" width="228" height="90" /></a></p>
<p>Una vez creado (y guardado) un trabajo para acceder de nuevo a la configuración nos dirigiremos a dicho trabajo, pincharemos en él y despúes elegiremos &#8220;<em><strong>Configure</strong></em>&#8220;, en el menú de la izquierda.</p>
<p><a href="http://www.ender.es/wp-content/uploads/2010/02/hudson_configure.jpg"><img class="size-full wp-image-276 alignnone" src="http://www.ender.es/wp-content/uploads/2010/02/hudson_configure.jpg" alt="" width="230" height="258" /></a></p>
<p>Para configurar un nuevo trabajo tenemos que tener en cuenta principalmente lo siguiente:</p>
<ol>
<li>¿Dónde está el código?</li>
<li>¿Cómo se compila el código?</li>
<li>¿Cuándo debe compilarse el código?</li>
</ol>
<p><strong>1. ¿Dónde está el código?</strong></p>
<p>Hablábamos más arriba que los sistemas de control de versiones y los de compilación automática &#8220;deben&#8221; estar integrados. Para ello tenemos que indicar la ruta en el repositorio donde se encuentra dicho código. Esto implica indicar todo el código necesario para compilar dicho módulo, excepto los componentes comunes que ya estén instalados en el servidor donde está <em>corriendo</em> Hudson. Es decir, los componentes que tenemos instalados en <strong>Delphi</strong>.</p>
<p>Bajo el epígrafe &#8220;<em><strong>Source Code Management</strong></em>&#8221; tenemos que poner cada &#8220;pieza&#8221; del código que necesitamos para la compilación.</p>
<p style="text-align: center"><a href="http://www.ender.es/wp-content/uploads/2010/02/hudson_source-code-management.jpg"><img class="size-full wp-image-279 aligncenter" src="http://www.ender.es/wp-content/uploads/2010/02/hudson_source-code-management.jpg" alt="" width="720" height="291" /></a></p>
<p>En el ejemplo estamos diciendo que se descargen dos &#8220;piezas&#8221; de código: <em>AFOROFunc01</em> y <em>Unidades Compartidas</em>, cada una con su ruta correspondiente en el repositorio y un nombre de carpeta local.<br />
<em> svn://peter/Aforo/Trunk/Métodos/AFOROFunc01 -&gt; </em><strong>Source</strong><em><br />
svn://peter/Aforo/Trunk/Métodos/Unidades compartidas -&gt; </em><strong>Unidades Compartidas</strong></p>
<p><strong>svn://</strong> indica el protocolo Subversion<br />
<strong> /peter</strong> indica el servidor<br />
<strong> /Aforo/Trunk/Métodos/AFOROFunc01</strong> indica la ruta dentro del repositorio que reside en el servidor peter.</p>
<p>Cómo se puede ver en la imagen, Hudson permite utilizar dos sistemas de control de versiones diferentes: <strong>CVS </strong>y <strong>Subversion</strong>, o no usar ninguno cuando se trata de trabajos que no dependen de cambios en el código (test diarios, por ejemplo).</p>
<p><strong>2. ¿Cómo se compila el código?</strong></p>
<p>Hudson utiliza órdenes de shell para compilar cada uno de los trabajos. Por tanto, para compilar un trabajo utilizamos el ejecutable del compilador incluido en las diferentes distribuciones de Borland Developer Studio (en nuestro caso <strong>BDS 2006</strong>). Dicho compilador se encuentra en la carpeta donde esté instalado <strong>BDS</strong>, normalmente <em>&#8220;C:\Archivos de programa\BDS\4.0\Bin\dcc32.exe&#8221;</em>.</p>
<p>dcc32.exe [options] filename [options]</p>
<p>Todas las opciones disponibles se pueden ver ejecutando el compilador sin ningún parámetro.</p>
<p style="text-align: center"><a href="http://www.ender.es/wp-content/uploads/2010/02/dcc32_options.jpg"><img class="size-full wp-image-280 aligncenter" src="http://www.ender.es/wp-content/uploads/2010/02/dcc32_options.jpg" alt="" width="523" height="828" /></a></p>
<p>Como estamos usando la versión de línea de comando ciertos datos de configuración que rellenamos en el IDE de Delphi los tenemos que rellenar a mano en el fichero &#8220;<em><strong>dcc32.cfg</strong></em>&#8220;, situado en la misma ruta que el propio compilador.</p>
<p style="text-align: center"><a href="http://www.ender.es/wp-content/uploads/2010/02/delphi_options.jpg"><img class="size-full wp-image-281 aligncenter" src="http://www.ender.es/wp-content/uploads/2010/02/delphi_options.jpg" alt="" width="673" height="434" /></a></p>
<p>Las opciones para &#8220;<em><strong>Library path</strong></em>&#8221; se indican utilizando la opción <strong>-u</strong>. Por ejemplo,</p>
<p><em>-u&#8221;e:\archivos de programa\Borland\BDS\4.0\lib&#8221;;&#8221;e:\archivos de programa\Borland\BDS\4.0\lib\Obj&#8221;;&#8221;F:\Componentes\Package 2006&#8243;;&#8230;<br />
-u&#8221;d:\Componentes\MiComponente&#8221;;&#8221;d:\Componentes\OtroComponente&#8221;;&#8230;</em></p>
<p>Aquí debemos poner las rutas a todos los componentes que tenemos instalados y que son necesarios para compilar nuestros proyectos.</p>
<p><a href="http://www.ender.es/wp-content/uploads/2010/02/delphi_project-options.jpg"><img class="aligncenter size-full wp-image-282" src="http://www.ender.es/wp-content/uploads/2010/02/delphi_project-options.jpg" alt="" width="637" height="439" /></a></p>
<p>Las opciones para &#8220;<em><strong>Conditional defines</strong></em>&#8221; se definen utilizando <strong>-D</strong>. Por ejemplo,</p>
<p><em>-DLEVEL3;LEVEL4;LEVEL5;LEVEL6;XDOM_2_3<br />
-DDebug<br />
-DVersionDePrueba</em></p>
<p>Se trata de opciones de compilación controladas por instrucciones como <em>{$IFDEF}</em>, <em>{$IFNDEF}</em>, etc. Es equivalente a poner <em>{$DEFINE &#8212;&#8211;}</em> en el código.</p>
<p>Las opciones para &#8220;<em><strong>Unit aliases</strong></em>&#8221; se definen utilizando <strong>-a</strong>. Por ejemplo,</p>
<p><em>-aWinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;DbiTypes=BDE;DbiErrs=BDE</em></p>
<p>Ésta última ya está definida por defecto en el fichero &#8220;<em><strong>dcc32.cfg</strong></em>&#8221; y probablemente no tendremos que modificarlo.</p>
<p>Cada <em>job</em> en Hudson tiene su propia carpeta en disco y dentro de ella se descarga (desde el repositorio) el código, como hemos visto en el apartado anterior.</p>
<p><a href="http://www.ender.es/wp-content/uploads/2010/02/hudson_build.jpg"><img class="aligncenter size-full wp-image-283" src="http://www.ender.es/wp-content/uploads/2010/02/hudson_build.jpg" alt="" width="800" height="167" /></a></p>
<p>Bajo el epígrafe &#8220;<em><strong>Build</strong></em>&#8221; disponemos de un cuadro de texto donde escribiriemos las órdenes necesarias para compilar el módulo. Estos comandos siguen la estructura de un archivo <a href="http://en.wikipedia.org/wiki/Batch_files" target="_blank">Batch</a> (.BAT) de Windows. De hecho, Hudson genera un archivo .bat con el contenido de &#8220;<em><strong>Command</strong></em>&#8221; y lo ejecuta cada vez que necesita compilar el job.</p>
<p>Partimos de la carpeta propia del trabajo, así que lo primero que tenemos que hacer es entrar en la carpeta &#8220;<em>Source</em>&#8221; (recuerda que es el nombre que le hemos dado a una de las piezas del código)</p>
<p><em>cd Source</em></p>
<p>y ejecutar un par de órdenes</p>
<p><em>&#8220;e:\Archivos de programa\borland\bds\4.0\bin\dcc32&#8243; -w+ -h AFOROFunc01</em></p>
<p>La primera ejecuta el compilador de Delphi para el proyecto correspondiente (AFOROFunc01). Esto generará un fichero .DLL o un fichero .EXE, en nuestro caso AFOROFunc01.dll.</p>
<p><em>&#8220;e:\Archivos de programa\Winrar\rar.exe a AFOROFunc01.rar AFOROFunc01.dll</em></p>
<p>La segunda línea es opcional y nos permite comprimir el resultado obtenido en la compilación (<em><strong>AFOROFunc01.dll</strong></em>) en un archivo más pequeño. De esta manera cuando descargamos un módulo podemos elegir la versión comprimida y tardaremos menos.</p>
<p>Una vez compilado el código tenemos que indicarle a Hudson qué debe guardar de los archivos que se producen. Esto se hace bajo el epígrafe &#8220;<em><strong>Post-build Actions</strong></em>&#8220;.</p>
<p><a href="http://www.ender.es/wp-content/uploads/2010/02/hudson_post-build-actions.jpg"><img class="aligncenter size-full wp-image-284" src="http://www.ender.es/wp-content/uploads/2010/02/hudson_post-build-actions.jpg" alt="" width="800" height="551" /></a></p>
<p>Tenemos que marcar el check &#8220;Archive the artifacts&#8221;. En el cuadro de texto rotulado como &#8220;<em><strong>Files to archive</strong></em>&#8221; configuramos qué ficheros (<em>artifacts</em>) queremos que se almacenen. Hudson guardará un histórico (según el número de versiones disponibles que indiquemos) de dichos &#8220;artefactos&#8221;, con lo que podríamos recuperar una versión anterior.</p>
<p><strong>3. ¿Cúando debe compilarse el código?</strong><br />
Los trabajos se pueden ejecutar tras la ejecución existosa de otro/s trabajo/s (<em><strong>Build after other projects are built</strong></em>), cada cierto tiempo (<em><strong>Build periodically</strong></em>) o cada cierto tiempo comprobando cambios en el código (<em><strong>Poll SCM</strong></em>).</p>
<p>Todo esto se configura bajo el epígrafe &#8220;<em><strong>Build Triggers</strong></em>&#8220;.</p>
<p><a href="http://www.ender.es/wp-content/uploads/2010/02/hudson_build-triggers.jpg"><img class="aligncenter size-full wp-image-286" src="http://www.ender.es/wp-content/uploads/2010/02/hudson_build-triggers.jpg" alt="" width="969" height="355" /></a></p>
<p>En la opción &#8220;<em><strong>Build after other projects are built</strong></em>&#8221; indicamos una lista con uno o varios trabajos (de Hudson) separados por comas. En las opciones &#8220;<em><strong>Build periodically</strong></em>&#8221; y &#8220;<em><strong>Poll SCM</strong></em>&#8221; se configuran utilizando el campo &#8220;<em><strong>Schedule</strong></em>&#8220;. La diferencia entre ellos es que uno se compila siempre y otro sólo si ha habido cambios en el código.</p>
<p>En el campo &#8220;<em><strong>Schedule</strong></em>&#8221; se trata de escribir la configuración para cinco datos separados por espacios o tabuladores. Normalmente sólo hay una línea pero podríamos tener varias. Esta configuración es similar a la de crontab en sistemas <em>*nix</em>.</p>
<p><em>[MINUTE] [HOUR] [DOM] [MONTH] [DOW]</em></p>
<p><em>MINUTE</em> (minuto) [0, 59]<br />
<em> HOUR</em> (hora) [0, 23]<br />
<em> DOM</em> (day of month &#8211; día del mes) [1, 31]<br />
<em> MONTH</em> (mes) [1, 12]<br />
<em> DOW</em> (day of the week &#8211; día de la semana) [0, 7], donde 0 y 7 significan Domingo.</p>
<p>Si indicamos * (asterisco) significa &#8220;todo&#8221;. Por ejemplo, si ponemos * en la columna de los minutos, significa &#8220;cada minuto&#8221;. Si lo ponemos en el &#8220;día de la semana&#8221; significa &#8220;todos los días de la semana&#8221;, etc.</p>
<p>Algunos ejemplos serían:</p>
<p>0 20 * * *<br />
<em> Todos los días a las 20:00</em></p>
<p>0 20 * 1 *<br />
<em> Todos los días de Enero a las 20:00</em></p>
<p>30 19 1 * *<br />
30 19 15 * *<br />
<em>Todos los días 1 y 15 a las 19:30</em></p>
<p>Para trabajos en los que elegimos &#8220;<strong><em>Poll SCM</em></strong>&#8221; la configuración por defecto (* * * * *) suele ser la más utilizada. Es decir, se comprueba el código &#8220;cada minuto&#8221;. Sólo en el caso de que la compilación de ciertos trabajos lleve mucho tiempo, podemos elegir que dichos trabajos más &#8220;costosos&#8221; se compilen &#8220;fuera de horario&#8221;.</p>
<p>Una vez hemos configurado todo pulsamos <em><strong>Save</strong></em> en la parte inferior de la página.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;t=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;title=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson&amp;srcUrl=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;srcTitle=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson&amp;snippet=Cuando%20se%20desarrolla%20%22en%20grupo%22%20hacen%20faltan%20varias%20herramientas%20para%20trabajar%20de%20una%20forma%20eficiente.%20Una%20de%20ellas%20es%20la%20utilizaci%C3%B3n%20de%20alg%C3%BAn%20sistema%20de%20versiones%20%28Subversion%2C%20CVS%2C%20mercurial%2C%20git%2C%20etc%29%2C%20y%20la%20otra%20es%20la%20compilaci%C3%B3n%20autom%C3%A1tica%2C%20lo%20que%20habr%C3%A9is%20visto%20muchas%20veces%20como%20%22nightly%20bui" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;title=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson&amp;summary=Cuando%20se%20desarrolla%20%22en%20grupo%22%20hacen%20faltan%20varias%20herramientas%20para%20trabajar%20de%20una%20forma%20eficiente.%20Una%20de%20ellas%20es%20la%20utilizaci%C3%B3n%20de%20alg%C3%BAn%20sistema%20de%20versiones%20%28Subversion%2C%20CVS%2C%20mercurial%2C%20git%2C%20etc%29%2C%20y%20la%20otra%20es%20la%20compilaci%C3%B3n%20autom%C3%A1tica%2C%20lo%20que%20habr%C3%A9is%20visto%20muchas%20veces%20como%20%22nightly%20bui&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson+-+http://b2l.me/z6c3v&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/&amp;title=Integraci%C3%B3n+continua%3A+proyectos+Delphi+en+Hudson" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/02/integracion-continua-proyectos-delphi-en-hudson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
