El Costo Oculto del Software de Código Abierto

Rate this content
Bookmark

Hay un costo que muchas empresas no consideran al usar software de código abierto. Puede costar mucho dinero y tiempo mantenerse actualizado con las versiones obsoletas.

El software de código abierto es gratuito para las empresas hasta que el autor obsoleta una versión.

Estas son algunas mejores prácticas que recomendamos al considerar la adopción de software de código abierto:

  • - ¿Quién es el autor? ¿Tienen una reputación sólida que va a perdurar en el tiempo? ¿Tienen los recursos para respaldar una biblioteca empresarial?
  • - ¿Cuánto soporte en línea hay en la comunidad para esta biblioteca? ¿Cuántas dependencias tiene esta biblioteca?
  • - ¿Tiene una política de fin de vida? ¿Qué sucederá cuando lancen una nueva versión? ¿Las empresas tendrán la opción de quedarse en versiones antiguas durante mucho tiempo?
  • - ¿Qué se debe considerar al migrar a un marco de trabajo compatible después de que una versión haya sido obsoletada?

FAQ

Los costos ocultos del software de código abierto incluyen la necesidad de invertir tiempo considerable en actualizaciones y pruebas repetidas. Si no se realizan estas actualizaciones, pueden resultar en costos elevados y retrasos significativos, como fue el caso con la empresa Freeplay, que tuvo que posponer un cambio de precios por ocho semanas.

Freeplay enfrentó un problema al actualizar su modelo de precios debido a que su aplicación fue rechazada por la tienda de aplicaciones por usar una versión no compatible de Xcode y React Native, lo que les obligó a retrasar la implementación de los cambios de precios durante ocho semanas mientras actualizaban y probaban su software.

Aaron Mitchell recomienda establecer un equipo y una frecuencia de revisión para monitorear las necesidades de código abierto, hacer un inventario del código abierto utilizado, clasificar las bibliotecas por criticidad, identificar fechas clave de cada biblioteca, y esbozar un plan de acción para cada actualización necesaria.

Una empresa puede determinar la criticidad de sus bibliotecas de código abierto evaluando el riesgo de superficie si se descubre una vulnerabilidad crítica, la cantidad de desarrolladores que utilizan la biblioteca, las dependencias que tiene y el impacto comercial si la biblioteca dejara de estar disponible.

Si una biblioteca de código abierto alcanza su fin de vida, las empresas tienen opciones como actualizar a la última versión disponible, utilizar versiones con soporte comercial que ofrecen soporte más allá del fin de vida o contratar a un proveedor como HeroDevs para obtener soporte continuo para software sin soporte.

Establecer una política de fin de vida para el software de código abierto es importante porque ayuda a prevenir problemas y costos inesperados asociados con bibliotecas desactualizadas. Una buena política permite a las empresas planificar y ejecutar actualizaciones de manera eficiente, evitando interrupciones y manteniendo la seguridad del sistema.

Aaron Mitchell
Aaron Mitchell
11 min
12 May, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla de hoy analiza los costos ocultos del software de código abierto y la importancia de la planificación patrimonial para las pilas de código abierto. Destaca los desafíos que enfrentan los gerentes de productos en términos de actualizaciones de bibliotecas y prioridades conflictivas. La charla también enfatiza los pasos para establecer una política de fin de vida para las pilas de código abierto, que incluyen monitoreo, inventario, clasificación y planificación de actualizaciones. Además, enfatiza la necesidad de considerar el riesgo, las dependencias y el impacto comercial al identificar fechas de soporte y opciones de actualización. La charla concluye destacando la importancia de ser proactivo al formalizar una política de fin de vida para evitar proyectos costosos de migración.

Available in English: The Hidden Cost of Open Source

1. Hidden Costs of Open Source

Short description:

Hoy voy a hablar sobre los costos ocultos del software de código abierto y la planificación patrimonial para su conjunto de código abierto. Comencé una empresa llamada Freeplay, una aplicación móvil de fitness. Tuvimos que retrasar un cambio de precios debido a una versión de software no compatible. El software gratuito requiere actualizaciones y pruebas frecuentes, lo que puede ser costoso. Como gerente de producto, enfrenté desafíos con las actualizaciones de bibliotecas y prioridades conflictivas.

Gracias. Hola a todos. Soy Aaron Mitchell, presidente de HeroDevs, y hoy voy a hablar sobre los costos ocultos del software de código abierto y también vamos a hablar un poco sobre la planificación patrimonial para su conjunto de código abierto.

Pero primero, vamos a contar una historia. Así que hace unos siete años, comencé una empresa. Se llamaba Freeplay, y era una aplicación móvil de fitness que usarías para hacer que sea muy fácil hacer ejercicio con tus amigos. Y unos años después de Freeplay, decidimos que íbamos a comenzar, íbamos a cambiar nuestro modelo de precios. Así que enviamos todos estos correos electrónicos a nuestros socios, a nuestros clientes, actualizamos nuestro sitio web. Hicimos todos estos cambios en la aplicación. Y unos días antes de que estuviéramos listos para implementar los cambios, intentamos enviar a la tienda de aplicaciones y la tienda de aplicaciones rechazó nuestra solicitud porque estábamos en una versión no compatible de Xcode y React Native con la que ya no podíamos enviar. Así que terminamos teniendo que retroceder con todos nuestros socios, todos nuestros clientes con la cola entre las piernas y retrasar el cambio de precios durante las próximas ocho semanas mientras nos enfocamos en actualizar y testing nuestro software y llegar a la última versión para poder enviar nuevamente.

Y fue entonces cuando me di cuenta de algo como fundador y CEO de una startup. Cuando mis ingenieros vinieron a mí y me presentaron, hey, aquí está el conjunto de tecnologías que vamos a usar para desarrollar esta aplicación, dijeron que la mejor parte de esto es que todo este software es gratuito. Así que pensé, está bien. Gratis es genial. Me gusta lo gratis. Así que vamos a hacerlo. Lo que no me dijeron fue que si bien es gratuito, simplemente tienes que pasar mucho tiempo actualizando y testing y volviendo a actualizar y volver a probar el software. Y si no actualizas, podrías terminar pagando una actualización muy costosa que llega unos meses o unos años después. Y como hombre de negocios, eso fue muy diferente a cualquier otro software de pago que estaba usando. Así que me planteó una pregunta, que era si tenemos algún tipo de política de actualización o fin de vida del software de código abierto.

Estuve en gestión de productos durante seis años en mi career antes de comenzar FreePlay. Y recuerdo muy vívidamente nuestras reuniones de planificación de sprint donde acabábamos de pasar por todas las historias y todo para este sprint estaba listo. Estábamos listos para comenzar. Y siempre al final, un ingeniero levantaba la mano y decía, por cierto, esa biblioteca que estamos usando necesita ser actualizada. Y como gerente de producto, tengo una hoja de ruta que debo cumplir. Y la actualización no está en la hoja de ruta. Así que miento y les digo que lo agregaremos al próximo sprint. Y luego llega el próximo sprint y mágicamente no está allí. Y no recuerdo la conversación en absoluto.

2. Establishing an End-of-Life Policy

Short description:

Esta sección discute los pasos para establecer una buena política de fin de vida para su conjunto de código abierto. El primer paso es establecer un equipo y una frecuencia de revisión para monitorear sus necesidades de código abierto. El segundo paso es obtener un inventario del código abierto que está utilizando actualmente en su conjunto. Luego, clasifique el inventario por criticidad para su conjunto y identifique fechas clave para cada biblioteca crítica. Finalmente, evalúe los eventos y esboce un plan para abordar cada actualización a medida que ocurran.

Este es el manual de los gerentes de producto, por cierto, comprometerse, no hacer nada, desviar la atención y luego repetir. Entonces, si acabo de describir una conversación que has tenido o tal vez estás teniendo actualmente en tu empresa, no estás solo. Los equipos que trabajan en bases de código compartidas hacen que este problema sea aún más difícil porque nadie quiere pagar la factura. Nadie quiere ser el equipo que actualiza para todos los demás. Pero la mayoría de las empresas no tienen una política formal de fin de vida para su conjunto de código abierto. Y esto plantea la pregunta, entonces, ¿qué es una buena política de fin de vida, una política de actualización? ¿Cómo se ve? Así que hoy vamos a ver brevemente cómo establecer una buena política de fin de vida para su conjunto de código abierto. Y hay cinco pasos que voy a explicar muy rápidamente aquí. El primer paso es establecer un equipo y una frecuencia de revisión para monitorear sus necesidades de código abierto. Lo segundo es obtener un inventario del código abierto que está utilizando en su conjunto actualmente. Luego clasifique el inventario por criticidad para su conjunto. Identifique las fechas clave para cada una de las bibliotecas críticas. Y luego evalúe los eventos y esboce un plan para abordar cada actualización a medida que ocurran. Así que profundicemos un poco más.

El primer paso, establecer un equipo y una frecuencia de revisión. Algunos roles que es posible que desee incluir al pensar en quién debe formar parte de este equipo que verificará nuestra política de fin de vida y elaborará nuestra política de fin de vida. Debe incluir a un miembro del equipo de seguridad si lo tiene. Incluya a un miembro del equipo de control de calidad, a alguien de su equipo de ingeniería e idealmente a alguien de su equipo de producto que pueda ayudar a monitorear y evaluar los pros y los contras en función de la hoja de ruta empresarial que se ha comunicado. En segundo lugar, desde una perspectiva de frecuencia, generalmente recomendamos realizar una reunión mensual o trimestral con este equipo. De acuerdo. Paso dos. Tenemos el equipo reunido. Tenemos nuestra frecuencia establecida. Ahora queremos obtener un inventario de nuestro código abierto. Esta es una versión muy básica de cómo podría verse un inventario. Puede utilizar herramientas de escaneo de inventario disponibles de forma gratuita en la web, o también puede realizar una encuesta interna para identificar el software que se utiliza en su empresa. Debe tomar nota de cuál es la versión más actual de estas aplicaciones que hemos implementado o de estos paquetes de software que hemos implementado, y en qué versión estamos actualmente. Y luego es bueno tener una breve descripción para las personas que pueden no estar familiarizadas con lo que hacen estas bibliotecas. Lo tercero que queremos hacer es clasificar nuestras bibliotecas por criticidad. No queremos intentar abarcarlo todo. Muchas empresas tienen más de 100 bibliotecas o más que están utilizando de código abierto, por lo que algunos criterios que puede tener en cuenta al clasificar estos paquetes de software de código abierto son:

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix es un nuevo marco de trabajo web de los creadores de React Router que te ayuda a construir mejores y más rápidos sitios web a través de una sólida comprensión de los fundamentos de la web. Remix se encarga de las tareas pesadas como la renderización del servidor, la división de código, la precarga y la navegación, y te deja con la parte divertida: ¡construir algo increíble!
No resuelvas problemas, elimínalos
React Advanced Conference 2021React Advanced Conference 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Los humanos son solucionadores de problemas naturales y somos lo suficientemente buenos en eso que hemos sobrevivido a lo largo de los siglos y nos hemos convertido en la especie dominante del planeta. Debido a que somos tan buenos en eso, a veces también nos convertimos en buscadores de problemas, buscando problemas que podemos resolver. Aquellos que logran sus objetivos de la manera más exitosa son los eliminadores de problemas. Hablemos de la distinción entre resolver y eliminar problemas con ejemplos de dentro y fuera del mundo de la codificación.
Uso efectivo de useEffect
React Advanced Conference 2022React Advanced Conference 2022
30 min
Uso efectivo de useEffect
Top Content
¿Puede useEffect afectar negativamente a tu base de código? Desde la obtención de datos hasta la lucha con las APIs imperativas, los efectos secundarios son una de las mayores fuentes de frustración en el desarrollo de aplicaciones web. Y seamos honestos, poner todo en ganchos useEffect no ayuda mucho. En esta charla, desmitificaremos el gancho useEffect y obtendremos una mejor comprensión de cuándo (y cuándo no) usarlo, así como descubriremos cómo los efectos declarativos pueden hacer que la gestión de efectos sea más mantenible incluso en las aplicaciones React más complejas.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
¿Demasiado JavaScript te está agobiando? Los nuevos marcos que prometen no usar JavaScript parecen interesantes, pero tienes una aplicación React existente que mantener. ¿Qué tal si Qwik React es tu respuesta para un inicio de aplicaciones más rápido y una mejor experiencia de usuario? Qwik React te permite convertir fácilmente tu aplicación React en una colección de islas, que pueden ser renderizadas en el servidor y rehidratadas con retraso, e incluso en algunos casos, se puede omitir la rehidratación por completo. Y todo esto de manera incremental sin una reescritura.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
Los tutoriales interactivos basados en la web se han convertido en un elemento básico de los frameworks de front end, y es fácil ver por qué: a los desarrolladores les encanta poder probar nuevas herramientas sin el problema de instalar paquetes o clonar repositorios.Pero en la era de los meta-frameworks full stack como Next, Remix y SvelteKit, estos tutoriales solo llegan hasta cierto punto. En esta charla, veremos cómo nosotros, en el equipo de Svelte, estamos utilizando la tecnología web de vanguardia para repensar cómo nos enseñamos mutuamente las herramientas de nuestro oficio.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced Conference 2021React Advanced Conference 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
Los sistemas de diseño buscan aportar consistencia al diseño de una marca y hacer que el desarrollo de la interfaz de usuario sea productivo. Las bibliotecas de componentes con una API bien pensada pueden facilitar esto. Pero, ¡a veces una elección de API puede accidentalmente sobrepasar y ralentizar al equipo! Hay un equilibrio allí... en algún lugar. Exploremos algunos de los problemas y posibles soluciones creativas.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)