El código comúnmente fluye hacia abajo, desde un proyecto de código abierto hasta los propios productos de una organización. Upstreaming es el proceso de revertir ese flujo: contribuir con código a un proyecto de código abierto. La propuesta de valor del upstreaming incluye aprovechar la fortaleza de una comunidad de código abierto para examinar el código, encontrar y solucionar problemas, y agregar sus propias características que hacen que el código sea más valioso para todos los que lo usan. Como alguien que ha estado profundamente involucrado con el código abierto, proyectos de código abierto durante muchos años: he comprometido código con el proyecto del sistema operativo de código abierto FreeBSD durante más de una década, formé parte del equipo central de ese proyecto durante dos mandatos, contribuí al código abierto ZFS y coescribí dos libros sobre ZFS. He visto innumerables organizaciones enfrentar los desafíos y cosechar los beneficios sustanciales del upstreaming. En resumen, el código contribuido que pasa a formar parte de un proyecto principal de código abierto recibe mantenimiento, desarrollo activo y extensión compartidos, y otros miembros de la comunidad a menudo agregan valor que va mucho más allá de la contribución inicial. Se introducen nuevas funciones en proyectos de código abierto como FreeBSD y ZFS, entre muchos otros. Veamos los beneficios específicos del upstreaming y las mejores prácticas para desbloquear directamente sus ventajas. Beneficios del upstreamingUn compromiso con el upstreaming da como resultado un código de mayor calidad, un proceso de desarrollo más simple, cargas de mantenimiento reducidas y una mayor sostenibilidad del proyecto.Código de mayor calidadDesarrollar código con la intención de aguas arriba actúa como una función forzadora de la calidad. Para los equipos de desarrollo y los líderes que deben resistirse constantemente a la mentalidad de “simplemente sacar el código por la puerta” y “está bien si el código es feo porque nadie lo verá”, el compromiso de actualizar y someterse al proceso de revisión proporciona una oportunidad inexpugnable. barandilla. Al mismo tiempo, cuando el código comienza a desarrollarse destinado a los ojos internos y al uso interno, luego necesita que se le agregue la generalidad más adelante, el resultado suele ser características menos satisfactorias (y mayores cargas de mantenimiento) en el futuro. Cumplir con las prácticas de codificación y los requisitos de estilo a lo largo del desarrollo da como resultado un código de mucha mayor calidad: un código creado para proporcionar valor no solo dentro de una organización sino para todos. Desarrollo más sencillo Uno de los mayores desafíos del uso de tecnologías de código abierto surge cuando las organizaciones cometen el error de desarrollar para la versión de software de código abierto que están usando actualmente (que puede tener varios años) en lugar de la última versión. Esa práctica ineficiente (si no completamente ineficaz) significa cambiar la base para ponerse al día con todos los demás cambios de software que pueden afectar su nueva función y enfrentar toda la deuda técnica que genera el retraso. Desarrollar para la última versión principal de código abierto El software y luego el backporting según sea necesario garantiza que el proceso de actualización no se estanque por los cambios que están sucediendo durante el desarrollo, y significa mucho menos trabajo al final, ya que no se intenta rebase contra un objetivo que se mueve rápidamente. Menos mantenimiento Una vez más, las organizaciones que crean nuevas funciones en una rama local más antigua de software de código abierto y luego intentan actualizar a una versión más nueva tienden a tener dificultades porque requieren experiencia en la materia en todas las áreas del software que han cambiado durante ese tiempo. período. La disponibilidad de experiencia es un desafío clave para el upstreaming. Por ejemplo, a un equipo de desarrollo que aún no está muy familiarizado con el sistema operativo FreeBSD le resultará difícil abordar toda la superficie afectada por los cambios ascendentes contra los que tienen que rebase para actualizar su código a la línea principal antes de que puedan actualizarse. sus cambios de parche. Comprometerse a la transmisión ascendente desde el principio permite un enfoque mucho más concentrado en lo que realmente está haciendo su parche, lo que probablemente esté en su tema principal. Una vez que los cambios se integran en sentido ascendente y forman parte del software principal de código abierto, el mantenimiento ya no es solo su problema. Es un esfuerzo comunitario. Sostenibilidad del proyecto Con las contribuciones iniciales mantenidas por la comunidad, las nuevas funciones atraen a más usuarios y más contribuciones. Ese círculo virtuoso hace crecer los proyectos de código abierto, las comunidades y la funcionalidad de software eficaz para su mayor beneficio. Mejores prácticas para actualizar un parche Según mi experiencia en la actualización de parches a proyectos de código abierto, el proceso que se describe a continuación proporciona una descripción general de cómo actualizar con éxito un característica. Paso 1: crear el parche candidato. Es importante destacar que debe asegurarse de que su parche sea generalmente útil y valioso para otros usuarios del proyecto al que está contribuyendo. No es una buena práctica actualizar código que sea demasiado específico para su aplicación y de poco valor para los demás. Eso es simplemente tirar el código por encima de la pared y esperar que alguien más lo mantenga. Ampliar una característica para ofrecer valor general puede requerir algo de trabajo adicional, pero esa utilidad es esencial para la calidad de su contribución y la respuesta de la comunidad. Esto conduce a otro desafío clave: la promoción. Para que su artículo contribuido sea un éxito se necesita entusiasmo de la comunidad. Necesitan entender por qué deberían adoptarlo y cómo pueden beneficiarse de él. Conocer bien a la comunidad e involucrarse tempranamente (incluso antes del desarrollo) para comprender las necesidades de los demás contribuye en gran medida a superar este desafío. Cuanto más se utilice su código actualizado, más probabilidades habrá de que prospere y se expanda (en lugar de que se elimine o quede obsoleto en el futuro). La participación es a menudo el factor más importante que determina dónde se aplica el esfuerzo de mantenimiento de la comunidad. Paso 2: envíe el parche para que otros contribuyentes lo revisen. Proporcione documentación suficiente para que otros hagan uso del código, junto con pruebas que garanticen que su código no funcionará. romper otras funciones y que se detectará cualquier regresión en la funcionalidad de su función causada por otros cambios. Naturalmente, incluya también una descripción clara de su parche, una que explique su propósito y su valor para los revisores. Luego, otros contribuyentes ascendentes revisan su parche y brindan comentarios, que usted debe abordar de manera adecuada. Paso 3: Los revisores integran el parche en la rama ascendente. El parche también se puede fusionar con la rama o ramas estables del software de código abierto. Las versiones futuras del software ascendente incluirán sus cambios. Abogar por backports para las sucursales estables y ayudar a mantenerlos ayudará a garantizar que esos backports estén disponibles para sus productos que utilizan esas sucursales estables y que tenga una ruta de actualización fácil en el futuro. Adopte una mentalidad de ‘primero el upstream’El upstreaming obliga a su organización para crear código que no sólo sea lo suficientemente bueno para uso interno, sino también lo suficientemente bueno para servir a toda una comunidad de código abierto y ganar su apoyo duradero. Al diseñar funciones que satisfagan eficazmente las necesidades de la comunidad y las suyas propias, el proceso de actualización y revisión se vuelve mucho más fácil, y las funciones en las que confía su organización pueden crecer y prosperar mucho más allá de lo que su equipo podría hacer solo. Ese es el poder del código abierto. Allan Jude es el director de ingeniería de FreeBSD de Klara Inc., que proporciona servicios empresariales y soporte para infraestructuras de código abierto. Ha sido miembro de FreeBSD Committer desde 2014. New Tech Forum ofrece un lugar para que los líderes tecnológicos (incluidos proveedores y otros contribuyentes externos) exploren y discutan la tecnología empresarial emergente con una profundidad y amplitud sin precedentes. La selección es subjetiva y se basa en nuestra elección de las tecnologías que creemos que son importantes y de mayor interés para los lectores de InfoWorld. InfoWorld no acepta garantías de marketing para su publicación y se reserva el derecho de editar todo el contenido aportado. Envíe todas sus consultas a doug_dineley@foundryco.com. Copyright © 2024 IDG Communications, Inc.