Dicho esto, funcionó bien en nuestro caso, pero solo porque fuimos muy perseverantes, y que sabíamos dónde necesitábamos estar, y teníamos todas esas pruebas en las que podíamos confiar para saber dónde estábamos en el proceso de reimplementación. Otras cosas que podrían salir mal, bueno, si pasas tu tiempo escribiendo las cosas, ¿cuándo puedes realmente integrarlo? Eso fue algo preocupante cuando estaba haciendo eso, porque en ese momento, estaba trabajando en Datadog, y la cuestión es que, o estaba construyendo esta reescritura de Yarn, o estaba integrando la versión de Rust de Yarn dentro de la infraestructura de Datadog. Y hacer las dos cosas al mismo tiempo resultó muy difícil. Al final, logré hacerlo, pero requirió más tiempo del que había anticipado.
Otro problema con la reescritura es que, ¿puedes permitirte congelar tu rama principal durante varios meses, el tiempo para que realmente pases mucho tiempo trabajando en esa reescritura? Porque tus competidores no están haciendo eso. Ellos siguen sacando características, siguen corrigiendo errores, y si te quedas congelado por demasiado tiempo, entonces tus usuarios pueden empezar a resentir eso. En nuestro caso, esto se compensó tratando de extender la reescritura durante mucho tiempo, por eso tomó un año y medio, así que no congelamos completamente Yarn 4.x, y seguimos haciendo características y mejoras allí, pero puede ser un peligro, y no todos los proyectos están listos para hacer eso.
Y finalmente, el principal problema quizás de hacer una reescritura como esa es que durante los primeros meses, se siente un poco como caminar en el desierto. No tienes ningún resultado, y no estás completamente seguro de si va a funcionar. Teniendo las pruebas que teníamos, sabíamos que podíamos simplemente resolver las pruebas una por una y terminaríamos obteniendo algo. Pero aún así, no teníamos esos resultados al principio, y por lo tanto fue un salto de fe entrar en ese proyecto y esperar que todo funcionara de inmediato un par de meses después. Entonces, dado todo eso, ¿deberían todos los proyectos ser reescritos en Rust? Desde que Bion hizo eso, NPM está haciendo eso, están reconstruyendo parte del gestor de paquetes, especialmente los pasos de obtención y enlace para estar en Rust. Tienes todos los otros gestores de paquetes que están tratando de ir a Rust también. Hubo charlas sobre ESLint yendo a Rust en algún momento. Entonces, ¿deberían todos los proyectos ser Rust? Personalmente, sería cauteloso con eso, y si eres un mantenedor, te diría que Rust no es una bala de plata. No hará mágicamente mejor. Va a venir con su propio compromiso que vamos a tener que decir cómo desarrollas si estás usando IA o no. Si no estás usando IA, entonces vas a tener que estar familiarizado con cómo el compilador de Rust espera que escribas código, y eso lleva mucho tiempo. Si estás usando IA, entonces tienes que estar cómodo con el hecho de que nunca realmente conoces tu base de código. ¿Es algo con lo que estarás bien? Eso depende de ti decidir. En nuestro caso, ya que quería mantener esta base de código por un tiempo muy, muy largo, pensé que la elección que había hecho de no usar IA para hacer una reescritura completa, elección que fue en parte impuesta por no tener buenas opciones para hacerlo en ese momento, fue la correcta.
Comments