49
Contribuir a Rails Juanjo Bazán

Contribuir a Rails

Embed Size (px)

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

Page 1: Contribuir a Rails

Contribuir a Rails

Juanjo Bazán

Page 2: Contribuir a Rails

¿Qué es?

Page 3: Contribuir a Rails

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

Page 4: Contribuir a Rails

Proponer mejoras

Detectar Bugs

Plugins

Crear documentación

Corregir bugs

Código nuevo

Indirectamente

Directamente

¿Que es?

Page 5: Contribuir a Rails

¿Por qué contribuir?

Page 6: Contribuir a Rails

¡Alguien tiene que hacerlo!

¿Por qué contribuir?

Page 7: Contribuir a Rails

¿Serás mejor programador Rails?

¿Porqué?

Molaras más

Es justo

Serás mejor programador Ruby

Nadie va a hacerlo por ti

¿Que es?

Page 8: Contribuir a Rails

¿Cómo se hace?

Page 9: Contribuir a Rails

¿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

Page 10: Contribuir a Rails

¿Cómo?

Proponer mejoras

Detectar Bugs

Plugins

Crear documentación

Corregir bugs

Código nuevo

[Rails-Core]

¿Porqué?¿Que es?

Rails Trac

#rails-contrib

Page 11: Contribuir a Rails

¿Cómo?

[Rails-Core]

¿Porqué?¿Que es?

Rails Trac

#rails-contribProponer cambios

Implementar cambios

Buscar apoyos para los cambios

Comunicar cambios

Page 12: Contribuir a Rails

Repositorio oficial del código fuente de Ruby On Rails

http://dev.rubyonrails.org

Rails Trac

Page 13: Contribuir a Rails

¿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

Page 14: Contribuir a Rails

¿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

Page 15: Contribuir a Rails

¿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

Page 16: Contribuir a Rails

Paso a paso

Page 17: Contribuir a Rails

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

Subversion

BBDD

Rails

Rails Trac

Herramientas necesarias

Paso a paso

Page 18: Contribuir a Rails

¿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

Page 19: Contribuir a Rails

¿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

Page 20: Contribuir a Rails

¿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

Page 21: Contribuir a Rails

¿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

Page 22: Contribuir a Rails

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

Actualizar el Trac: New Ticket

Paso a paso

Page 23: Contribuir a Rails

Funcionamiento propio del sistema de tickets de Rails

Rails Trac

Page 24: Contribuir a Rails

¿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

Page 25: Contribuir a Rails

¿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

Page 26: Contribuir a Rails

¿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

Page 27: Contribuir a Rails

¿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!

Page 28: Contribuir a Rails

Cómo conseguir valoraciones positivas

+1s

Page 29: Contribuir a Rails

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

paciencia

Paso a paso +1

Page 30: Contribuir a Rails

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

#rails-contrib

Paso a paso +1

Page 31: Contribuir a Rails

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

[Rails-Core]

Paso a paso +1

Page 32: Contribuir a Rails

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

Mantén vivala conversación

Paso a paso +1

Page 33: Contribuir a Rails

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

Evitar -1s

Paso a paso +1

Page 34: Contribuir a Rails

Fallos comunes y errores que generan -1s

¿Que puede ir mal?

Page 35: Contribuir a Rails

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

No tests

Paso a paso +1 -1

Page 36: Contribuir a Rails

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

No docs

Paso a paso +1 -1

Page 37: Contribuir a Rails

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

Contenido ya existente

Paso a paso +1 -1

Page 38: Contribuir a Rails

¿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)

Page 39: Contribuir a Rails

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

SVN: error en directorio base

Paso a paso +1 -1

Page 40: Contribuir a Rails

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

Copy/paste código

Paso a paso +1 -1

(subir archivos diff/ejemplos/urls)

Page 41: Contribuir a Rails

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

Recibir comentarios negativos e ignorarloso abandonar

Paso a paso +1 -1

(¡hay que responder/defenderse/argumentar!)

Page 42: Contribuir a Rails

¿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)

Page 43: Contribuir a Rails

¿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?)

Page 44: Contribuir a Rails

Comunidad

Page 45: Contribuir a Rails

¿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

...

Page 46: Contribuir a Rails

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

Seguimiento:

Paso a paso +1 -1

WorkingWithRails

...

Blogs novedades rails

RSS trac

Page 47: Contribuir a Rails

¡Participa!

Page 48: Contribuir a Rails

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?

¿[email protected]

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 )

Page 49: Contribuir a Rails

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