Contribuer à Ruby en 3 exemples
Contribuer à Ruby et son écosystème est un sujet vaste. Ce n’est pas évident de se lancer dans cette aventure, ni de savoir par où commencer. Je vais vous parler de trois exemples en espérant que cela puisse vous inspirer et susciter des vocations.
Accélérer le temps de chargement de Rails
Xavier Shay est un développeur et il lui arrive de coder des applications Rails avec Ruby 1.9. Et, comme beaucoup d’autres, il peste contre le temps de chargement très long de Rails. Sauf que lui a décidé de ne pas rester les bras croisés et a commencé à chercher pourquoi c’était lent et ce que l’on peut y faire. Sa première étape est d’améliorer require. Il travaille sur un patch, plutôt conséquent, pour le futur Ruby 1.9.3 qui améliore grandement les performances de require. Vous pouvez l’aider en testant son patch (Xavier Shay est tout particulièrement intéressé par des tests sous windows) et en lui fournissant des données sur le temps de chargement d’une de vos application Rails :
# Tout d'abord, une première mesure qui servira de base de comparaison
cd /votre/application/rails
time script/rails runner "puts 1"
# Installer la version patchée de Ruby 1.9.3
rvm get head && rvm reload
curl https://gist.github.com/raw/996418/e2b346fbadeed458506fc69ca213ad96d1d08c3e/require-performance-fix-r31758.patch > /tmp/require-performance-fix.patch
rvm install ruby-head --patch /tmp/require-performance-fix.patch -n patched
# ... vous pouvez en profiter pour prendre une tasse de thé, cela va prendre quelques minutes (environ 8 minutes sur un macbook pro)
# Et il est temps de passer à la nouvelle mesure
cd /votre/application/rails
rvm use ruby-head-patched
gem install bundler --no-rdoc --no-ri
bundle
time script/rails runner "puts 1"
Ensuite, il ne vous reste plus qu’à aller sur son blog et poster un commentaire avec vos mesures. Rien de bien compliqué en somme.
Améliorer les relations entre Rubygems et la communauté
Gregory Brown a remarqué que les relations entre les développeurs de Rubygems et ses utilisateurs étaient parfois tendues, surtout ces derniers temps. Un certain nombre de personnes critiquent les dernières versions de Rubygems (la direction prise, les changements d’API, etc.) sans pour autant créer des entrées dans le bugtracker de Rubygems. Mais quand ils le font, ils se font parfois jeter de manière assez rude par les développeurs de Rubygems.
Gregory Brown est convaincu que Rubygems est indispensable à l’écosystème Ruby et qu’il est important de calmer le jeu pour que Rubygems puisse avancer dans de meilleures conditions, en prenant en compte les retours des utilisateurs. Pour ça, il s’est proposé pour faire un intermédiaire entre la communauté et les développeurs. Il encourage tous les gens qui ont eu des problèmes par le passé avec Rubygems à lui faire part pour qu’il puisse ensuite en discuter avec l’équipe de Rubygems pour en faire un plan d’action et communiquer plus efficacement sur la direction prise par Rubygems.
Donc, si vous avez des attentes vis-à-vis de Rubygems, vous savez ce qu’il vous reste à faire ;-)
Rubinius
Rubinius est une implémentation de Ruby avec 2 caractéristiques qui me semblent intéressantes :
- un maximum de code de Rubinius est écrit en Ruby ;
- Evan Phoenix, le créateur de Rubinius, a toujours insisté sur l’importance de la communauté pour l’avancée de Rubinius.
Et quand on combine ces 2 caractéristiques, on voit qu’il est très facile de devenir impliqué dans Rubinius. En plus, un programme visant à récompenser les contributeurs de Rubinius a été mis en place. Au premier commit, vous gagnez un autocollant Rubinius pour afficher fièrement que vous avez participé, ainsi qu’une lettre manuscrite de remerciements. Et au dixième commit, vous pourrez exhiber encore plus votre engagement grâce au T-Shirt qui vous aura été offert.
À vous de jouer !
Lire la suite...
