0:00:00.000,0:00:03.540 Hola a todos, gracias por recibirme, me llamo Shurui Zhou, 0:00:03.540,0:00:06.300 Soy profesora asistente en la Universidad de Toronto. 0:00:06.300,0:00:10.440 Hoy voy a presentar nuestro trabajo sobre la comprensión de los desafíos de sostenibilidad 0:00:10.440,0:00:13.500 en la construcción de software científico de código abierto. 0:00:15.420,0:00:20.100 Estoy segura de que la mayoría de la audiencia de hoy está familiarizada con la importancia del código abierto 0:00:20.100,0:00:24.840 y son conscientes de los retos de sostenibilidad y apoyo en las comunidades de código abierto. 0:00:25.500,0:00:29.460 En este proyecto nos centramos en un tipo especial de comunidad de código abierto, 0:00:29.460,0:00:30.240 es decir 0:00:30.240,0:00:34.920 software científico de código abierto. El desarrollo de software científico se refiere 0:00:34.920,0:00:39.720 a los procesos de desarrollo de software que se utiliza en una disciplina científica 0:00:39.720,0:00:43.800 como la biología, la física, la química o incluso la informática. 0:00:43.800,0:00:46.020 Sin embargo, en una comunidad científica, 0:00:46.020,0:00:52.380 sus participantes no son sólo desarrolladores de software, sino también expertos en dominios específicos. 0:00:53.280,0:00:57.240 En este gráfico les muestro el ecosistema de software científico basado en Python. 0:00:57.240,0:01:02.520 A la derecha hay algunos programas de código abierto basados en Python relacionados con la bioinformática. 0:01:02.520,0:01:07.440 Se trata de herramientas esenciales para los investigadores y su importancia no hará sino crecer 0:01:07.440,0:01:12.240 a medida que la investigación científica dependa cada vez más de los métodos computacionales. 0:01:13.020,0:01:17.040 En esta charla voy a demostrar que los riesgos que se conocen 0:01:17.040,0:01:21.420 en las comunidades de código abierto en general, el mantenimiento y la salud de la comunidad, 0:01:21.420,0:01:24.600 estos son exageradas en las comunidades científicas de código abierto. 0:01:24.600,0:01:28.740 Si pierdes a los expertos en la materia o a los profesionales del software, 0:01:28.740,0:01:34.560 el proyecto amenaza con venirse abajo y en realidad es un riesgo doble al que se enfrentan. 0:01:35.220,0:01:40.860 Y debido a que estos dos grupos tiene diferentes antecedentes de formación y educación y de los incentivos, 0:01:40.860,0:01:45.420 hay tensiones y conflictos entre ellos, que hacen que esta sostenibilidad 0:01:45.420,0:01:50.640 aún sea más difícil. Así que anteriormente los investigadores investigaron 0:01:50.640,0:01:56.040 el fenómeno de la colaboración interdisciplinaria, cuando se construye software basado en IA en el que el software 0:01:56.040,0:01:58.800 necesitan colaborar con expertos en ciencia de datos 0:01:58.800,0:02:01.620 a lo largo del ciclo de vida del aprendizaje automático. Específicamente, 0:02:01.620,0:02:05.700 los científicos de datos suelen centrarse en la fase inicial del ciclo de vida, 0:02:05.700,0:02:11.700 con el objetivo de obtener un modelo de aprendizaje automático de alto rendimiento y los desarrolladores de software tienden a centrarse en 0:02:11.700,0:02:16.020 integrar el modelo en un sistema mayor y asegurar el rendimiento del sistema anfitrión. 0:02:17.280,0:02:21.060 Este es otro punto de vista para mostrar que cuando se construye un sistema de software basado en IA, 0:02:21.060,0:02:25.020 las personas tienen diferentes enfoques durante el procedimiento de desarrollo, 0:02:25.020,0:02:30.480 y, por supuesto, hay algunos puntos de colaboración y el estudio encontró que la colaboración 0:02:30.480,0:02:33.960 interdisciplinaria crea muchas tensiones diferentes en el proceso. 0:02:34.740,0:02:39.540 Así que en nuestro estudio nos centramos en una colaboración interdisciplinaria a la hora de construir 0:02:39.540,0:02:45.120 software científico en un entorno de código abierto. El trabajo relacionado encontró que la mayoría de 0:02:45.120,0:02:51.420 el trabajo de desarrollo lo realizan los propios científicos y es posible que posteriormente se contraten desarrolladores profesionales 0:02:51.420,0:02:55.620 para crear y mantener un programa informático. A diferencia del bien definido 0:02:55.620,0:02:58.920 ciclo de vida del aprendizaje automático, no está claro cómo los dos 0:02:58.920,0:03:02.160 grupos colaboraban entre sí en un entorno de código abierto 0:03:02.160,0:03:06.240 y cómo dicha colaboración afectará a los retos de sostenibilidad. 0:03:06.900,0:03:10.380 En concreto, investigamos este problema desde dos aspectos. 0:03:10.380,0:03:12.780 En primer lugar, nos centramos en los retos relacionados 0:03:12.780,0:03:15.480 con la ciencia en el contexto del código abierto preguntando, 0:03:15.480,0:03:19.440 cuáles son los principales obstáculos cuando un equipo interdisciplinario construye y 0:03:19.440,0:03:25.440 mantiene el software científico en código abierto. Y a continuación nos centramos en los retos relacionados con el 0:03:25.440,0:03:28.260 código abierto en la comunidad científica preguntando, 0:03:28.260,0:03:32.220 cuáles son los principales factores para sostener la comunidad científica de código abierto. 0:03:33.600,0:03:38.760 Para responder a estas preguntas, realizamos un estudio de caso utilizando estas metodologías en una comunidad científica de código abierto. 0:03:38.760,0:03:45.840 Software científico en el ámbito de la física. Por cuestiones de ética de la investigación anonimizamos los 0:03:45.840,0:03:49.920 nombres reales del proyecto y utilizamos el nombre falso Moonpie para referirnos al proyecto. 0:03:49.920,0:03:55.320 Así Moonpie como se puede ver desde aquí es un proyecto lo suficientemente grande y de larga vida. 0:03:57.240,0:04:01.380 Veamos ahora el resultado. Primero investigamos la ciencia 0:04:01.380,0:04:06.540 en el contexto del código abierto. Nos gustaría entender cómo nuestros científicos 0:04:06.540,0:04:09.600 colaboran con los ingenieros de software, cómo se dividen la tarea. 0:04:09.600,0:04:13.560 Teníamos la hipótesis de que los ingenieros de software trabajarían más en el 0:04:13.560,0:04:17.880 funcionamiento de la infraestructura del sistema, mientras que los científicos trabajarían más 0:04:17.880,0:04:21.720 en el código específico del dominio. Para esta parte nos centramos en los 0:04:21.720,0:04:25.440 desarrolladores principales a lo largo de 10 años y detectamos el tipo de 0:04:25.440,0:04:30.600 contribución mediante el análisis de la historia de commits. Y dividimos el código en dos categorías: 0:04:30.600,0:04:33.600 uno es la infraestructura, otro es específico del dominio. 0:04:34.440,0:04:38.700 Así que para cada colaborador core calculamos el número de merge commits 0:04:38.700,0:04:41.940 y luego trazamos su contribución en este espectro 0:04:41.940,0:04:45.120 y el tamaño de los puntos se refiere al número de commits. 0:04:45.120,0:04:49.440 El extremo izquierdo es la contribución 100% relacionada con la infraestructura 0:04:49.440,0:04:53.940 mientras que el extremo derecho es el 100% de contribución de código específico de dominio. 0:04:54.480,0:04:57.900 Como puedeN ver, hay gente en todas las partes del espectro. 0:04:57.900,0:04:59.040 También, 0:04:59.040,0:05:02.880 en realidad sólo hay dos ingenieros de software profesionales entre 0:05:02.880,0:05:08.460 los 40 desarrolladores o colaboradores principales y los demás son todos científicos profesionales. 0:05:10.080,0:05:15.000 Hay alguien en ambos, que tiene tanto experiencia en ingeniería de software y la ciencia, 0:05:15.000,0:05:19.200 pero esta persona en el medio es en gran medida una excepción en un proyecto. 0:05:19.200,0:05:23.700 Es raro en esta comunidad Moonpie que la gente tenga ambos orígenes. 0:05:23.700,0:05:28.320 No es de extrañar que esta persona no tiene una vida fácil 0:05:28.320,0:05:32.940 y tenían un montón de conversaciones difíciles con personas en los extremos del espectro. 0:05:32.940,0:05:37.440 Y lo que es más interesante, a partir de nuestro estudio de entrevistas observamos que 0:05:38.280,0:05:41.340 existe una tensión entre los dos grupos de expertos. 0:05:41.340,0:05:44.940 No se trata de sus títulos, sino de sus mentalidades. Por ejemplo, 0:05:44.940,0:05:49.080 observamos que las personas que ven las mejores prácticas de mantenimiento 0:05:49.080,0:05:52.380 y actualización de software como el valor que están aportando al software 0:05:52.380,0:05:57.300 y las personas que están buscando en la utilidad de dominio y el valor relacionado con la ciencia del proyecto. 0:05:58.500,0:06:04.620 Y otro ejemplo es sobre la priorización de tareas entre los dos grupos. 0:06:04.620,0:06:07.920 Por un lado, los ingenieros de software creen que es importante 0:06:07.920,0:06:13.260 seguir las mejores prácticas de ingeniería de software y utilizar flujos de trabajo automatizados como CI/CD 0:06:13.260,0:06:17.160 para garantizar la calidad del código y reducir la carga de mantenimiento. 0:06:17.160,0:06:21.660 En consecuencia, a menudo tienen que explicar a los científicos que su código no 0:06:21.660,0:06:25.380 cumple con el estándar de calidad de código y necesitan más refactorización. 0:06:25.380,0:06:27.900 Por otra parte, los científicos perciben a los 0:06:27.900,0:06:33.060 ingenieros de software como alguien que tienen estas normas rígidas que quieren adherirse a 0:06:33.060,0:06:37.980 o que no están tan familiarizados con el tipo de flexibilidad natural de los científicos desarrolladores 0:06:37.980,0:06:40.740 de software. Sí, 0:06:41.820,0:06:45.780 y otra tensión revisada en la entrevista es la percepción de 0:06:45.780,0:06:49.740 antigüedad en la comunidad Moonpie. Según los entrevistados 0:06:49.740,0:06:54.900 una distinción entre la comunidad del software científico y el código abierto tradicional 0:06:54.900,0:07:00.000 es la clasificación por antigüedad. Como en los proyectos tradicionales de código abierto, 0:07:00.000,0:07:03.540 los colaboradores se clasifican por el volumen de su contribución al código, 0:07:03.540,0:07:06.360 mientras que en Moonpie, las personas con un mayor 0:07:06.360,0:07:11.820 título académico tienen más poder de decisión sobre la fusión o no de este RP. 0:07:12.360,0:07:15.540 De modo que estos dos aspectos están fundamentalmente en tensión entre sí. 0:07:16.560,0:07:21.600 Y la segunda parte de nuestro estudio se centra en el otro lado del escenario, 0:07:21.600,0:07:27.060 que son los retos de sostenibilidad en las comunidades de código abierto con este contexto científico. 0:07:27.060,0:07:31.140 Concretamente, identificamos a los colaboradores que fusionan código 0:07:31.140,0:07:37.920 pero que no ha tenido actividad en los últimos 100 días en este proyecto Moonpie y hacemos tres preguntas. 0:07:38.460,0:07:41.160 ¿Cuál fue el incentivo para que contribuyera a Moonpie? 0:07:41.160,0:07:42.900 ¿Cuál fue la razón por la que abandonaste la comunidad? 0:07:42.900,0:07:47.940 ¿Y tienes alguna sugerencia para mejorar la sostenibilidad? 0:07:49.020,0:07:55.560 Así que resumimos los resultados de los incentivos y las razones de la desvinculación utilizando el diagrama de Sankey. 0:07:55.560,0:07:58.320 Como puede ver, la mayoría de las personas que han 0:07:58.320,0:08:03.780 contribuido a Moonpie debido a su propio uso y se fueron porque el proyecto es estable 0:08:03.780,0:08:07.680 o su enfoque ha cambiado. Así que podrías pensar 0:08:07.680,0:08:12.840 son razones bastante obvias, ¿qué podemos hacer como responsables del mantenimiento para que se queden más tiempo? 0:08:13.680,0:08:17.460 Por desgracia, no hay muchas cosas que se puedan evitar. 0:08:17.460,0:08:22.380 La pregunta que podría tener como un mantenedor es, ¿qué puedo hacer con esta información entonces, ¿verdad? 0:08:22.380,0:08:25.620 A partir de nuestro estudio hemos identificado algunas oportunidades. 0:08:25.620,0:08:30.780 Si el objetivo no es la participación a largo plazo de un miembro sino la 0:08:30.780,0:08:34.140 salud general de la comunidad, necesitamos una estrategia diferente. 0:08:34.140,0:08:39.720 Hemos recibido muchas sugerencias y opiniones valiosas, pero dada la limitación de tiempo me gustaría 0:08:39.720,0:08:43.050 presentar dos de las principales. La primera es, 0:08:43.050,0:08:47.760 debemos reconocer que hay mucho acerca de los procesos de rotación que no podemos cambiar 0:08:47.760,0:08:54.000 pero podemos, lo que podemos cambiar es hacer el proyecto realmente más accesible. 0:08:54.000,0:08:58.260 Sabiendo que no sólo tenemos que hacer el proyecto accesible pero tenemos que hacer 0:08:58.260,0:09:02.700 la ciencia accesible al mismo tiempo, por lo tanto, cuando proporcionamos documentación, 0:09:02.700,0:09:07.920 no sólo tenemos que documentar el código fuente, sino también explicar la teoría científica 0:09:07.920,0:09:10.320 que hay detrás. Del mismo modo, 0:09:10.320,0:09:15.180 un trabajo anterior ya demostró que proporcionar esta buena primera cuestión es 0:09:15.180,0:09:19.500 una gran estrategia para atraer a los recién llegados, pero muchos de nuestros participantes sugirieron 0:09:19.500,0:09:25.200 que para arreglar un buen problema necesitan no sólo entender el código o lo que el problema es, 0:09:25.200,0:09:28.620 también tienen que proporcionar orientación sobre el módulo de código correspondiente 0:09:28.620,0:09:32.880 y la teoría de que el contribuyente tiene que entender antes de hacer realmente esta contribución. 0:09:32.880,0:09:37.440 De esta manera se convierte el proyecto en no ser sólo una participación de software 0:09:37.440,0:09:41.880 en una herramienta específica, sino también un valioso ejercicio de aprendizaje 0:09:41.880,0:09:45.660 para nosotros, para alguien que está tomando algo de estas experiencias. 0:09:46.800,0:09:51.480 Entonces, como investigador ingeniero de software, una pregunta abierta que surge naturalmente para nosotros es, 0:09:51.480,0:09:55.800 podemos diseñar algunas herramientas para automatizar estos procesos de documentación, 0:09:55.800,0:10:02.520 que conecten tanto el código como la teoría. Y la segunda estrategia que me gustaría compartir es 0:10:02.520,0:10:05.940 reconocer la participación y la contribución. En primer lugar, 0:10:05.940,0:10:09.420 si utilizan alguno de los programas o paquetes científicos de código abierto, 0:10:09.420,0:10:14.040 por favor consideren citar un trabajo en el proyecto, del proyecto en sus documentos o informes 0:10:14.040,0:10:18.780 para dar a la gente el reconocimiento de la participación y contribución en un proyecto. 0:10:19.500,0:10:23.880 Y a algunos participantes en la encuesta les gustaría conocer el impacto de su contribución, 0:10:23.880,0:10:29.700 como cuántos investigadores utilizan su código, cuántos estudiantes de doctorado utilizan mi código para 0:10:29.700,0:10:33.900 contribuir a su tesis, correcto. Así que la pregunta para nosotros de nuevo es, 0:10:33.900,0:10:38.580 ¿podemos diseñar mejores formas de cuantificar el impacto más allá del número de descargas? 0:10:38.580,0:10:43.980 ¿Podemos detectar el uso de su código en un pequeño, una granularidad más fina en una escala mayor. 0:10:44.880,0:10:47.760 Así que hay muchas otras ideas que no tengo tiempo para compartir, pero si 0:10:47.760,0:10:50.760 están interesados yo estaría más que feliz de discutir fuera de línea. 0:10:50.760,0:10:52.620 Por último, pero no por ello menos importante, me gustaría dar las gracias a 0:10:52.620,0:10:55.980 a mis estudiantes y colaboradores que han ayudado en este trabajo. 0:10:57.180,0:10:59.760 En resumen, en este proyecto investigamos 0:10:59.760,0:11:04.080 un único software científico de código abierto y los resultados muestran que la sostenibilidad 0:11:04.080,0:11:07.500 de código abierto en general empeorarán 0:11:07.500,0:11:12.600 cuando se construye un paquete científico. Para mejorar esta sostenibilidad 0:11:12.600,0:11:16.920 en estos contexto tenemos que reconocer la tensión entre los dos grupos de expertos, 0:11:16.920,0:11:21.480 ser conscientes de que serán retos exagerados, 0:11:21.480,0:11:24.360 y dado que los desarrolladores de software no son sustituibles, 0:11:24.360,0:11:28.620 pero tampoco lo son los científicos, sin duda necesitamos estrategias diferentes. 0:11:28.620,0:11:32.280 Si ustedes están en un papel de liderazgo en una comunidad científica de código abierto, 0:11:32.280,0:11:37.200 hay que esforzarse por mejorar la accesibilidad del proyecto 0:11:37.200,0:11:42.360 reduciendo la barrera tanto para el código, ingeniería de software, como para la ciencia y la teoría. 0:11:43.140,0:11:49.920 Y si ustedes son usuarios de estas herramientas, por favor consideren dar reconocimiento a estas herramientas 0:11:49.920,0:11:56.220 y dar reconocimiento a estas contribuciones. Con esto concluyo mi charla, muchas gracias. 0:11:58.920,0:12:01.920 Fantástico, muchas gracias de nuevo, 0:12:01.920,0:12:04.860 realmente interesante, lo aprendí tarde en la vida, 0:12:04.860,0:12:08.820 como, en los últimos años este era el tipo de investigación que estaba haciendo como estudiante, 0:12:08.820,0:12:14.820 haciendo, ayudando a desarrollar tecnología para los geólogos y el software que utilizan para mantener sus datos, 0:12:14.820,0:12:18.420 así que creo que este es un espacio muy interesante y aparentemente poco estudiado. 0:12:18.420,0:12:24.540 Me pregunto, el trabajo que has estado haciendo aquí, es que la construcción de cualquier otro trabajo 0:12:24.540,0:12:29.160 específica a la pieza de sostenibilidad o incluso la interacción que ocurre? 0:12:29.160,0:12:32.220 Parece que eso es parte del problema y de la solución, 0:12:32.220,0:12:35.820 es cómo hacer que estas interacciones sean significativas para ambas partes, 0:12:35.820,0:12:40.140 de tal manera que estamos obteniendo estos resultados, así como, de nuevo, que sean sostenibles? 0:12:41.040,0:12:43.680 ¿Es esto construido en las cosas o es esto realmente, tipo de, algunos de los primeros 0:12:43.680,0:12:49.020 trabajo para mirar a esas interacciones? Trabajos anteriores ya han 0:12:49.020,0:12:54.840 estado buscando la construcción de software en un pequeño instituto o tipo de un instituto local 0:12:54.840,0:13:00.480 en lugar de esta colaboración distribuida, así que creo que el trabajo anterior también ha mirado 0:13:00.480,0:13:03.300 como el software científico de código abierto, pero no en GitHub, 0:13:03.300,0:13:06.180 sino en algunos repositorios donde publican su código fuente, 0:13:06.180,0:13:10.200 por lo que buscan en los diferentes roles en términos de la antigüedad de, 0:13:10.200,0:13:16.140 como, si se trata de un profesor o estudiantes, pero aquí en realidad tratar de dividirlos en su 0:13:16.140,0:13:17.880 fondo o roles o mentalidades, verdad?, 0:13:17.880,0:13:22.320 Creo que eso es una especie de nuevo aspecto que traemos, sí. 0:13:22.320,0:13:27.300 Y parece importante con respecto a, suena como la forma en que están pensando en el resultado final, 0:13:27.300,0:13:30.540 el producto que se está desarrollando y utilizando. Fantástico. 0:13:30.540,0:13:34.440 Veo que tenemos otra pregunta para la que disponemos de un minuto. 0:13:35.340,0:13:39.600 Greg quiere saber, ¿dónde y cómo los científicos aprenden lo que saben acerca de la programación? 0:13:39.600,0:13:44.040 ¿Lo aprenden en clase, lo aprenden de otros investigadores, en el trabajo, en YouTube? 0:13:45.300,0:13:48.180 ¿Tienes alguna idea al respecto? Sí, 0:13:48.180,0:13:53.640 así que entre todos los desarrolladores, o desarrolladores de núcleo que hablamos con, 0:13:53.640,0:14:00.480 en realidad la mayoría de ellos aprenden solos, son autodidactas desarrolladores de software 0:14:00.480,0:14:04.620 y tienen, nunca han tomado ningún curso, no tienen un título en una disciplina. 0:14:04.620,0:14:09.300 Sólo uno de los ingenieros de software profesionales que entrevistamos, mostré dos de ellos, 0:14:10.140,0:14:14.520 uno que tenía una formación en ciencias de la computación en su licenciatura, 0:14:14.520,0:14:19.500 por lo que en realidad la mayoría de los científicos, que no están capacitados con profesionales de 0:14:19.500,0:14:22.020 ingeniería de software de fondo, pero el problema es, 0:14:22.020,0:14:26.940 no podemos simplemente culparlos a ellos de, no tienen, sin formación en ingeniería de software, porque 0:14:26.940,0:14:31.260 a veces las prácticas de ingeniería de software no se puede aplicar directamente a construir 0:14:31.260,0:14:33.720 este software científico, por lo que en realidad tenemos que ajustar 0:14:33.720,0:14:39.660 las mejores prácticas de ingeniería de software para construir este software de dominio específico.