Closed mpru closed 1 week ago
Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help
for help.
:rocket:
Editor check started
:wave:
git hash: 4b057e67
(Checks marked with :eyes: may be optionally addressed.)
Package License: GPL-2
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
|type |package | ncalls|
|:----------|:---------|------:|
|internal |base | 104|
|internal |karel | 44|
|internal |utils | 9|
|internal |methods | 5|
|internal |stats | 3|
|imports |cli | 21|
|imports |dplyr | 10|
|imports |ggplot2 | 6|
|imports |magrittr | 6|
|imports |tidyr | 4|
|imports |purrr | 2|
|imports |gganimate | 1|
|suggests |testthat | NA|
|suggests |knitr | NA|
|suggests |rmarkdown | NA|
|linking_to |NA | NA|
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(
c (33), message (22), call (17), paste (10), for (4), all (3), list (3), nrow (2), apply (1), array (1), dim (1), emptyenv (1), if (1), integer (1), new.env (1), numeric (1), seq_len (1), which (1)
beepers_present (3), get_beepers_df_row (2), get_pkg_env (2), load_super_karel (2), move (2), right_is_clear (2), turn_around (2), avanzar (1), cargar_super_karel (1), check_user_world (1), check_walls (1), conseguir_amb (1), create_beepers (1), darse_vuelta (1), derecha_abierto (1), draw_karel_df (1), facing_east (1), facing_north (1), facing_south (1), facing_west (1), front_is_blocked (1), front_is_clear (1), generate_world (1), karel_has_beepers (1), karel_has_no_beepers (1), left_is_blocked (1), left_is_clear (1), no_beepers_present (1), pick_beeper (1), plot_static_world (1), put_beeper (1), put_hor_walls (1), right_is_blocked (1), run_actions (1), turn_left (1), turn_right (1)
cli_abort (21)
n (4), tibble (3), filter (2), case_when (1)
de (7), data (2)
geom_point (2), scale_x_continuous (2), scale_y_continuous (2)
%>% (6)
el (5)
expand_grid (4)
time (3)
pmap_dfr (2)
gifski_renderer (1)
base
karel
cli
dplyr
utils
ggplot2
magrittr
methods
tidyr
stats
purrr
gganimate
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
The package has: - code in R (100% in 9 files) and - 1 authors - 12 vignettes - no internal data file - 7 imported packages - 63 exported functions (median 1 lines of code) - 111 non-exported functions in R (median 3 lines of code) --- Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used: - `loc` = "Lines of Code" - `fn` = "function" - `exp`/`not_exp` = exported / not exported All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by [the `checks_to_markdown()` function](https://docs.ropensci.org/pkgcheck/reference/checks_to_markdown.html) The final measure (`fn_call_network_size`) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile. |measure | value| percentile|noteworthy | |:------------------------|-----:|----------:|:----------| |files_R | 9| 55.2| | |files_vignettes | 12| 99.6| | |files_tests | 5| 81.7| | |loc_R | 912| 65.7| | |loc_vignettes | 1844| 96.8|TRUE | |loc_tests | 310| 64.9| | |num_vignettes | 12| 99.9|TRUE | |n_fns_r | 174| 87.6| | |n_fns_r_exported | 63| 91.0| | |n_fns_r_not_exported | 111| 85.7| | |n_fns_per_file_r | 10| 86.7| | |num_params_per_fn | 2| 11.9| | |loc_per_fn_r | 1| 0.0|TRUE | |loc_per_fn_r_exp | 1| 0.0|TRUE | |loc_per_fn_r_not_exp | 3| 1.5|TRUE | |rel_whitespace_R | 21| 69.7| | |rel_whitespace_vignettes | 38| 98.6|TRUE | |rel_whitespace_tests | 17| 57.6| | |doclines_per_fn_exp | 66| 77.1| | |doclines_per_fn_not_exp | 0| 0.0|TRUE | |fn_call_network_size | 66| 71.8| | ---
Click to see the interactive network visualisation of calls between objects in package
goodpractice
and other checks#### 3a. Continuous Integration Badges [![pkgcheck](https://github.com/mpru/karel/workflows/pkgcheck/badge.svg)](https://github.com/mpru/karel/actions) [![R-CMD-check](https://github.com/mpru/karel/workflows/R-CMD-check/badge.svg)](https://github.com/mpru/karel/actions) **GitHub Workflow Results** | id|name |conclusion |sha | run_number|date | |----------:|:--------------------------|:----------|:------|----------:|:----------| | 7347999524|pages build and deployment |success |1367b6 | 20|2023-12-28 | | 7347980615|pkgcheck |success |4b057e | 13|2023-12-28 | | 7347980611|pkgdown |success |4b057e | 23|2023-12-28 | | 7347980603|R-CMD-check |success |4b057e | 5|2023-12-28 | --- #### 3b. `goodpractice` results #### `R CMD check` with [rcmdcheck](https://r-lib.github.io/rcmdcheck/) rcmdcheck found no errors, warnings, or notes #### Test coverage with [covr](https://covr.r-lib.org/) Package coverage: 87.04 #### Cyclocomplexity with [cyclocomp](https://github.com/MangoTheCat/cyclocomp) The following functions have cyclocomplexity >= 15: function | cyclocomplexity --- | --- check_user_world | 28 check_walls | 16 #### Static code analyses with [lintr](https://github.com/jimhester/lintr) [lintr](https://github.com/jimhester/lintr) found the following 53 potential issues: message | number of times --- | --- Avoid library() and require() calls in packages | 4 Lines should not be more than 80 characters. | 45 unexpected symbol | 4
:heavy_multiplication_x: The following function name is duplicated in other packages: - - `move` from BacArena, chess, cubing, red, rugarch, seqinr, SpaDES.tools
|package |version | |:--------|:--------| |pkgstats |0.1.3.9 | |pkgcheck |0.1.2.11 |
This package is in top shape and may be passed on to a handling editor
@mpru Thank you for the submission. I am working on finding a handling editor.
@ropensci-review-bot assign @maurolepore as editor
Assigned! @maurolepore is now the editor
@mpru, es un placer editar tu paquete.
Pronto empezaré a trabajar en la lista de verificación.
Mientras tanto:
@mpru, perdón por la confusión.
Dado que el paquete es multilingüe, el equipo editorial considera que la mejor opción es nominar un/a revisor/a en español y otro/a en inglés.
Hola, @maurolepore, gracias por involucrarte en este envío. Ambos idiomas están bien para mí y me parece genial la idea del equipo editorial. No estoy familiarizado con los nombres de la lista de revisores como para nominar candidatos. ¿Tal vez vos puedas ayudarme con eso?
@mpru,
Seguro ayudo con eso. Nuestra guia ofrece varias ideas sobre donde buscar revisore/as:
https://devdevguide.netlify.app/es/softwarereview_editor.es#where-to-look-for-reviewers
Yo usare esa misma guia pero en rOpenSci nos interesa tu opinion.
Cuando encuentres algun/a candidato/a por favor consiera evitar conflictos de interes.
Dear @mpru,thanks for your work. Editor checks were super smooth.
You'll see some comments that require your attention. They are labeled ml01, ml02, and so on. The one(s) starting with a checkbox are required. The one(s) starting with a bullet are just for your consideration.
FIT
rOpenSci accepts this package as part of the Champions program.
VIGNETTES
karel is a new R package ...
TESTS
[ ] ml02. Please explain if and how the package tests interactivity.
ml03. I see few general tests. Consider spliting them in to more, smaller, specific tests so that it's easier to detect the problem when a test fails.
A search for "test_that(" shows that the test titles seem too general -- https://github.com/search?q=repo%3Ampru%2Fkarel%20test_that(&type=code
And I see many expectations per tests, e.g.:
https://github.com/mpru/karel/blob/master/tests/testthat/test-actions.R
You want to arrange things such that, when a test fails, you’ll know what’s wrong and where in your code to look for the problem. This motivates all our recommendations regarding file organisation, file naming, and the test description. Finally, try to avoid putting too many expectations in one test - it’s better to have more smaller tests than fewer larger tests.
-- https://r-pkgs.org/testing-basics.html#test-organisation
Usually you care about two things when testing an error:
- Does the code fail? Specifically, does it fail for the right reason?
- Does the accompanying message make sense to the human who needs to deal with the error?
-- https://r-pkgs.org/testing-basics.html#expectations
library()
calls." -- https://r-pkgs.org/testing-basics.html#test-organisationFor example see https://github.com/search?q=path%3Atests%2Ftestthat+repo%3Ampru%2Fkarel+library%28karel%29&type=code
Thanks Mauro! I already started working in your comments, I'm reviewing and changing my unit tests. I'll suggest reviewers as well.
@ropensci-review-bot seeking reviewers
Please add this badge to the README of your package repository:
[![Status at rOpenSci Software Peer Review](https://badges.ropensci.org/620_status.svg)](https://github.com/ropensci/software-review/issues/620)
Furthermore, if your package does not have a NEWS.md file yet, please create one to capture the changes made during the review process. See https://devguide.ropensci.org/releasing.html#news
Hi @maurolepore. I'm sorry I couldn't do it sooner but I wanted to let you know that I worked on your comments and think it might be ready to give it another try.
Vignettes
Tests
Unit tests were rewritten to make them more specific:
I think it's easier now to detect the problem when a test fails, as the titles are more descriptive of what is being evaluated. Large tests with lots of expectations were replaced by smaller ones.
Most of the test files were separated, creating a version for each implemented language. It is important to evaluate the external functions available in each language, to ensure that they are calling the correct internal functions.
Unit tests based on the vdiffr package were added to test for interactivity with snapshots:
Before your comment, the package did not test interactivity or use any state-of-the-art tooling for something like that. Following your observation, I added test units that are based on the vdiffr package, which allows monitoring the appearance of graphics by generating SVG files and saving them as testthat snapshots.
When a person using this package writes code to make Karel solve a problem, the result will be, provided everything goes well, a gif that shows Karel executing the programmed actions. The gif is created internally with gganimate from many ggplot2 plots. The package offers a function to access any of these graphs (plot_static_world), which I use to create examples and statements for new exercises, as well for debugging (it's not ment for students). The new units for testing interactivity execute pieces of code (simple or long) for Karel to solve various problems (taken from tutorials on the web) and use plot_static_world() to capture the graph that shows what Karel's world should be like at the end of each process. If the package works correctly and nothing has broken, these tests should indicate agreement between the captured image and the snapshot saved as reference. These tests are located in the file test-snapshots.R
Removed the library() calls in the tests files.
Others
Suggested reviewers
I saw that Maëlle Salmon was recently working on a package called babelquarto to create multilingual websites or books (like the one in the new version of the rOpenSci developer guide). Johannes Ranke and Joel Nitta appear as contributors in the babelquarto repo. Maybe one of these three people could be?
I also thought that we could call on the person who was my mentor during the Champions program, who already knows the project, Lukas Walrich, although I don't know if that could imply a conflict of interest.
Following the suggestion of searching among authors of rOpenSci packages is not easy since this submission does not fall into any of the categories (an exception has been made within the framework of the Champions program).
I didn't understand how to use Airtable to search for potential reviewers, could it be that the general public doesn't have access to the database and only editors?
That's all for now, thanks.
@mpru thanks a lot for this! It will make the reviewers's job easier.
Upgraded the version number from 0.1.1.9000 to 0.1.1.9001 (not sure if this is ok).
I think it's OK. That's the kind of increment I see with fledge::bum_version()
in my own packages.
I didn't understand how to use Airtable to search for potential reviewers, could it be that the general public doesn't have access to the database and only editors?
I think you're right, and Airtable is only useful to editors with the right access permission.
I'll resume the search for reviewers.
@ropensci-review-bot assign @vjimenez9 as reviewer
@vjimenez9 added to the reviewers list. Review due date is 2024-03-14. Thanks @vjimenez9 for accepting to review! Please refer to our reviewer guide.
rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.
@vjimenez9: If you haven't done so, please fill this form for us to update our reviewers records.
@vjimenez9, dado que el paquete es multilingüe, el equipo editorial considera que la mejor opción es nominar un/a revisor/a en español y otro/a en inglés. Podias revisarlo en español?
@ropensci-review-bot assign @joelnitta as reviewer
@joelnitta added to the reviewers list. Review due date is 2024-03-24. Thanks @joelnitta for accepting to review! Please refer to our reviewer guide.
rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.
@joelnitta: If you haven't done so, please fill this form for us to update our reviewers records.
:calendar: @vjimenez9 you have 2 days left before the due date for your review (2024-03-14).
Hi!
Hoy es el ultimo dia de revisión que tengo. Ya prácticamente revisé todo el paquete y tengo mis comentarios y anotación...Entiendo que los agrego al documento PlatillaDeRevisionROpenSci.md. y subo este documento acá. Cierto? Espero terminar esto en el transcurso de la tarde, pero espero que no haya mucho problema si concluyo mañana por la mañana, porque mi Mac me esta dando problemas con la subida de archivos a github
Aqui el resultado de mi revisión:
Por favor trata de marcar tantas casillas como te sea posible y elabora tus argumentos en comentarios abajo de cada una. Tu revisión no esta limitada a estos temas, tal como se describe en la guia para revisores (Reviewer Guide)
Por favor describe cualquier relación de trabajo que tengas/hayas tenido con los autores del paquete)
El paquete incluye todos los siguiente tipos de documentación:
[X] Una declaración de necesidades que claramente describe las necesidades que el software esta diseñado a resolver y el public meta que busca atender en el archivo README
[ ] Instrucciones de instalación de la versión en desarrollo del paquete incluyendo cualquier dependencia no-estándar en el archivo README Nota: En README no se especifica que no es posible instalarlo en Ubuntu, tampoco que se requiere tener instalado RUST
[X] Viñeta(s) demostrando la funcionalidad principal que ademas corren localmente
[X] Documentación de las funciones exportadas Nota: Seria muy util que en la documentación se describa cada uno de los parametros de generar_mundo en lugar de solo listarlos. Hay que revisar porque no todas las funciones tienen ayuda (por ejemplo invertir)
[X] Ejemplos (que corren localmente) para todas las funciones exportadas
[X] Directrices comunitarias incluyendo una guia de contribución en el archivo README o el archivo CONTRIBUTING y un archivo DESCRIPTION que incluye URL
, BugReports
and Maintainer
(todas en inglés por concenvión y para que puedan ser autogeneradas con Authors@R
).
Nota: No encontre BugReport, ni Maintener
[X] Instalación: La instalación se completa con éxito tal como fue documentada. En realidad, inicie la instalación en ubuntu, pero me marco que el paquete no estaba disponible para esa versión de R, buscando un poco mas, me tope que era el SO
[X] Funcionalidad: Toda afirmación de funcionalidad del software se confirma como existente.
[X] Desempeño: Toda afirmación de desempeño del software se confirma como alcanzada.
[X] Pruebas automáticas: Hay pruebas unitarias que cubren las funciones esenciales dentro del paquete con un rango razonable de entradas y condiciones. Todas las pruebas corren en la maquina local.
[ ] Directrices de empaque: El paquete cumple con las directrices de empaque de rOpenSci.
Estimación de horas dedicadas a la revisión: 6 horas.
Mis notas:
Empece haciendo la instalación en una computadora con SO Ubuntu y me marcó
Warning in install.packages :
package ‘Karel’ is not available for this version of R
Averigundo un poco, encontré que No hay una versión para ubuntu. Sería util que lo dijeran desde el README.
Luego hice la instalación en una macOS. Les dejo aqui los detalles de los inconvenientes que tuve para realizar la istalación (Solo con fines informativos):
> install.packages("karel")
also installing the dependencies ‘scales’, ‘lpSolve’, ‘ggplot2’, ‘transformr’, ‘tweenr’, ‘gganimate’, ‘gifski’
Warning in install.packages :
lzma decoder corrupt dataY
Solución: descargar los compilables...
ejecutar_acciones()
ℹ The package "gifski" is required to use the `gifski_renderer`
✖ Would you like to install it?
Me indica que no esta instalado un compilador...y me pide instalar rust...¿Porque ? Bueno pues instalo rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Al volver intentar me dice:
Error in loadNamespace(x) : there is no package called ‘gifski’
Vuelvo a instalar el paquete, y me dice:
There is a binary version available but
the source version is later:
binary source needs_compilation
gifski 1.6.6-1 1.12.0-2 TRUE
Do you want to install from sources the package which needs compilation? (Yes/no/cancel)
Durante 3 ocasiones le dije si y me volvía a marcar que la instalación se daba con errores, la ultima vez, le dije que no compilara...Y jalo!! jejeje.
Del texto :
En general es muy bonito "el karel" .
Tengo algunas sugerencias de modificación en el texto, que son eso "sugerencias" o comentarios de mi punto de vista. Siempre en el afan de mejorar o hacer mas claro el texto.
====Del texto:
Dice: Desafortunadamente, las computadoras no entienden español ni otro idioma humano. Hay que pasarles las instrucciones en un lenguaje que sean capaces de entender. Para eso debemos aprender algún lenguaje de programación, Comentario: Pero...los lenguajes de programación están escritos en su mayoría en idioma ingles, hay algunos incluso en español...que son idiomas humanos, creo que el problema no es el idioma sino la sintaxis del idioma.
Dice: Ahora bien, ¿por qué debemos estudiar programación en si nos dedicamos a la Estadística? La actividad de los profesionales estadísticos está atravesada en su totalidad por la necesidad de manejar con soltura herramientas informáticas que nos asisten en las distintas etapas de nuestra labor, desde la recolección y depuración de conjuntos de datos, pasando por la aplicación de distintas metodologías de análisis, hasta la comunicación efectiva de los resultados. Comentario: Me parece que no todo el mundo al que va dirigido este paquete es del area de estadística...O aunque aplique estadística se identifica como analista de datos o científicos de datos...¿No sería mas conveniente remplazar la pregunta por: ¿Porqué debemos aprender a programar cuando queremos analizar datos, generar estadísticas, gráficas y conclusiones? La actividad de los profesionales estadísticos, de ciencia de Datos, o cualquier persona que requiera hacer análisis de datos se potencia con el manejo de herramientas bioinformáticas y capacidades de programación que nos asisten...
Dice: en este tutorial estudiaremos los conceptos básicos de esta disciplina
Sugerencia: en este tutorial estudiaremos los conceptos básicos de los lenguajes de programación.
Dice: El lengua de programación en el que se basa ... Debe decir: El lenguaje de programación en el que se basa ...
Dice: que viene bien tener presentea.
Debe decir: que viene bien tener presente.
Dice: En programación, el lenguaje artificial e informal
Comentario:
No estoy tan de acuerdo que el pseudocodigo sea un "lenguaje artificial e informal".
Dice: El programa se guarda en un archivo con un nombre generalmente dividido en dos partes por un punto, por ejemplo: mi_primer_programa.R. La primera parte es la raíz del nombre con la cual podemos describir el contenido del archivo. La segunda parte es indicativa del uso del archivo, por ejemplo, .R indica que contiene un programa escrito en el lenguaje R. El proceso general de ingresar o modificar el contenido de un archivo se denomina edición.
Sugerencia: La codificación del programa se guarda en un archivo de texto plano con un identificador generalmente dividido en dos partes por un punto, por ejemplo: mi_primer_programa.R. La primera parte es el nombre del archivo. La segunda parte es indicativa del lenguaje que puede interpretar las instrucciones, por ejemplo, .R indica que contiene un programa escrito en el lenguaje R. El proceso general de escribir o modificar las instrucciones en un archivo se denomina edición.
En la sección de los errores creo que sería util hablar de que hay dos tipos de errores: los lógicos y los sintácticos. Estos últimos tienen que ver cuándo las instrucciones, o nombres de variables no son correctamente escritos y el programa no puede "interpretarlos". Los errores lógicos, se generan con instrucciones que el programa puede interpretar, pero que realizan cosas que no queremos.
Estoy de acuerdo que el procesador es el lenguaje que "procesa, interpreta y ejecuta" las instrucciones....Pero la frase "Todos los elementos disponibles para ser utilizados por el procesador constituyen su entorno o ambiente." Yo digo que no son elementos disponibles para el procesador, son elementos disponibles para el programador.
Me parece que hay que tener cuidado con decir que el editor es "un Word muy simple", puede sugerir erróneamente que se puede usar word para editar un archivo, cosa que es completamente errónea. Necesitamos un poderoso editor de texto plano como lo proporciona RStudio que puede hacer muchísimas cosas que un "simple word" no puede hacer durante la creación de un archivo de programación.
Dice: Abajo está la consola. Es la ventana que se comunica con R
Comentario: La consola es el ambiente interactivo entre R y el usuario.
Dice: Environment (ambiente): muestra todos los elementos que componen al ambiente o entorno.
Sugerencia: Environment (ambiente): muestra todos objetos generados en la sesión presente
Dice: History (historial): lista todas las instrucciones que R ha corrido anteriormente.
Sugerencia: History (historial): lista todas las instrucciones que el usuario ha ejecutado.
(Porque en los sistemas mutiusuario no vez todo lo que ha ejecuta R, solo lo que tu usuario ha ejecutado)
Dice: Packages: listado de los “paquetes” que tenemos instalados (ver más adelante). Debe decir: Packages: Herramienta de instalación, actualización y carga de los paquetes de R.
Tu ejemplo de la consola me confunde un poco:
1 + 2
#> [1] 3
5 * 3
#> [1] 15
exp(2)
¿No debería la instrucción ir después del prompt ">". Y justo la respuesta de R ir sin prompt? O ¿que es #> ? En todo caso, describe al usuario cual es el prompt del sistema que esta en espera de una instrucción y con cual prompt (si existe) , R te muestra los resultados
La función generar_mundo tiene un argumento "mundo001". Podrias aprovechar este hecho para introducir el concepto de "argumento", y porque los paréntesis vacíos a veces es la ausencia de argumentos o la existencia de argumentos definidos por default.
Este es un tema muy importante y muy complejo, pero en el flujo de tu documentación siento un salto cuántico importante. Pasan de 0 a 100 en un solo acelerón...Pero no tengo una propuesta concreta de como "deshacelerar"
En esta sección también varias aseveraciones que me parecen desafortunadas. Por poner solo un ejemplo (hay varios) : Dice Es importante notar que, para que podamos usar la función girar_izquierda(), la misma tiene que ser definida y evaluada por R antes de que hagamos uso de la misma para resolver nuestro problema:
Comentario:
Yo creo en este caso, la función no es definida por R, es definida por el usuario, y esta definición debe estar "antes" de ser invocada en un programa de R.
En el propio texto indicas la importancia de documentar, para que se usa tu función y en el ejemplo nunca se especifica para qué sirve.
Nunca se indico qué significan los # al inicio de la linea y sería muy util para los usuarios, así que se puede aprovechar esta sección agregando un comentario que explica que la documentación se introduce como "comentarios" que son antecedidos por #
Podrías poner al menos una liga con lineamientos para la documentación de funciones (por ejemplo: https://combine-australia.github.io/r-pkg-dev/documenting-functions.html). O cualquier otra
Dice: se procede a ejecutar las acciones encerradas por esta estructura.
Sugiero que diga: se procede a ejecutar las acciones delimitadas entre las {} que definen el cuerpo de esta estructura.
Dice: Si la condición no se verifica,
Debe decir: Si la condición es falsa
Comentario: siempre se verifica, y esta verificación a veces arroja verdadero a veces falso. Pero veo que a lo largo del texto se usa muchas veces "verificar" como sinónimo de la evaluación verdadera, entonces, quizá solo al inicio, indicar esta "interpretación" de la palabra verificar. Algo así como: "Decimos que un enunciado se verifica, cuando su evaluación lógica es verdadera"
Dice: Mantener la prolijidad en nuestros programas es esencial. Sugiero que diga: Mantener la claridad en nuestros programas es esencial.
Dice: La letra i recibe el nombre de variable de iteración
Comentario: No hemos definido que es una variable. Mi sugerencia es incluir desde la primera o segunda seccion
Dice: El bloque de instrucciones se repite tantas veces como i tarde en llegar a 5 partiendo desde 1.
Sugerencia: El bloque de instrucciones se repite tantas veces como i tarde en llegar a 5 partiendo desde 1, esto se define con un rango de valores en R usando la nomenclatura 1:5.
Dice:
for (<variable> in <valor1>:<valor2>) {
...Acción/es...
}
Sugerencia:
for (<variable> in <valorInicial>:<valorFinal>) {
...Acción/es...
}
@ropensci-review-bot submit review https://github.com/ropensci/software-review/issues/620#issuecomment-2000346572 time 6
Logged review for vjimenez9 (hours: 6)
Muchas gracias @vjimenez9
Edite tu comentario para mostrar tu revision directamente aca. Es la forma mas habitual. Perdon que me olvide de aclararlo.
:calendar: @joelnitta you have 2 days left before the due date for your review (2024-03-24).
¡Hola @vjimenez9!
Muchísimas gracias por haber aceptado revisar este paquete y por el esfuerzo y dedicación puestos en esta tarea. Tus observaciones son muy útiles. A continuación voy a ir respondiéndolas:
Documentación
Instrucciones de instalación Nota: En README no se especifica que no es posible instalarlo en Ubuntu, tampoco que se requiere tener instalado RUST
Acerca de la instalación en Ubuntu, no he podido reproducir este inconveniente. De hecho, el paquete ha sido desarrollado en Ubuntu, ya que es el sistema operativo con el que trabajo. Utilicé rhub::check_on_ubuntu()
para evaluarlo en un medio externo y al parecer la evaluación fue exitosa.
De todas formas, veo en la salida que muestras que dice "Karel" con mayúscula, el paquete se llama "karel" con minúscula. ¿Puede que sea esa la razón por la cual no lo pudiste instalar?
Tampoco hemos detectado problemas de instalación en Windows o en Posit Cloud, que son los entornos más utilizamos en clase. Además de correr pkgcheck, he utilizado devtools para chequear el paquete con check_win, abajo pongo los enlaces, no parece haber habido algún problema relacionado a la instalación:
devtools::check_win_devel()
]()devtools::check_win_oldrelease()
devtools::check_win_release()
Con respecto a macOS, he corrido devtools::check_mac_release()
y no parece haber detectado problemas con la instalación. Lamentablemente ni yo ni las personas en mi entorno usan macOS como para poder hacer pruebas locales, no sé cómo afrontar esta parte, agradezco sugerencias.
Funcionalidad
El punto Directrices de empaque no ha sido tildado, ¿podrías orientarme acerca de qué aspecto revisar? Entiendo que relacionado con esto debe estar el comentario de la revisón que dice:
¿El paquete cumple con la guía de embalaje rOpenSci? en general si
Comentarios de la revisión
¿El código cumple con los principios generales de la guía de revisión de Mozilla? No me queda claro si hubo alguna revisión por pares, o como dice la guia es un Flying Solo. Por otro lado me parece que la meta es clara y se cumple.
El paquete no ha tenido otra revisión por fuera de rOpenSci, pero participar del presente proceso de revisión de rOpenSci a través del programa Champions satisface este requisito.
¿Hay duplicación de código en el paquete que debería reducirse? No necesariamente se duplica, pero hay lugares donde se puede obtimizar. Por ejemplo donde se dibuja a Karel, se pueden definir un grupo de vectores que se asignen al tible en función de la dirección, en lugar de crear los 4 tibles por separado. Tambien cuando se hacen los chequeos ...se podria genear una función a la que se llama multiples veces con el objeto a checar... etc.
Cambiar la estructura de objetos diseñada para graficar a Karel en cada paso implicaría reformar todo el código base del paquete. En su uso no se me han presentado situaciones que me hicieran pensar que una reestructuración sea necesaria. ¿Consideras estrictamente necesario este cambio? ¿O es sólo una observación?
Sección Mis notas
Averigundo un poco, encontré que No hay una versión para ubuntu. Sería util que lo dijeran desde el README. Luego hice la instalación en una macOS. Les dejo aqui los detalles de los inconvenientes que tuve para realizar la istalación (Solo con fines informativos):
Ver mi comentario anterior al respecto.
Sugerencias de modificación en el texto.
Con respecto a tus sugerencias de mejoras para el texto de los tutoriales, te agradezco por cada una de ellas y por haberlo leído con atención. Incorporé casi todas en el commit https://github.com/mpru/karel/commit/fb65a4c40118cff94a756968458f459ec31335a9, dejando de lado sólo algunas porque se refieren a cuestiones que en realidad estaban resueltas o presentes en otras partes, o por diferencia de criterio.
Bueno, esto es lo que tengo para responder con respecto a tu revisión. Te agradezco nuevamente por ĺa buena voluntad y disposición de evaluar mi trabajo, espero que podamos seguir trabajando hasta lograr el objetivo.
Estimado @mpru:
Tienes razón, es muy probable que el error fue por la K mayúscula de Karel en la instalación de ubuntu. Esta fue la razón por la que no puse el tilde en "directrices de empaque". porque no me funcionaba en ubuntu y hubo complicaciones en mac, básicamente fue esa la razón.
Reestructurar el código para reducir duplicidad o simplificarlo, es una sugerencia, y no un requisito obligatorio. No tengo problema con que se quede como esta. Finalmente funciona, y funciona bien.
Tu herramienta es muy bonita, pero finalmente tengo ya varios años generando material para la enseñanza de programación y por eso me atreví a SUGERIR tan detalladamente en el texto, siempre con el objetivo de mejorarlo. Me parece que la mayoría de lo vital quedo plasmado. Supongo que con esto terminan mis sugerencias y no me queda mas que felicitarte.
@joelnitta just a friendly reminder that we're looking forward to your review :-)
The package includes all the following forms of documentation:
URL
, BugReports
and Maintainer
(which may be autogenerated via Authors@R
).Estimated hours spent reviewing: 5
Who is Karel?
section of the README hints at the need but does not describe it explicitly.Many of the error messages are preceded by cli::cli_rule()
. While of course informative error messages are important, care should be taken that the package is not overly chatty. I don't see why the cli::cli_rule()
is needed.
For expect_error()
, it is a good idea to indicate the expected error message using the regexp
argument so that you know the error is actually the expected one and not another error. This also makes the intention of the test clearer, for example the first test of test-set_up.R
.
There is a lot of repeated code in test-set_up.R
where each list of world elements (world_test
) is being defined slightly differently. I think this could be simplified by starting with a single world_test_template
list, then modifying it for each test to check that the correct error message is generated. For example:
world_test_template <- list(
nx = 6, ny = 4,
hor_walls = dplyr::tibble(x = 3, y = 1, lgth = 3),
ver_walls = dplyr::tibble(x = 3, y = 0, lgth = 1),
karel_x = 1, karel_y = 1,
karel_dir = 1,
beepers_x = 2, beepers_y = 1, beepers_n = 1,
beepers_bag = Inf)
test_that("The generic world template works correctly before modifying it
in subsequent tests", {
expect_no_error(generar_mundo(world_test_template))
expect_no_error(generate_world(world_test_template))
})
test_that("Karel's initial direction is required when creating a new world
provided as a list by the user.", {
world_test <- world_test_template
world_test$karel_x <- NULL
expect_error(generate_world(world_test), "karel_x is missing")
})
test_that("The correct number of avenues (nx) is required when creating a newa
world provided as a list by the user.", {
world_test <- world_test_template
world_test$nx <- 6.4
expect_error(
generate_world(world_test),
"nx, the number of avenues, must be numeric of length 1")
})
It would be good to add a test coverage badge so we can verify what percentage of functions are included in tests.
I recommend use of if (interactive())
instead of if(FALSE)
for skipping example code like run_actions()
that should not be run during checks. if (interactive())
is more explicit in its intent than if(FALSE)
, and will work when users copy-paste the example code. Sometimes CRAN checks can be picky about how you specify which code to skip in examples.
As far as I know, this package is unique in its approach to multilingual functionality and documentation. I applaud the author for this commitment to breaking down linguistic barriers. However, there are several aspects to consider carefully here.
I am a little concerned about the multilingual aliases for function names. First, I think ultimately it could be counter-productive for the learners. For better or worse, English is the standard language used in programming. If the goal is to teach students programming, at some point they will have to deal with words that are in English. We can even see this in karel
lessons: although the karel
functions have names in Spanish, the learners still need to use base R code with syntax like if()
, else()
, function()
, etc. It may be better to get them used to writing R syntax in English from the start instead of mixing English and Spanish (or another language). Furthermore, CRAN does not allow non-ASCII characters in R code, so it will be difficult or impossible to display function names in some non-English languages. Finally, using only one name per function makes the package easier to maintain. Currently, entire test files are duplicated and must be maintained due to having function aliases. However, as I mention below, one argument in favor of function aliases is that it allows you to maintain help files in a different languages... this is a complicated topic!
Apart from function names, I think localization of function UI and documentation is absolutely a plus and should be done. I see this as falling into three main categories: localization of UI, documentation of functions in the package (help files), and the package website. This package is pushing the limits of what R can do in terms of multilingual functionality, and as I describe below, mature solutions for each of these are not yet available in some cases.
For localizing the UI (function messages), I recommend the potools package (and PO files). This provides a very clean way to localize a package. Once it is set up, the user should have a seamless linguistic experience: if they are using a computer with a Spanish locale, all of the package messages will be in Spanish; same for English, etc. To get started with potools
, I recommend this blog post by Maëlle Salmon. This is the localization aspect that has the most mature solution available.
@eliocamp is working on a package to localize help file contents, rhelpi18n. It should eventually provide a similar seamless experience as UI localization with PO tools, but unfortunately does not seem ready for production use yet. So honestly I am not sure what to do here. I wish there was a way to provide a help file in an alternate language that did not require a different function name. Actually, this may be a point in favor of keeping function aliases: it actually allows you to provide help files in different languages.
For the website, it would be ideal if there was a "language button" that could be clicked to switch between languages on a given page. With the current setup, both languages (Spanish and English) are displayed in a single webpage, but a given user probably only needs to see one or the other. Also, while this approach works OK for two languages, it would likely become unusable if any more were added. It would be great if pkgdown fully supported multilingual websites, but unfortunately this does not seem to be the case. Although pkgdown can provide website elements in different languages by setting a YAML parameter, it is limited to making a single webpage in one language. Since this is currently set to Spanish, various website elements appear in Spanish even though some of the content is in English. So, in absence of a genuine solution from pkgdown, I wonder if a work-around via forking the package and maintaining a website in a different language from there could be an option. This is not ideal, but it would scale better if multiple languages were to be implemented.
This package is also unique in that much of the vignette contents are actually lessons teaching programming in R with karel
, rather just than how to use the karel
functions. I think it may be preferable to split out the lessons teaching R into their own website. This would make maintaining the package easier. I am not sure of the optimal format, but one that I can recommend is the Carpentries lesson template (known as "the Workbench"). I could easily see the vignette contents being converted into a Carpentries lesson and hosted on the Carpentries Incubator. Please consider this.
I also noticed that much of the lesson content is focused on control flow. While this makes sense as a general feature of programming languages, R these days is often used for data analysis, which may not necessarily put as much emphasis on control flow. I personally almost never use while()
, and try to use apply
or purrr::map_()
family functions instead of for
loops. I wonder if there may be someway to use karel
to help teach data analysis, as it is in relatively high demand.
When the gif plays, it is automatically looped. This makes it a bit hard to tell where the commands start and end, especially if Karel ends up in the same place she started. You may want to add "start" and "end" text to make this clearer. Another idea is to make the looping optional, since it is a bit confusing to the learner that Karel repeats her actions even though we have not explicitly used a for()
loop etc.
Why do the beepers have the number "1" on them?
Under the Available actions for Karel section in English, there are two functions in Spanish, poner_coso()
and juntar_coso()
.
The examples for the internal functions should use karel:::
, not karel::
. Because of this, the examples for get_pkg_env()
and plot_static_world()
fail.
Please note I submitted a PR correcting some typos
@ropensci-review-bot submit review https://github.com/ropensci/software-review/issues/620#issuecomment-2033093650 time 5
Logged review for joelnitta (hours: 5)
Thanks @vjimenez9 and @joelnitta for your reviews!
@mpru I see you already responded to @vjimenez9's reivew (in https://github.com/ropensci/software-review/issues/620#issuecomment-2027821275). If that's your final response to that review, then please simply acknowledge it; else please add whatever you feel necessary and/or refer to https://github.com/ropensci/software-review/issues/620#issuecomment-2027821275 when appropriate.
Also please respond to @joelnitta's review.
We recommend responding within the next 2 weeks.
In general aim for 3 weeks for review, 2 weeks for subsequent changes, and 1 week for reviewer approval of changes. --https://devdevguide.netlify.app/softwarereview_editor#during-review
@mpru: please post your response with @ropensci-review-bot submit response <url to issue comment>
if you haven't done so already (this is an automatic reminder).
Here's the author guide for response. https://devguide.ropensci.org/authors-guide.html
@maurolepore hoy se cumplen las dos semanas de plazo para completar mis respuestas, pero aún no he tenido oportunidad de hacerlo. Pido disculpas por la demora, espero hacerlo a la brevedad.
OK, gracias por avisar :-)
@maurolepore, apologies for the delay, here I acknowledge my previous response to Veronica and proceed to respond to Joel.
My response to @vjimenez9 was stated in this comment. I really thank you again for your comments and suggestions.
Thank you very much for all the work and commitment put into reviewing my package. I really appreciate all the comments and corrections made, many of which I would have liked to have read during the initial stages of the package's development, since they refer to structural issues of the package. Below I am going to respond to your comments one by one, indicating the changes applied to the package or the reason why I have not implemented, at least for now, some of the suggestions.
Who is Karel?
section of the README hints at the need but does not describe it explicitly.Response. Updated README in https://github.com/mpru/karel/commit/d07dfcbaebdb15c85068264e7fda4c534a2c456a to try to address it more explicitly.
Many of the error messages are preceded by cli::cli_rule()
. While of course informative error messages are important, care should be taken that the package is not overly chatty. I don't see why the cli::cli_rule()
is needed.
Response. _Removed all calls to cli_rule()
in https://github.com/mpru/karel/commit/a644c01f24e72202e132580d30c614e11ef417fa_
For expect_error()
, it is a good idea to indicate the expected error message using the regexp
argument so that you know the error is actually the expected one and not another error. This also makes the intention of the test clearer, for example the first test of test-set_up.R
.
There is a lot of repeated code in test-set_up.R
where each list of world elements (world_test
) is being defined slightly differently. I think this could be simplified by starting with a single world_test_template
list, then modifying it for each test to check that the correct error message is generated. For example:
world_test_template <- list(
nx = 6, ny = 4,
hor_walls = dplyr::tibble(x = 3, y = 1, lgth = 3),
ver_walls = dplyr::tibble(x = 3, y = 0, lgth = 1),
karel_x = 1, karel_y = 1,
karel_dir = 1,
beepers_x = 2, beepers_y = 1, beepers_n = 1,
beepers_bag = Inf)
test_that("The generic world template works correctly before modifying it
in subsequent tests", {
expect_no_error(generar_mundo(world_test_template))
expect_no_error(generate_world(world_test_template))
})
test_that("Karel's initial direction is required when creating a new world
provided as a list by the user.", {
world_test <- world_test_template
world_test$karel_x <- NULL
expect_error(generate_world(world_test), "karel_x is missing")
})
test_that("The correct number of avenues (nx) is required when creating a newa
world provided as a list by the user.", {
world_test <- world_test_template
world_test$nx <- 6.4
expect_error(
generate_world(world_test),
"nx, the number of avenues, must be numeric of length 1")
})
Response: Changed tests to implement this in https://github.com/mpru/karel/commit/ae770bf786724da4ba9b73393a45e3ca2f9218fe and https://github.com/mpru/karel/commit/a995fa86dce5687c191764316031e592bd58efd2
It would be good to add a test coverage badge so we can verify what percentage of functions are included in tests.
Response: Implemented in https://github.com/mpru/karel/commit/9c1b69c4a6888a53c6db2f1668e861ffd31c6267
I recommend use of if (interactive())
instead of if(FALSE)
for skipping example code like run_actions()
that should not be run during checks. if (interactive())
is more explicit in its intent than if(FALSE)
, and will work when users copy-paste the example code. Sometimes CRAN checks can be picky about how you specify which code to skip in examples.
Response. Fixed in https://github.com/mpru/karel/commit/cb143b56abe312f92968eba8b7d10bdbc4ceae3c
As far as I know, this package is unique in its approach to multilingual functionality and documentation. I applaud the author for this commitment to breaking down linguistic barriers. However, there are several aspects to consider carefully here.
I am a little concerned about the multilingual aliases for function names. First, I think ultimately it could be counter-productive for the learners. For better or worse, English is the standard language used in programming. If the goal is to teach students programming, at some point they will have to deal with words that are in English. We can even see this in karel
lessons: although the karel
functions have names in Spanish, the learners still need to use base R code with syntax like if()
, else()
, function()
, etc. It may be better to get them used to writing R syntax in English from the start instead of mixing English and Spanish (or another language). Furthermore, CRAN does not allow non-ASCII characters in R code, so it will be difficult or impossible to display function names in some non-English languages. Finally, using only one name per function makes the package easier to maintain. Currently, entire test files are duplicated and must be maintained due to having function aliases. However, as I mention below, one argument in favor of function aliases is that it allows you to maintain help files in a different languages... this is a complicated topic!
Response. I share your point of view. For better or worse, and sooner or later, our students must learn to use English, not only for programming, but because much of the new literature in the discipline is written in English. However, for the context in which we use this package (or in which I think others may use it, I write more about this later), I think there is an important difference between using and learning just a few English terms (if, else, function, etc.) and having everything else in Spanish, and having absolutely everything in English. With aliases, students can think about and discuss what actions Karel should take to solve a problem and write them down in their own language (e.g., girar a la derecha, juntar, poner), while also being able to consult help and see examples in their own language. I understand that this does not solve the need for English in the medium term, but I like having the possibility of using the environment mostly in Spanish as a first approach.
Apart from function names, I think localization of function UI and documentation is absolutely a plus and should be done. I see this as falling into three main categories: localization of UI, documentation of functions in the package (help files), and the package website. This package is pushing the limits of what R can do in terms of multilingual functionality, and as I describe below, mature solutions for each of these are not yet available in some cases.
For localizing the UI (function messages), I recommend the potools package (and PO files). This provides a very clean way to localize a package. Once it is set up, the user should have a seamless linguistic experience: if they are using a computer with a Spanish locale, all of the package messages will be in Spanish; same for English, etc. To get started with potools
, I recommend this blog post by Maëlle Salmon. This is the localization aspect that has the most mature solution available.
Response: Thanks for commenting on the potools
package, I didn't know about it. I think it's something I could explore, and I'd like to, although this would involve changing the current structure of the package extensively and in the short term I don't think I can do it. However, this approach goes hand in hand with having all function names written in one language (which should be English, following the previous reasoning that the rest of the statements like if, function, for, etc., are in English), but I really want and like the names of the functions to be in Spanish, and to use them in Spanish with my students, even though this incurs the alias system with the limitations that we discussed before.
@eliocamp is working on a package to localize help file contents, rhelpi18n. It should eventually provide a similar seamless experience as UI localization with PO tools, but unfortunately does not seem ready for production use yet. So honestly I am not sure what to do here. I wish there was a way to provide a help file in an alternate language that did not require a different function name. Actually, this may be a point in favor of keeping function aliases: it actually allows you to provide help files in different languages.
Response: What a nice project you mentioned. I seem to understand that the system proposed by the rhelpi18n
package requires writing the documentation in different languages, which is also what I do now in my package, but saving these translations in different packages. That has the disadvantage of having to install one more package depending on the language you want to use it in, but it is an advantage because it is easier to maintain, and because eventually including more and more languages under the current karel concept would make the package become heavier than allowed. If this approach matures we could use it to have translations of the help pages, but again we would still have a single English name for each function, which I consider to be a limitation. I think I prefer karel's current approach for the moment.
For the website, it would be ideal if there was a "language button" that could be clicked to switch between languages on a given page. With the current setup, both languages (Spanish and English) are displayed in a single webpage, but a given user probably only needs to see one or the other. Also, while this approach works OK for two languages, it would likely become unusable if any more were added. It would be great if pkgdown fully supported multilingual websites, but unfortunately this does not seem to be the case. Although pkgdown can provide website elements in different languages by setting a YAML parameter, it is limited to making a single webpage in one language. Since this is currently set to Spanish, various website elements appear in Spanish even though some of the content is in English. So, in absence of a genuine solution from pkgdown, I wonder if a work-around via forking the package and maintaining a website in a different language from there could be an option. This is not ideal, but it would scale better if multiple languages were to be implemented.
Response. Yes, every time I see the website I think exactly that, with two languages it is fairly ok, but if someone really wanted to keep adding languages, it would quickly become impractical. Hopefully at some point pkgdown will support support for multilingual pages, that would be great. It seems to me that the forking idea could work if more languages are added, including links between the different webpages, although I'm not sure about the source code living in several kind of "official" repos. I think for now I'm going to keep the site as planned now.
This package is also unique in that much of the vignette contents are actually lessons teaching programming in R with karel
, rather just than how to use the karel
functions. I think it may be preferable to split out the lessons teaching R into their own website. This would make maintaining the package easier. I am not sure of the optimal format, but one that I can recommend is the Carpentries lesson template (known as "the Workbench"). I could easily see the vignette contents being converted into a Carpentries lesson and hosted on the Carpentries Incubator. Please consider this.
Response: I agree with this observation, I made use of the vignettes in a way that is outside the norm for R packages, turning them into lessons. In fact, I use these vignettes as study material for the students I use this material with. This also turns out to be an extra burden to achieve the objective of having all the documentation multilingual, adding a new language would mean translating all the vignettes. However, for the moment I prioritize making this project self-contained, and having my students rely on a single web page for the package and their lessons. I'd be interested in exploring your suggestions about including this in the Carpentries Incubator in the medium term, but it's not something I can pursue right away.
I also noticed that much of the lesson content is focused on control flow. While this makes sense as a general feature of programming languages, R these days is often used for data analysis, which may not necessarily put as much emphasis on control flow. I personally almost never use while()
, and try to use apply
or purrr::map_()
family functions instead of for
loops. I wonder if there may be someway to use karel
to help teach data analysis, as it is in relatively high demand.
Response: What you notice has been chosen on purpose. To better answer, I must give some context about my use of this package. At my University, this package has been used in an informal pre-university course for some years now for students who will enter the Bachelor's degree in Statistics and who do not have any prior knowledge of programming. The objective is to teach them general programming concepts (applicable to any language) but in the main language that they will begin to use in the immediate future in their studies, R. That's why tools for data analysis or to improve some aspects of coding (like the apply or map examples you mention) are not included in the vignettes. They study all this and much more in the degree. In this course we only see these general programming ideas, not oriented to data analysis, in the environment that they will later use for data analysis. Perhaps the question that I should asked to myself is whether, thinking that the vignettes/lessons can be used in other contexts, it should not include other notions, but I think not, since in this way it remains limited and faithful to its original purpose.
When the gif plays, it is automatically looped. This makes it a bit hard to tell where the commands start and end, especially if Karel ends up in the same place she started. You may want to add "start" and "end" text to make this clearer. Another idea is to make the looping optional, since it is a bit confusing to the learner that Karel repeats her actions even though we have not explicitly used a for()
loop etc.
Response: _the looping was already optional, as I faced this problem before. I couldn't make my mind about this, and ended up setting to TRUE
the default value for the repeat
argument in the .run_actions
internal function and its wrapers. Now that you mention this, I changed it to FALSE
in https://github.com/mpru/karel/commit/15272eec9cbdd4ae7f91aeec30331c7a65ef2477_
Why do the beepers have the number "1" on them?
Response: Because in each position there can be more than one beeper and this number indicates the quantity present there (if there's no beeper, then it's not ploted, otherwise the number tells how many there are in that spot). In some examples of the tutorials there are very interesting problems and exercises to solve taking this characteristic into account, such as detecting how many beepers there are in a position and duplicating them.
Under the Available actions for Karel section in English, there are two functions in Spanish, poner_coso()
and juntar_coso()
.
Response: solved in https://github.com/mpru/karel/commit/7bfce1ee3864eaefc3af698691f8b33f8820de16
The examples for the internal functions should use karel:::
, not karel::
. Because of this, the examples for get_pkg_env()
and plot_static_world()
fail.
Response: solved in https://github.com/mpru/karel/commit/9024f2c114f530abe6439bd3f2ea113a1c8f968a
Please note I submitted a PR correcting some typos
Response: I accepted it, thank you for having done such a detailed reading and having detected these typos.
Estimated hours spent reviewing: 5
@vjimenez9
Solo para recordarte que esperamos tu respuesta.
¿Podrías por favor informarnos si recomiendas más cambios o indicar tu aprobación utilizando esta plantilla?
@vjimenez9
Revisando los comentarios veo este comentario por el que asumo tu aprovacion:
Me parece que la mayoría de lo vital quedo plasmado. Supongo que con esto terminan mis sugerencias y no me queda mas que felicitarte. -- @vjimenez9 en https://github.com/ropensci/software-review/issues/620#issuecomment-2028888781
Para no demorar la publicacion voy a formalizar la aprobacion. Si tenes alguna sugerencia mas, es bienvenida pero sugiero que @mpru la considere luego de la publicacion.
De todos modos, cuando puedas, por favor completa esta plantilla asi registramos formalmente tu esfuerzo.
Muchisimas gracias por tu trabajo.
@vjimenez9
Reviewing the comments, I see this one from which I assume your approval (translated with ChatGTP):
It seems to me that most of the essential points have been addressed. I suppose this concludes my suggestions, and I can only congratulate you. -- @vjimenez9 on https://github.com/ropensci/software-review/issues/620#issuecomment-2028888781
To avoid delaying the publication, I will formalize the approval. If you have any further suggestions, they are welcome but I suggest that @mpru consider them after the publication.
In any case, when you can, please complete this template so we can formally record your efforts.
Thank you very much for your work.
@ropensci-review-bot approve karel
Approved! Thanks @mpru for submitting and @vjimenez9, @joelnitta for your reviews! :grin:
To-dos:
@ropensci-review-bot invite me to ropensci/<package-name>
which will re-send an invitation.@ropensci-review-bot finalize transfer of <package-name>
where <package-name>
is the repo/package name. This will give you admin access back.pkgdown
website and are ok relying only on rOpenSci central docs building and branding,
pkgdown
website with a redirecting pagehttps://docs.ropensci.org/package_name
URL
field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar, https://github.com/ropensci/foobar
codemetar::write_codemeta()
in the root of your package.install.packages("<package-name>", repos = "https://ropensci.r-universe.dev")
thanks to R-universe.Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"
-type contributors in the Authors@R
field (with their consent).
Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. They will get in touch about timing and can answer any questions.
We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.
Last but not least, you can volunteer as a reviewer via filling a short form.
Date accepted: 2024-06-19 Nombre de la Persona Encargada: Marcos Prunello Usuario GitHub de la Persona Encargada: !--author1-->@mpru<!--end-author1-- Repositorio: https://github.com/mpru/karel Versión Enviada: 0.1.1.9000 Tipo de Envio: Estándar Editora: !--editor-->@maurolepore<!--end-editor-- Revisores: @vjimenez9, @joelnitta
Archivo: TBD Versión Aceptada: TBD Idioma: es
Alcance
Por favor, indica qué categoría(s) aplican a este paquete. Las puedes encontrar en nuestras políticas de inclusión de paquetes (Inglés). Por favor, tilda todas las apropiadas. Si no estás seguro, te sugerimos que comiences un pre-envío.
Explica cómo y por qué el paquete encaja dentro de estas categorías (1 a 3 oraciones):
Este paquete no entra en ninguna categoría, ya que está relacionado con Educación. Fue aceptado para el Programa Campeones, bajo la supervisión de @yabellini.
¿Cuál es la audiencia esperada y las aplicaciones científicas de este paquete?
Este paquete es utilizado por docentes para enseñar conceptos introductorios sobre programación, como descomposición algorítmica, declaraciones condicionales, bucles, etc., a estudiantes que posteriormente utilicen R como lenguaje de programación para otras tareas. Ha sido creado con un enfoque multilingüe que actualmente incluye los idiomas español e inglés, pero que puede ser expandido a otros de forma sencilla.
¿Hay otros paquetes de R que logren el mismo objetivo? Si los hay, ¿cómo se diferencian del tuyo, o alcanzan nuestro criterio del mejor de su categoría (documento en Inglés)?
No actualmente, según mi conocimiento.
(Si aplica) ¿Tu paquete cumple con nuestras guías de Ética, Privacidad de Datos e Investigación de Sujetos Humanos (documento en Inglés)?
No aplica.
Si ya has hecho una consulta de pre-envío, por favor pega el enlace al issue correspondiente, una publicación del foro, u otra discusión. Alternativamente, etiqueta al editor (con @tag) con el que te contactaste.
No realicé consulta de pre-envío.
(Si aplica) Explique las razones de los elementos
pkgcheck
que su paquete no puede pasar.pkgcheck pasa cuando lo ejecuto localmente. He observado dos advertencias en el CI, pero creo que están relacionadas con pkgcheck y GitHub Actions, y no relacionadas directamente con mi paquete. En cuanto al estilo, obtengo la sugerencia de evitar largas líneas de código. Sin embargo, las únicas líneas de código que superan los 80 caracteres de ancho corresponden a cadenas de texto con mensajes en diferentes idiomas para los usuarios, dentro de las cuales prefiero no incluir saltos de línea.
Revisiones Técnicas
Tilda los siguientes items para confirmar que los has completado:
Este paquete:
Opciones de Publicación
[x] ¿Tienes intenciones de subir este paquete a CRAN?
[ ] ¿Tienes intenciones de enviar este paquete a Bioconductor?
[ ] ¿Deseas enviar un Artículo de Aplicaciones sobre tu paquete a Methods in Ecology and Evolution (documento en Inglés)? Si es así:
Opciones para MEE
- [ ] Este paquete es novedoso y será de interés para la mayoría de lectores de la revista. - [ ] El manuscrito que describe el paquete no tiene más de 3000 palabras y está escrito en Inglés. - [ ] Tienes intenciones de archivar el código del paquete en un repositorio a largo plazo, que cumple los requerimientos de la revista (mira las [Políticas de Publicación de MEE (documento en Inglés)](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/journal-resources/policy-on-publishing-code.html)) - (*Alcance: Considera los [Objetivos y Alcance de MEE (documento en Inglés)](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/aims-and-scope/read-full-aims-and-scope.html) para tu manuscrito. No otorgamos garatías de que tu manuscrito esté en el ámbito de MEE.*) - (*Aunque no es requerido, recomendamos tener un manuscrito completamente preparado y en Inglés, al momento de enviar.*) - (*Por favor, no envíes tu paquete de forma separada a Methods in Ecology and Evolution*)Código de Conducta