A menudo me piden que revise documentos sobre nuevas herramientas de software. Esto siempre me hace preguntarme cómo se debe revisar un documento de este tipo, o incluso si los documentos de software deben someterse a un proceso de revisión típico.
Mi lista de verificación privada generalmente consiste en:
Si todo funciona bien y produce los resultados esperados, honestamente no tengo nada más que “exigir” a los autores. Los informes de mis árbitros son positivos y (vergonzosamente) breves en esos casos. Soy de la opinión de que la comunidad de usuarios debería “hacer el resto”; evaluar el software y decidir si es útil en sus flujos de trabajo.
Una perspectiva es del Journal of Open Source Software, que establece explícitamente pautas para los revisores que cubren estas preguntas ( http://joss.theoj.org/about#reviewer_guidelines ).
Una cita (ligeramente editada) de las demandas:
Licencia de software Debe haber una licencia aprobada por OSI incluida en el repositorio.[...]
Documentación Debe haber suficiente documentación para que usted, el revisor, comprenda la funcionalidad principal del software que se está revisando.
Una declaración de necesidad Los autores deben indicar claramente qué problemas está diseñado para resolver el software y quién es el público objetivo.
Instrucciones de instalación Debe haber una lista de dependencias claramente establecida. Idealmente, estos deben manejarse con una solución de administración de paquetes automatizada.
- Bueno: un archivo de administración de paquetes como Gemfile o package.json o > equivalente
- OK: Una lista de dependencias para instalar
- Malo (no aceptable): Dependencia de otro software no mencionado por los autores
Ejemplo de uso Los autores deben incluir ejemplos de cómo usar el software (idealmente para resolver problemas de análisis del mundo real).
Documentación de la API Los revisores deben verificar que la API del software esté documentada en un nivel adecuado. Esta decisión se deja en gran medida a discreción del revisor y su experiencia en la evaluación del software. [...]
Se recomienda encarecidamente a los autores de pruebas que incluyan un conjunto de pruebas automatizado que cubra la funcionalidad principal de su software.
- Bueno: un conjunto de pruebas automatizado conectado a un servicio externo como Travis-CI o similar
- OK: pasos manuales documentados que se pueden seguir para verificar la funcionalidad esperada del software (por ejemplo, un archivo de entrada de muestra para afirmar el comportamiento)
- Malo (no aceptable): no hay forma de que usted, el revisor, verifique si el software funciona
Directrices de la comunidad Debe haber directrices claras para terceros que deseen: Contribuir con el software, informar problemas con el software o buscar soporte.
Esta es una forma valiosa de pensar sobre la revisión de software, y creo que deberíamos acercarnos a esto. ¡Pero aún no está aceptado! En mi campo, la mayoría de los artículos sobre "métodos" ni siquiera incluyen software, y los que sí lo hacen casi con seguridad fallarían en estas pruebas. (Nunca había oído hablar de la integración continua hasta hace poco, por ejemplo).
Nunca he revisado un artículo, pero como alguien que produce software (en bioinformática), esto es lo que me gustaría saber de un revisor, ampliando de su lista:
¿Es descargable y tiene licencia?
Modifiqué su primer punto porque el código debería estar disponible para otros y debería tener una licencia para saber qué pueden hacer otros usuarios/desarrolladores con esa herramienta.
¿Funciona bien? ¿Los autores hicieron un esfuerzo para escribir la mejor herramienta?
¿Podrías instalar la herramienta en tu configuración?
¿Son suficientes mis pruebas para comprobar que el software funciona como se esperaba?
¿Qué más podría hacer para asegurarme de que funciona bien?
¿Es el idioma de la herramienta una buena elección? ¿Existe una comunidad de usuarios y desarrolladores para ese nicho en ese idioma?
¿Está bajo control de versiones? ¿La herramienta está bajo control de versiones?
Las herramientas suelen desarrollarse cuando hay un problema:
Las herramientas generalmente se prueban en un conjunto de datos determinado o se comparan con diferentes herramientas, como se indica en un comentario. Esto puede ser interesante si también se informan resultados negativos.
El software a veces es desarrollado por varias personas y varios años:
Cuando use el software, surgirán preguntas, usted como revisor puede verificar cómo se manejará:
Como notó, algunas de estas preguntas pueden ser abordadas por la comunidad, pero usted, como revisor, tiene la oportunidad de verificar que el artículo de ese software explica y resuelve un problema para la comunidad, que está razonablemente bien hecho y bien pensado.
Es posible que desee evitar revisar trivialidades y cosas inútiles. Así que, además de lo dicho por Llopis , preguntar si la herramienta resuelve un problema interesante . Sí, esta es una pregunta vaga y amplia, así que siéntete libre de adaptarla a tu área. Por ejemplo, en los métodos formales, las herramientas son el alfa y el omega del progreso, por lo que los creadores de herramientas deben obtener el crédito académico adecuado por el trabajo adecuado , por ejemplo, produciendo mejores resultados en los puntos de referencia estándar que los competidores.
Además, tenga en cuenta que los documentos de herramientas suelen ser diferentes de los documentos de investigación y deben evaluarse de manera diferente, entre ellos. Ciertas conferencias tienen pistas especiales de herramientas puras. En tales casos, debe ser tarea del PC proporcionar la plantilla correspondiente para la evaluación.
Solo he escrito pero no he revisado tal documento todavía. Mi perspectiva personal proviene de los campos de los sistemas complejos y la computación científica, pero ofrezco algunas ideas generalizables.
Estructuro mi respuesta según los criterios típicos aplicados a los trabajos de investigación:
Podría decirse que este es el aspecto más difícil de traducir y más dependiente del campo. Por ejemplo, en un campo de simulación o experimental, no es factible verificar completamente los resultados de un trabajo de investigación, ya que esto significaría rehacerlo completamente desde cero; todo lo que puede hacer (y se le pide que haga como revisor) es verificar si los métodos empleados son apropiados y los resultados son consistentes. Por otro lado, en algunos campos teóricos, puede (y se espera que lo haga) verificar cada cálculo y demostración.
Sugiero aplicar el mismo estándar a los artículos de software que a los artículos de investigación y, en particular, a los artículos de métodos en el campo respectivo. Después de todo, si se acepta un artículo de software, debería poder citarse como "evidencia" como un artículo de investigación regular y, en particular, un artículo de métodos: en otras palabras, citar el artículo de software debería ser suficiente como evidencia de que la tarea respectiva se realizó correctamente¹ .
Entonces, como criterio práctico:
Criterios más específicos incluirían:
¿Se eligen adecuadamente los algoritmos, bibliotecas, etc. empleados, es decir, se pueden mantener con el mismo estándar, se ajustan a la aplicación y son de última generación?
¿El documento respalda suficientemente las afirmaciones realizadas sobre la corrección, la eficiencia y la facilidad de uso del software? Este punto puede diferir ligeramente dependiendo del formato de publicación. Por ejemplo, si el software en sí se considera parte de la publicación: ¿Puede verificar estas afirmaciones (posiblemente utilizando pruebas, puntos de referencia, documentación y ejemplos proporcionados)?
¿El software se adhiere lo suficiente a las buenas prácticas de ingeniería de software, como las pruebas, que garantizan que funciona según lo previsto?
¹ Salvo el manejo correcto del software, que por supuesto debe ser descrito adecuadamente por el documento de cita
Si el lugar de publicación tiene un umbral de novedad, intente traducirlo a software. Pragmáticamente, se pregunta si el artículo en cuestión contribuirá positivamente al factor de impacto de la revista (o alguna otra métrica). Algunos criterios específicos que vienen a la mente:
² ¿Quién necesitaría una biblioteca CAS para Malboge ?
³ Este es un problema real: una de mis motivaciones para escribir un software para una tarea específica fue que los softwares existentes dependían de bibliotecas descontinuadas y obsoletas o de una biblioteca que se modificó mucho de una manera no compatible con versiones anteriores (que a su vez era posible porque casi nadie lo usaba).
La mayoría de los demás criterios deberían ser fáciles de traducir, en particular cuando piensa en un documento de método:
La respuesta real depende principalmente de la revista/conferencia/taller específico. Mi propia experiencia es de Computación de alto rendimiento: puede haber algunas prácticas comunes dependientes del campo, pero creo que la mayoría será similar.
Lo principal que veo diferente es que no está revisando la herramienta , está revisando el documento . Tampoco es lo mismo un paper sobre una herramienta que una documentación . Concentre su revisión más en la contribución científica del artículo que en la herramienta en sí. Idealmente, el papel en sí debería ser útil sin la herramienta. Incluso diría que un documento que describe un intento fallido de desarrollar una nueva herramienta puede ser una contribución valiosa para una audiencia un poco restringida.
No existe una limitación general para las herramientas de código abierto (a menos, por supuesto, que su lugar sea el Journal of Open Source Software). Al menos para HPC, los documentos sobre herramientas propietarias no son infrecuentes. Sin embargo, las herramientas disponibles públicamente mejoran la reproducibilidad de un artículo.
Al mismo tiempo, cualquier artículo científico debe incluir una discusión adecuada del trabajo relacionado . El documento debe describir las herramientas que usan técnicas similares o abordan objetivos similares y cómo la nueva herramienta es diferente. Si la herramienta aprovecha una técnica publicada, se debe hacer referencia a ella. El trabajo relacionado también puede incluir referencias que subrayan los casos de uso.
Un documento de herramientas no necesita producir una descripción detallada sobre cómo usar la herramienta, pero debe centrarse en los conceptos novedosos aplicados en la herramienta, ya sea en términos de aspectos de implementación o características. Los casos de uso también son una parte importante, pero más con un enfoque para evaluar la herramienta (por ejemplo, comparaciones de rendimiento) y cómo es útil en lugar de instruir al usuario sobre cómo usarla.
Si bien algunos talleres tienen un enfoque claro en las herramientas, no hay solo documentos de herramientas puras. Es posible presentar una herramienta para el análisis/optimización de X en un taller sobre X. O si una herramienta hace un uso intensivo de una técnica de Y, sería adecuada para una conferencia de Y. Este cambio en la audiencia debe reflejarse en el enfoque del artículo.
TJK
austin henley
skymningen