class: center, middle, inverse, title-slide # rOpenSci, revues de packages R par les pairs pour une meilleure science ## Maëlle Salmon
ma_salmon
maelle
masalmon.eu ### 2019/03/29 --- # Mes objectifs -- * Présenter le **système de revue de logiciel de rOpenSci**. -- * Vous motiver pour la **revue de logiciel et code scientifique**. -- Mon expérience est dans
mais généralisable à d'autres languages. 🔗 Diapos disponibles https://tiny.cc/urfist-salmon --- class: part-slide, center, middle # Présentations 👋 --- # Mes missions autour de R <img src="index_files/figure-html/community-1.png" style="display: block; margin: auto;" /> * rOpenSci * Locke Data * R-hub --- # Bénevolat autour de R <img src="index_files/figure-html/community2-1.png" style="display: block; margin: auto;" /> * Gérante du compte Twitter de R-Ladies Global * Membre de l'équipe de R Weekly (et blogueuse R moi-même) * Éditrice pour le système de revue de paquets de rOpenSci --- # Qu'est-ce que rOpenSci? * Communautés de chercheur·se·s et de développeur·se·s de logiciels * Paquets R pour la science ouverte et reproductible * Contributions par le personnel et la communauté <img src="index_files/figure-html/ropensci-logo-1.png" style="display: block; margin: auto;" /> --- # `https://ropensci.org/packages/` <img src="index_files/figure-html/webshot-packages-1.png" style="display: block; margin: auto;" /> --- # Des paquets pour la science Extraction de données du web ou de formats exotiques, analyse de texte, etc. * Encourager le scriptage plutôt que le clic, * Réduire la duplication des efforts, * Libérer du temps et de l'énergie pour la science elle-même. --- # Des paquets de qualité La qualité d'un logiciel, c'est important ! <blockquote class="twitter-tweet" data-lang="ca"><p lang="en" dir="ltr">If you use software that lacks automated tests, you are the tests.</p>— Jenny Bryan (@JennyBryan) <a href="https://twitter.com/JennyBryan/status/1043307291909316609?ref_src=twsrc%5Etfw">22 de setembre de 2018</a></blockquote> Comment assurer la qualité de nos paquets ? --- class: part-slide, center, middle # Revues de paquets R de rOpenSci 🔍 --- # Revues de paquets R de rOpenSci Software peer review -- * Stimule l'adoption des meilleurs pratiques et standards. -- * Construit une communauté de pratique. -- * Partenariats avec le _Journal of Open Source Software_ et _Methods in Ecology and Evolution_ --- # Passer quoi en revue ? -- Jeff Leek https://github.com/jtleek/rpackages <img src="index_files/figure-html/unnamed-chunk-1-1.png" style="display: block; margin: auto;" /> --- # Critères de revue * Licence compatible avec l'_open-source initiative (OSI)_ * Documentation complète * Haut taux de couverture de test * Code lisible * Utilisabilité -- https://ropensci.github.io/dev_guide/building.html -- Tout un livre ! https://ropensci.github.io/dev_guide --- # Comment faire la revue ? * Ouverte & non-accusatoire -- * Pas de rejet -- * Un processus constructif pour tous les acteurs -- * En pratique, utilisation de l'infrastructure de GitHub --- # Dépôt GitHub <img src="index_files/figure-html/onboarding-repo-1.png" width="1401" style="display: block; margin: auto;" /> --- # Onglet de suivi des "problèmes" <img src="index_files/figure-html/onboarding-issues-tracker-1.png" width="1401" style="display: block; margin: auto;" /> --- # Soumettre un paquet <img src="index_files/figure-html/onboarding-submission-1.png" width="1336" style="display: block; margin: auto;" /> --- # Soumettre un paquet <img src="index_files/figure-html/onboarding-submission2-1.png" width="1401" style="display: block; margin: auto;" /> --- # Soumettre un paquet <img src="index_files/figure-html/onboarding-submission3-1.png" width="1401" style="display: block; margin: auto;" /> --- # Soumettre un paquet <img src="index_files/figure-html/onboarding-submission4-1.png" width="1401" style="display: block; margin: auto;" /> --- # Pas de rejets mais... Paquets hors du domaine visé non accueillis. https://ropensci.github.io/dev_guide/policies.html -- * nos catégories: accès à des données, extraction de données, accès à des formats de base de données, manipulation de données, dépôts de données, reproducibilité, données géospatiales, analyse de texte. -- * application _scientifique_ -- * meilleur que les paquets similaires -- En cas de doute, demande de pré-soumission ! --- # Le procédé de révision <img src="index_files/figure-html/onboarding-whole-thread-1.png" width="100" style="display: block; margin: auto;" /> --- # Vérifications par l'éditeur·rice <img src="index_files/figure-html/onboarding-editor-1.png" width="350" style="display: block; margin: auto;" /> --- # Le procédé de revue Deux réviseur·se·s. Discussion continue jusqu'au transfert du paquet. -- Souvent, un article de blog https://ropensci.org/tags/software-peer-review/ --- class: part-slide, center, middle # Revue de code scientifique 🔍 --- # Bénéfices des revues de code * Découverte d'erreur * Amélioration (lisibilité, performance) * Apprentissage de trucs et astuces * Créer la culture pour changer les pratiques des journaux ? --- # Code de tout travail scientifique ? Inspiration: rOpenSci Community Call, _Code Review in the Lab, or ... How do you review code that accompanies a research project or paper?_ Vidéo 🎥 et ressources 🗒: https://ropensci.org/commcalls/2018-10-16/ --- # Élargir le système de rOpenSci ? * Standards de code * Liste de critères de revue * Automatisation * Culture, communauté --- # Standards de code Notamment la structure de projet: rOpenSci révise des _paquets R_. Pour tout projet avec du code R, * paquet R ([_research compendium_](https://github.com/ropensci/unconf17/issues/5)), * structure plus simple ? En tout cas, conventions dans l'équipe. --- # Liste de critères de revue Que doit regarder le·a collègue qui lit le code ? Priorité à quoi ? --- # Automatisation Libérer du temps et de l'énergie pour ce qui compte : la science, et la créativité ! ## Automatiser la revue ? * Automatisation via la structure de paquet (`R CMD check`, `goodpractice`) * [`pkgreviewr`](https://github.com/ropenscilabs/pkgreviewr) par l'éditrice de rOpenSci Anna Krystalli --- # Automatisation Libérer du temps et de l'énergie pour ce qui compte : la science, et la créativité ! -- ## Automatiser la création de projet ? * Paquet `usethis`. `usethis::create_project()`, `usethis::use_r("ma-fonction")`, etc. * Recettes basées sur `usethis`. [Paquet `starters` de Locke Data](https://github.com/lockedata/starters). --- # Culture, communauté -- * Donner de la **valeur** à la revue de code (temps non perdu). * Et dans une équipe, qui fait le travail de création des outils ? Quel **poste** pour cela, quelle reconnaissance ? -- * **Confiance** pour ouvrir son code, et faire des remarques. _blameless post-mortem_. [Hilary Parker's "Opiniated Analysis Development"](https://es.slideshare.net/hilaryparker/opinionated-analysis-development), [also](https://peerj.com/preprints/3210/). -- * Besoin de **formation**. URFIST, The Carpentries. --- class: part-slide, center, middle # Pour finir 💼 --- # Approfondir * https://ropensci.org/software-review/ (inclue lien pour devenir réviseur·se) * rOpenSci Community Call, _Code Review in the Lab, or ... How do you review code that accompanies a research project or paper?_ Vidéo 🎥 et ressources 🗒: https://ropensci.org/commcalls/2018-10-16/ * [Hilary Parker's "Opiniated Analysis Development"](https://es.slideshare.net/hilaryparker/opinionated-analysis-development), [also](https://peerj.com/preprints/3210/). * Forum de discussion de rOpenSci https://discuss.ropensci.org/ --- # Meta * Diapos réalisées avec [`xaringan`](https://github.com/yihui/xaringan) * Captures d'écran avec [`webshot`](https://github.com/wch/webshot) et [`magick`](https://github.com/ropensci/magick) _ropensci/magick_ * Emojis ajouté via [`emo`](https://github.com/hadley/emo) * Icônes ajoutées via [`icon`](https://github.com/ropenscilabs/icon) _ropenscilabs/icon_ --- # Merci ! https://tiny.cc/urfist-salmon [<i class="fab fa-twitter "></i>](https://twitter.com/ma_salmon) ma_salmon [<i class="fab fa-github "></i>](https://github.com/maelle) maelle [<i class="fa fa-bookmark "></i>](https://masalmon.eu) masalmon.eu [<i class="fab fa-twitter "></i>](https://twitter.com/rOpenSci) rOpenSci [<i class="fab fa-github "></i>](https://github.com/ropensci) ropensci [<i class="fa fa-bookmark "></i>](https://ropensci.org) ropensci.org <iframe src="https://giphy.com/embed/26FPzWY5I6WqElJC0" width="480" height="330" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/birthday-happy-birthday-box-gift-26FPzWY5I6WqElJC0">via GIPHY</a></p>