Contribuir a Rails

Preview:

DESCRIPTION

Material de la ponencia sobre el proceso de contribución de código a Ruby on Rails, presentada durante la Conferencia Rails 2007(Madrid 22 y 23 de noviembre) por Juanjo Bazán

Citation preview

Contribuir a Rails

Juanjo Bazán

¿Qué es?

¿Qué es?Realizar acciones que supongan u originen cambios en el código fuente de Ruby on Rails

Proponer mejoras

Detectar Bugs

Plugins

Crear documentación

Corregir bugs

Código nuevo

Indirectamente

Directamente

¿Que es?

¿Por qué contribuir?

¡Alguien tiene que hacerlo!

¿Por qué contribuir?

¿Serás mejor programador Rails?

¿Porqué?

Molaras más

Es justo

Serás mejor programador Ruby

Nadie va a hacerlo por ti

¿Que es?

¿Cómo se hace?

¿Cómo?

[Rails-Core]

¿Porqué?¿Que es?

Rails Trac

#rails-contrib

3 herramientas fundamentales:

Seguimiento de tickets: Parches

Lista de correo: Propuestas y discusiones sobre nuevas funcionalidades

Canal de IRC: Chat para ayuda/opiniones sobre contribuciones

¿Cómo?

Proponer mejoras

Detectar Bugs

Plugins

Crear documentación

Corregir bugs

Código nuevo

[Rails-Core]

¿Porqué?¿Que es?

Rails Trac

#rails-contrib

¿Cómo?

[Rails-Core]

¿Porqué?¿Que es?

Rails Trac

#rails-contribProponer cambios

Implementar cambios

Buscar apoyos para los cambios

Comunicar cambios

Repositorio oficial del código fuente de Ruby On Rails

http://dev.rubyonrails.org

Rails Trac

¿Cómo?¿Porqué?¿Que es?

Acceso:

Rails Trac

Rails Trac

Cualquiera puede subir parches

Sólo 12 personas pueden aceptarlos

El Core: http://www.rubyonrails.org/core

¿Cómo?¿Porqué?¿Que es?

1) Implementar un cambio

Rails Trac

El proceso (muy esquematicamente):

2) Subirlo al trac

3) Conseguir que alguien del core lo acepte

¿Cómo?¿Porqué?¿Que es?

1) Implementar un cambio

Rails Trac

El proceso:

2) Subirlo al trac

3) Conseguir que alguien del core lo acepte

Sincronizar nuestro entorno de desarrollo con la última versiónProgramar la funcionalidad que queramosAsegurarnos de que no modifica ninguna otra funcionalidad no deseada

Crear un parcheAbrir un ticket en el tracSubir el parche al trac y asociar nuestro parche al ticket

Publicitar/comentar nuestro parcheConseguir que suficientes personas aprueben nuestro ticket

Paso a paso

¿Cómo?¿Porqué?¿Que es?

Subversion

BBDD

Rails

Rails Trac

Herramientas necesarias

Paso a paso

¿Cómo?¿Porqué?¿Que es?

Crear un nuevo proyecto de Rails> rails parcheando

Rails Trac

Nuestro entorno de desarrollo

Paso a paso

Obtener la última versión de Rails para nuestro proyecto> cd parcheando> svn co “http://svn.rubyonrails.org/rails/trunk” vendor/rails

Preparar la base de datos para tests -Información en: vendor/rails/activerecord/RUNNING_UNIT_TESTS -Datos: vendor/rails/activerecord/test/connections/native_XXXXX

Ejecutar tests> cd vendor/rails/activerecord> rake test_mysql> cd ../actionpack > cd ../activesupport ...> rake test

¿Cómo?¿Porqué?¿Que es?

Asegurarnos de que no existen los cambios que queremos hacer

Rails Trac

Programar los cambios

Paso a paso

Respetar la guía de estilo No usar tabulador => Dos espacios No usar and o or => && y || No usar nombre_metodo( nombre_argumento ) ni usar nombre_metodo nombre_argumento => NombreClase.nombre_metodo(nombre argumento) Utiliza las convenciones que ya existan en el código

Añadir tests a nuestro código

Añadir documentación si procede

Asegurarnos de pasar tests propios y ajenos

¿Cómo?¿Porqué?¿Que es?

Crear un parche con subversionparcheando/vendor/rails> svn diff > mi_parche.diff

Rails Trac

Parche

Paso a paso

Revisar con un editor de texto que el parche es correcto nombre directorio base incluye todo (y sólo) lo que queremos

¿Cómo?¿Porqué?¿Que es?

Asegurarnos de que no existen los cambios que queremos hacer(II) trac >> search

svn up >> ¿conflitos?

Rails Trac

Actualizar el Trac

Paso a paso

Acceder al trac

Crear un Ticket nuevo Etiquetarlo como [PATCH]... Añadir etiquetas(keywords): componente, doc, tiny...

Explicar los cambios introducidos Si hay código nuevo incluir un ejemplo de usoAdjuntar el archivo diff Subir el archivo, no copy/paste

¿A quién lo asigno? ¿Dudas? >> Core

¿Cómo?¿Porqué?¿Que es? Rails Trac

Actualizar el Trac: New Ticket

Paso a paso

Funcionamiento propio del sistema de tickets de Rails

Rails Trac

¿Cómo?¿Porqué?¿Que es?

Valoración de tus parches por parte de los demás:

Rails Trac

Revisión de parches

Paso a paso

+1-1opinionespropuesta de mejoras al parchekeywords

tinyuntestedundocumented

¿Cómo?¿Porqué?¿Que es? Rails Trac

Catalogación de parches

Paso a paso

Los parches se catalogan en informes basados en la opinión de los demás sobre tu parche: http://dev.rubyonrails.org/report

¿Cómo?¿Porqué?¿Que es?

Catalogación basada en palabras clave

Rails Trac

Reports

Paso a paso

untested => report 23 => report 11(incomplete)undocumented => report 24 => report 11(incomplete)tiny => report 16 (commit más rápido)doc => report 20 documentación(commit más fácil)unverified => faltan unit test => report 17

¿Cómo?¿Porqué?¿Que es?

El informe 12 agrupa todos los parches cuyo funcionamiento ha sido verificado por suficiente gente http://dev.rubyonrails.org/report/12

Rails Trac

Objetivo: Report 12

Paso a paso

+1+1+1

Keyword: verified Report 12 ¡Commit!

Cómo conseguir valoraciones positivas

+1s

¿Cómo?¿Porqué?¿Que es? Rails Trac

paciencia

Paso a paso +1

¿Cómo?¿Porqué?¿Que es? Rails Trac

#rails-contrib

Paso a paso +1

¿Cómo?¿Porqué?¿Que es? Rails Trac

[Rails-Core]

Paso a paso +1

¿Cómo?¿Porqué?¿Que es? Rails Trac

Mantén vivala conversación

Paso a paso +1

¿Cómo?¿Porqué?¿Que es? Rails Trac

Evitar -1s

Paso a paso +1

Fallos comunes y errores que generan -1s

¿Que puede ir mal?

¿Cómo?¿Porqué?¿Que es? Rails Trac

No tests

Paso a paso +1 -1

¿Cómo?¿Porqué?¿Que es? Rails Trac

No docs

Paso a paso +1 -1

¿Cómo?¿Porqué?¿Que es? Rails Trac

Contenido ya existente

Paso a paso +1 -1

¿Cómo?¿Porqué?¿Que es? Rails Trac

Hacer un cambio grandesin consultar previamente

Paso a paso +1 -1

(Si no consultas, mejor implementarlo como plugin)

¿Cómo?¿Porqué?¿Que es? Rails Trac

SVN: error en directorio base

Paso a paso +1 -1

¿Cómo?¿Porqué?¿Que es? Rails Trac

Copy/paste código

Paso a paso +1 -1

(subir archivos diff/ejemplos/urls)

¿Cómo?¿Porqué?¿Que es? Rails Trac

Recibir comentarios negativos e ignorarloso abandonar

Paso a paso +1 -1

(¡hay que responder/defenderse/argumentar!)

¿Cómo?¿Porqué?¿Que es? Rails Trac

Recibir comentarios negativos y contestarcon malos modos

Paso a paso +1 -1

(hay que ser educado, y ya lo sabías)

¿Cómo?¿Porqué?¿Que es? Rails Trac

No ejecutar tests después de crear el código

Paso a paso +1 -1

(¿rompes tests ajenos?)

Comunidad

¿Cómo?¿Porqué?¿Que es? Rails Trac

En el camino...

Paso a paso +1 -1

No olvides:

*aprender Rails *aprender Ruby *participar en discusiones de tickets ajenos *valorar otros tickets, da +1s/-1s

...

¿Cómo?¿Porqué?¿Que es? Rails Trac

Seguimiento:

Paso a paso +1 -1

WorkingWithRails

...

Blogs novedades rails

RSS trac

¡Participa!

Gracias.

Créditos de las fotografías:http://www.flickr.com/photos/8012118@N05/2033487464/http://www.flickr.com/photos/kuspoletto/2054705306/http://www.flickr.com/photos/76008487@N00/2049230753/http://www.flickr.com/photos/60892750@N00/2042934476/http://www.flickr.com/photos/reway2007/2050992672/

¿Preguntas?

¿dudas?jjbazan@cafelink.es

Licencia:Este documento se presenta bajo licencia “Creative Commons Attribution-NonCommercial-ShareAlike”, versión 3,0. Es decir, se puede copiar, distribuir o crear trabajos derivados bajo las siguientes condiciones:

* Atribuir el crédito al autor original (Juanjo Bazán @ www.cafelink.es ) * No utilizar sin permiso este trabajo para usos comerciales. * Distribuir cualquier trabajo derivado usando esta misma licencia.

(Detalles en: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es )

Recursos Mencionados

Rails trac:http://dev.rubyonrails.org

[Rails-core] Mail list:http://groups.google.com/group/rubyonrails-core

#rails-contrib:irc: freenode.net

Subversion:http://subversion.tigris.org

Rails Core:http://www.rubyonrails.org/core

Informes Rails Trac:http://dev.rubyonrails.org/report

Working with rails hackfest:http://www.workingwithrails.com/hackfest