class: center, middle, inverse, title-slide # Système de revue de paquets R de rOpenSci ## Maëlle Salmon ### 2020/01/29 --- # Mes objectifs -- * Présenter le **système de revue de logiciel de rOpenSci**. -- * Parler de ses aspects pertinents pour toute **revue de logiciel et code**. -- Mon expérience est dans
. 🔗 Diapos disponibles https://tiny.cc/insee-maelle --- class: part-slide, center, middle # Présentations 👋 --- # Ma formation * ENS Paris * Licence Biologie, * Master Écologie. * Mastère spécialisé de santé publique, Pasteur-CNAM. * Thèse de statistique, LMU Munich. 🤓 --- # Mes missions autour de R <img src="index_files/figure-html/community-1.png" width="400" style="display: block; margin: auto;" /> * rOpenSci * Locke Data * R-hub --- # Bénevolat autour de R <img src="index_files/figure-html/community2-1.png" width="400" style="display: block; margin: auto;" /> * Gérante du compte Twitter de R-Ladies Global * Membre de l'équipe de R Weekly (et blogueuse R 😁) * É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" width="533" 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, par exemple données sémantiques (RDF, JSON-LD), 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 _je_ juge des paquets ? * Comment assurer la qualité des paquets de rOpenSci ? --- class: part-slide, center, middle # Mes critères de jugement de paquets 🔍 --- # Mes critères * Développement actif ? * Tests ? * Documentation ? * Popularité ? (Téléchargements, _reverse dependencies_) * Personne ou organisation de confiance ? --- # Mes critères * Développement actif ? * Tests ? * Documentation ? * Popularité ? * Personne ou **organisation de confiance** ? 😉 --- # Autres références * https://simplystatistics.org/2015/11/06/how-i-decide-when-to-trust-an-r-package/ * https://github.com/ropenscilabs/packagemetrics * https://rud.is/b/2017/02/23/on-watering-holes-trust-defensible-systems-and-data-science-community-security/ * Ce que vous faites ici --- 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" width="1152" 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://devguide.ropensci.org/ --- # 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="1315" style="display: block; margin: auto;" /> --- # Onglet de suivi des "problèmes" <img src="index_files/figure-html/onboarding-issues-tracker-1.png" width="1295" style="display: block; margin: auto;" /> --- # Soumettre un paquet <img src="index_files/figure-html/onboarding-submission-1.png" width="1295" style="display: block; margin: auto;" /> --- # Soumettre un paquet <img src="index_files/figure-html/onboarding-submission2-1.png" width="1295" style="display: block; margin: auto;" /> --- # Soumettre un paquet <details closed> <summary> <span title='Click to Expand'> Questions à la soumission </span> </summary> ```markdown ## Scope - Please indicate which category or categories from our [package fit policies](https://ropensci.github.io/dev_guide/policies.html#package-categories) this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.): - [ ] data retrieval - [ ] data extraction - [ ] database access - [ ] data munging - [ ] data deposition - [ ] workflow automataion - [ ] version control - [ ] citation management and bibliometrics - [ ] scientific software wrappers - [ ] database software bindings - [ ] geospatial data - [ ] text analysis ``` </details> <br> --- # 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/ --- # Et plus encore ? Projet en cours * Orientation supplémentaire : revue d'implémentations de méthodes statistiques * Meilleure formation, meilleure documentation, nouveaux outils pour l'adoption de notre système Plus d'infos: * https://ropensci.org/blog/2019/07/15/expanding-software-review/ * https://github.com/ropenscilabs/statistical-software --- # Related efforts **R Validation Hub** _cross-industry initiative whose mission is to enable the use of R by the Bio-Pharmaceutical Industry in a regulatory setting, where the output may be used in submissions to regulatory agencies._ https://www.pharmar.org/ --- class: part-slide, center, middle # Revue de code d'analyse 🔍 --- # Revoir le code de qui ? Vérifier les paquets c'est bien, mais que fait-on avec les paquets ? --- # Bénéfices des revues de code * Découverte d'erreur * Amélioration (lisibilité, performance) * Apprentissage de trucs et astuces * Meilleure conscience, meilleur sommeil --- # Code de tout travail d'analyse ? 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 : l'analyse, 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 💼 --- # Conclusion : super système de revue 😉 -- * Travail en cours pour l'élargir aux paquets de **statistique** + le rendre plus **portatif**. -- * Aspects importants de notre système (selon moi 👼) * Standards de code * Liste de critères de revue * Automatisation * Culture, communauté --- # 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 [`webshot2`](https://github.com/rstudio/webshot2) 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/insee-maelle [<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>