Too Cool for Internet Explorer

Linus Torvalds: Subversion rant 1

Hora y Fecha: Mayo 31, 2007 @ 12:30 am Autor: Moisés Maciá
Categorías:
462 views

Aquí estoy otra vez, con GPU nueva; aunque no la que yo quería …

Esta vez voy a hablar de nuestro incombustible dictador benévolo, Linus Torvalds, y su nuevo flame encendido en una reciente conferencia en uno de los campus de Google acerca de los programas de control de versiones (SCM).

Durante los primeros diez años de mantenimiento del kernel, utilizamos literalmente tarballs y patches, que son un sistema de control de versiones muy superior a CVS.

Subversion solía anunciarse como que era CVS pero bien hecho. Con un eslogan así, no vas a ningún lado. No hay manera de hacer un “CVS” bien. Subversion es el proyecto más inútil de todos los tiempos.

Si te gusta utilizar CVS deberías estar en un sanatorio mental.

Por definición, cualquiera que no esté de acuerdo conmigo durante esta charla es estúpido.

Linus making friends.

Para los que no conozcan a Linus en estado puro: es así la mayor parte del tiempo.

Veamos por qué oscuras razones una persona sensata suelta semejantes perlas delante de un centenar de ingenieros que utilizan Subversion como principal herramienta de gestión en su labor diaria.

Para empezar, Linus defiende las prácticas de branching y merging como conceptos clave que benefician el desarrollo de software. En este aspecto CVS, Subversion, SourceSafe y algún otro SCM son particularmente malos manejando muchas lineas de desarrollo paralelo simultáneamente, y cuando digo malos no quiero decir que no se pueda hacer, digo que las operaciones de branching y merging no son optimas en estos sistemas.

El branching facilita el desarrollo paralelo, hacer experimentos, crear checkpoints, ayuda a mantener el proyecto estable, básicamente ayuda a trabajar mejor. El branching es una operación sencilla en SVN, incluso en CVS, pero mezclar los cambios de dos ramas ya es otro tema: mezclar dos ramas lo suficientemente lejanas de su punto de bifurcación puede suponer en Subversion toda una mañana de trabajo viendo que código pasa y cual no. En CVS es mucho peor.

Otro de los problemas que comenta es el hecho de que el código y su historial esté ligado a un único punto de fallo: el servidor de versiones. Linus en cambio, aboga por un modelo completamente descentralizado similar a los sistemas P2P. Mercurial y GIT (desarrollado por Torvalds para gestionar el Kernel de Linux) son SCMs diseñados para trabajar de esta manera. No he utilizado estos sistemas pero se me antoja que la idea es muy buena para el modelo de desarrollo que siguen los proyectos open source.

Por lo que he podido entender (puedo esar equivocado ya que nunca he utilizado un SCM distribuido), en estos sisemas hay cientos de ramas paralelas a la linea de desarrollo que se esparcen viajando a lo largo de la red de pares y la carga se distribuye en “sumideros” que centralizan grupos afines de dichas ramas. Por ejemplo, a Linus como desarrollador del Kernel no le impora lo que están haciendo la gente del subsistema USB por lo que los envios a este módulo se reparten en su mayoría entre los desarrolladores involucrados en él, mientras que los envios al Kernel se distribuyen entre Linus y sus “hombres de confianza”, dejando el resto de la red libre de “ruido”.

Como nota curiosa/freak/MasterOfTheUniverse, Linus implementó este sistema (GIT) en un par de semanas de trabajo.

En Subversion y CVS toda la carga está centralizada en una única máquina, de forma que si 1000 personas estan trabajando contra el servidor al mismo tiempo (cosa habitual en un proyecto open source de envergadura), aunque lo hagan sobre módulos completamente aislados, estarán continuamente sobrecargando la máquina y pisándose unos a otros.

Diga lo que diga Linus, voy a seguir utilizando Subversion.



Calenturas primaverales 5

Hora y Fecha: Mayo 10, 2007 @ 12:39 am Autor: Moisés Maciá
Categorías:
452 views
Dell Inspiron 8500 weird video

Eso es la GPU de mi Inspiron 8500 en actitud psicodélica debido a un fallo todavía sin determinar pero que apunta a calentón. La primavera es lo que tiene.

Inocente como soy, no se me ha ocurrido otra cosa que preguntar al servicio técnico y me han pedido 800€ y que me bajará los pantalones; así, sin pestañear. Como no esta la cosa para tonterías voy a ver si puedo hacerle una autopsia y enchufarle una tarjeta nueva que he visto por eBay.

Hasta entonces el blog queda en pausa.



By popular demand 2

Hora y Fecha: Mayo 2, 2007 @ 11:59 pm Autor: Moisés Maciá
Categorías:
374 views
Dell Ubuntu, comming soon by popular demand (thumb)

Después de 8 años de fiel (y feliz) resistencia linuxera estas cosas emocionan …



SVN Hook: asociar acciones a keywords de Trac 0

Hora y Fecha: @ 11:20 pm Autor: Moisés Maciá
Categorías:
441 views

En Trac, a la hora de introducir un nuevo ticket, le podemos asignar keywords:

Trac Keywords

Este es un campo sin valor aparente mas que para taggear tickets hasta que el otro día se me ocurrió un hack curioso: utilizar los keywords asociados a un ticket para disparar acciones como por ejemplo notificaciones por email, reconstruir la documentación, etc.

Cómo funciona

Funciona de forma similar al anterior hook que comenté, el auto cierre de tickets: responde a mensajes del estilo “changed blah blah to do this or that, fixes #34″.

Si el mensaje contiene alguna orden de cierre sobre un ticket (las ordenes son personalizables a través del array $msgClose), se pasa a ver si el ticket tiene keywords (puede tener varias separadas por comas).

  1.  
  2. $msgClose = array (
  3.     ‘close’,
  4.     ‘closed’,
  5.     ‘closes’,
  6.     ‘fix’,
  7.     ‘fixed’,
  8.     ‘fixes’
  9.     );
  10.  

En este caso se ejecutan las acciones pertinentes.

Para añadir nuevas acciones hay que mapearlas en el array $keyword2action.

  1.  
  2. $keyword2action = array (
  3.     ‘publish’       => ‘emailThis’
  4. );
  5.  

En el ejemplo vemos que la keyword publish ejecuta la acción emailThis.

Por último los callbacks de las acciones tienen esta pinta:

  1.  
  2. function action_emailThis ($commit=, $description=, $url=, $ticket=0)
  3. {
  4.     $to = "mailing@domain.com";
  5.     $subject = "[My Awesome Project] Cheers!, we have closed ticket #$ticket";
  6.  
  7.     $msg = "Ticket description:\r\n";
  8.     $msg .= "—————————————————————————\r\n";
  9.     $msg .= $description . "\r\n";
  10.     $msg .= "—————————————————————————\r\n\r\n";
  11.     $msg .= "Commit message:\r\n";
  12.     $msg .= "—————————————————————————\r\n";
  13.     $msg .= $commit . "\r\n";
  14.     $msg .= "—————————————————————————\r\n\r\n";
  15.     $msg .= "More info in $url";
  16.  
  17.     mail ($to, $subject, $msg);
  18. }
  19.  

Donde $commit es el mensaje de cierre del ticket, $description es la descripción del ticket en Trac, $url es la URL al ticket completo y su historial en Trac y por último $ticket es el número de identificación del ticket.

Qué necesito

  1. Una máquina con Trac, Subversion y un servidor de correo correctamente configurados.
  2. ¡El script!

En el gancho post-commit de Subversion hay que colocar las siguientes variables (si no están ya):

  1.  
  2. REPOS="$1"
  3. REV="$2"
  4. LOG=`/usr/bin/svnlook log -r $REV $REPOS`
  5. TRAC_ENV=‘/somewhere/trac/project/’
  6.  
  7. /usr/bin/php -q trac-keyword2action.php –trac-path "$TRAC_ENV" \
  8.                –message "$LOG" \
  9.                –trac-url "http://trac.mydomain.com/"
  10.  

Problemas

  • Trac debe utilizar SQLite como backend, aunque es posible utilizar MySQL modificando un par de lineas del código.
  • PHP5 + PDO + SQLite, no suele estar instalado en servidores baratos.
  • Si se cierra un ticket sin pasar por Subversion no funciona.

Usos

Hay algunos cambios mayores en un proyecto que por alguna razón nos interesa comunicar a los cuatro vientos cuando finalmente son implementados, bien a una lista de correo, un canal RSS, un informe para el jefe, etc. Estos tickets especiales pueden marcarse para desencadenar la acción elegida.

También es útil cuando se reporta un typo en la documentación o en los archivos de cadenas para localizar/internacionalizar. Marcando estos tickets se puede regenerar de nuevo los archivos de documentación o compilar las traducciones tan pronto como el fallo este resuelto.

¿Alguna sugerencia más? ¿Para qué lo emplearíais?



Ya es oficial: Dell venderá equipos con Ubuntu 0

Hora y Fecha: Mayo 1, 2007 @ 7:34 pm Autor: Moisés Maciá
Categorías:
457 views
Tux Dell

En el día de hoy se ha confirmado uno de los rumores más persistentes de los últimos meses. La prestigiosa marca de ordenadores Dell —la más potente ensambladora de PCs del mundo— venderá equipos con Ubuntu 7.04 (Feisty Fawn) preinstalado. Los equipos se venderán desde la web de la casa de hardware y vendrá con un completo soporte hardware.

Según lo previsto, Ubuntu será preinstalado en las gamas Dimension y XPS de ordenadores de sobremesa y la gama Inspiron de portátiles. La elección de Dell por Ubuntu no parece una sorpresa atendiendo a las declaraciones que recientemente hizo su fundador y CEO Michael Dell que presume de utilizar la distribución en su portátil totalmente equipado Dell Precision M90.

Sin duda esta es una de las noticias más esperadas por la comunidad de Linux. El apoyo de una casa de hardware grande como es Dell podría suponer el espaldarazo definitivo para Linux en el escritorio. Y es que Ubuntu podrá gustar más o menos, pero es innegable que la compañía liderada por Mark Shuttleworth está haciendo bien las cosas.

Noticia en el blog oficial de Dell
Comunicado de prensa de Canonical




Bad Behavior has blocked 374 access attempts in the last 7 days.