Saltar al contenido principal

Hoja de Ruta de Código Abierto

· 5 min de lectura
Héctor Ramos
Ingeniero en Facebook
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Este año, el equipo de React Native se ha enfocado en una re-arquitectura a gran escala de React Native. Como mencionó Sophie en su publicación sobre el estado de React Native, hemos esbozado un plan para apoyar mejor a la creciente comunidad de usuarios y colaboradores de React Native fuera de Facebook. Ahora es momento de compartir más detalles sobre nuestro trabajo. Antes de hacerlo, me gustaría exponer nuestra visión a largo plazo para React Native en código abierto.

Nuestra visión para React Native es...

  • Un repositorio de GitHub saludable. Los problemas y solicitudes de extracción se gestionan en un plazo razonable.

    • Mayor cobertura de pruebas.
    • Los commits sincronizados desde el repositorio interno de Facebook no deben romper las pruebas de código abierto.
    • Una mayor escala de contribuciones significativas de la comunidad.
  • APIs estables, que faciliten la integración con dependencias de código abierto.

    • Facebook utiliza la misma API pública que el código abierto.
    • Lanzamientos de React Native que sigan el versionado semántico.
  • Un ecosistema vibrante. ViewManagers de alta calidad, módulos nativos y soporte multiplataforma mantenidos por la comunidad.

  • Documentación excelente. Enfocada en ayudar a los usuarios a crear experiencias de alta calidad, con documentos de referencia de API actualizados.

Hemos identificado las siguientes áreas prioritarias para alcanzar esta visión.

✂️ Lean Core (Núcleo Ligero)

Nuestro objetivo es reducir la superficie de React Native eliminando componentes no esenciales y sin uso. Transferiremos componentes no esenciales a la comunidad para permitirle avanzar más rápido. La superficie reducida facilitará la gestión de contribuciones a React Native.

WebView es un ejemplo de componente que transferimos a la comunidad. Estamos trabajando en un flujo que permita a los equipos internos seguir usando estos componentes tras eliminarlos del repositorio. Hemos identificado docenas de componentes adicionales cuya propiedad transferiremos a la comunidad.

🎁 Código Abierto de los Internos y 🛠Actualización de Herramientas

La experiencia de desarrollo de React Native para equipos de producto en Facebook puede diferir bastante de la de código abierto. Herramientas populares en la comunidad de código abierto no se usan en Facebook. Puede existir una herramienta interna que cumple el mismo propósito. En algunos casos, los equipos de Facebook se han acostumbrado a herramientas que no existen fuera de la compañía. Estas diferencias plantean desafíos al liberar como código abierto nuestro próximo trabajo de arquitectura.

Trabajaremos en liberar algunas de estas herramientas internas. También mejoraremos el soporte para herramientas populares en la comunidad de código abierto. Esta es una lista no exhaustiva de proyectos que abordaremos:

  • Liberar JSI como código abierto y permitir que la comunidad utilice sus propias máquinas virtuales JavaScript, reemplazando el JavaScriptCore inicial de RN. Cubriremos qué es JSI en una futura publicación; mientras tanto puedes aprender más sobre JSI en la charla de Parashuram en React Conf.

  • Soporte para bibliotecas de 64 bits en Android.

  • Habilitar depuración bajo la nueva arquitectura.

  • Mejorar soporte para CocoaPods, Gradle, Maven y el nuevo sistema de compilación de Xcode.

✅ Infraestructura de Pruebas

Cuando los ingenieros de Facebook publican código, se considera seguro si pasa todas las pruebas. Estas pruebas identifican si un cambio podría romper alguna de nuestras propias implementaciones de React Native. Sin embargo, existen diferencias en cómo Facebook utiliza React Native. Esto nos ha permitido romper involuntariamente React Native en código abierto.

Reforzaremos nuestras pruebas internas para garantizar que se ejecuten en un entorno lo más cercano posible al código abierto. Esto ayudará a evitar que el código que rompa estas pruebas llegue a código abierto. También trabajaremos en infraestructura para mejorar las pruebas del repositorio principal en GitHub, permitiendo que futuras pull requests incluyan pruebas fácilmente.

Combinado con la reducción de la superficie de código, esto permitirá a los colaboradores fusionar pull requests más rápido y con confianza.

📜 API Pública

Facebook consumirá React Native a través de la API pública, igual que el código abierto, para reducir cambios disruptivos no intencionales. Hemos comenzado a convertir sitios de llamadas internas para abordar esto. Nuestro objetivo es converger en una API pública estable, llevando a la adopción de versionamiento semántico en la versión 1.0.

📣 Comunicación

React Native es uno de los principales proyectos de código abierto en GitHub por cantidad de colaboradores. Eso nos hace muy felices y queremos mantenerlo. Continuaremos trabajando en iniciativas que fomenten la participación de colaboradores, como mayor transparencia y discusión abierta. La documentación es lo primero que encuentra alguien nuevo en React Native, pero no ha sido prioridad. Queremos solucionarlo comenzando con:

Cronograma

Planeamos implementar estos proyectos durante el próximo año aproximadamente. Algunos esfuerzos ya están en curso, como JSI que ya está en código abierto. Otros tomarán más tiempo, como reducir la superficie de código. Haremos nuestro mejor esfuerzo para mantener a la comunidad actualizada sobre nuestro progreso. Únanse a nosotros en el repositorio Discusiones y Propuestas, una iniciativa de la comunidad React Native que ha llevado a crear varias de las iniciativas discutidas en esta hoja de ruta.