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?

This talk has been presented at Vue.js London 2023, check out the latest edition of this JavaScript Conference.

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 is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
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
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
The Talk discusses the shift to full-stack frameworks and the challenges of full-stack documentation. It highlights the power of interactive tutorials and the importance of user testing in software development. The Talk also introduces learn.svelte.dev, a platform for learning full-stack tools, and discusses the roadmap for SvelteKit and its documentation.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.

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 2021React Advanced 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
Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
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.