Mis desencadenantes personales de los envases son:
-
Me encuentro con que vuelvo a utilizar un código que escribí una vez para otro proyecto de análisis de datos.
-
Creo que voy a necesitar el método que acabo de escribir de nuevo.
-
Un colega me pide un código. Una parte importante del código que escribo es, al menos, a petición de los colegas (que usan R pero no programan mucho ellos mismos) como para mí mismo.
-
Utilizo los requisitos formales de un paquete (documentación) para "obligarme" a limpiar y documentar mi código.
Estoy de acuerdo con @JohnRos en que hay bastante diferencia entre escribir un paquete y publicar el paquete.
-
Suelo empaquetar antes, pero luego hago que el paquete sea sólo "semipúblico". Es decir, puede estar disponible en un servidor interno (o en r-forge), para que mis colegas pueden acceder al paquete. Pero lo publico en CRAN sólo después de que el paquete haya sido utilizado durante meses o incluso algunos años por colegas cercanos. Esto no saca a la luz todos los bugs según el punto #3 de @Nick Cox, pero sí una buena cantidad de ellos.
Las versiones del paquete (pongo la fecha después del guión en el número de versión) facilitan el arreglo de las cosas ("para hacer esto y aquello, asegúrate de instalar al menos la versión de la semana pasada")
-
Según mi contrato de trabajo, mi empleador tiene la última palabra sobre la decisión de si un paquete puede publicarse al exterior y cómo.
La cosa en la que hago no sin embargo, tener una buena estrategia para el empaquetado es un dato.
Comentarios a su lista de razones:
- la inexistencia de otros paquetes en el mismo subcampo ;
No encontrar un paquete que haga lo que necesito para mí dispara escribir el código, pero no tiene que ver con la decisión de empaquetar o no.
- la necesidad de intercambiar con otros investigadores y permitir la reproducibilidad de los experimentos ;
Definitivamente. Posiblemente ya la necesidad de compartir entre varios ordenadores que uso.
Y entre los puntos que podrían llevar a una decisión contraria :
- parte de los métodos utilizados ya presentes en algunos otros paquetes;
podría importar esos métodos a su paquete/código: este es un punto en contra escribir dicho código, pero sólo tiene que ver indirectamente con el embalaje.
- número de funciones nuevas no es suficiente para justificar la creación de un nuevo paquete independiente.
Para mí, no hay un número mínimo de funciones para iniciar un paquete. En mi experiencia, los paquetes tienden a crecer "automáticamente". Por el contrario, después de haberme encontrado unas cuantas veces ramificando un nuevo paquete a partir de otro (porque, por ejemplo, algunas funciones de ayuda al final resultaron ser temáticamente diferentes y útiles también en otras situaciones), ahora prefiero crear nuevos paquetes inmediatamente.
Además, si no has escrito la documentación y las pruebas, esto puede suponer una cantidad de trabajo prohibitiva cuando se acumula un número "suficiente" de funciones para crear un paquete.
(Si los escribes inmediatamente, el esfuerzo adicional de ponerlo en un paquete es insignificante una vez que conoces el flujo de trabajo).