- El presidente Joe Biden firmó la SHARE IT Act el 23 de diciembre, por lo que las agencias federales de EE. UU. deberán compartir entre sí el código fuente personalizado para reducir los contratos de desarrollo duplicados
- El punto clave es catalogar públicamente el código personalizado de cada agencia y hacerlo reutilizable, con el fin de reducir los aproximadamente 12 mil millones de dólares que se estima que el gobierno federal gasta cada año en compras de software
- Quedan excluidos de la aplicación de la ley el código clasificado, los sistemas de seguridad nacional y el código cuyo intercambio pueda implicar riesgos para la privacidad
- Los CIO de las agencias deberán establecer, dentro de los 180 días posteriores a la entrada en vigor, una política de implementación que incluya cumplimiento de mejores prácticas, divulgación de metadatos y procedimientos estandarizados de reporte
- Atlassian y GitLab Inc. apoyaron el proyecto, que fue aprobado en diciembre por ambas cámaras sin votación nominal registrada
Obligación de compartir código bajo la SHARE IT Act
- La Source Code Harmonization And Reuse in Information Technology Act, o SHARE IT Act, exige que las agencias federales compartan con otras agencias el código fuente desarrollado a medida
- Se enfoca en reducir el desarrollo duplicado que ocurre cuando se vuelve a contratar la creación de código ya desarrollado para otra agencia sin saberlo
- Las agencias deberán catalogar públicamente su código personalizado y permitir que otras agencias lo aprovechen
Objetivo de ahorro presupuestario y excepciones de aplicación
- Los patrocinadores de la ley estiman que el gobierno federal gasta aproximadamente 12 mil millones de dólares al año en compras de software
- La SHARE IT Act busca reducir ese costo mediante la reutilización de código personalizado
- Quedan excluidos de la aplicación de la ley los siguientes tipos de código
- Código clasificado
- Sistemas de seguridad nacional
- Código cuyo intercambio pueda generar riesgos para la privacidad
Obligación de los CIO de establecer una política dentro de 180 días
- Los directores de información (CIO) de las agencias deberán crear una política de implementación de la SHARE IT Act dentro de los 180 días posteriores a la entrada en vigor de la ley
- La política debe incluir los siguientes procedimientos
- Procedimientos para garantizar que el código desarrollado a medida cumpla con las mejores prácticas
- Procedimientos para proporcionar públicamente los metadatos del código personalizado
- Procedimientos de reporte estandarizados
Metadatos que deben divulgarse
- Los metadatos a los que se refiere la ley incluyen información que permite verificar el estado de desarrollo y de compartición del código personalizado
- Los elementos incluidos son los siguientes
- Si el código personalizado fue desarrollado bajo contrato
- Si el código fue compartido en un repositorio
- Número de contrato
- Hipervínculo al repositorio donde se compartió el código
Proceso legislativo y apoyo de la industria
- El proyecto fue patrocinado en el Senado por Ted Cruz y Gary Peters, y en la Cámara de Representantes por Nicholas Langworthy y William Timmons
- El Senado y la Cámara de Representantes aprobaron el proyecto en diciembre sin una votación registrada a favor o en contra
- Según el anuncio de septiembre de Langworthy sobre la presentación del proyecto en la Cámara, Atlassian y GitLab Inc. respaldaron la iniciativa
- Stan Shepard, director jurídico de Atlassian, considera que ampliar la colaboración y el intercambio de código personalizado impulsa la apertura, la eficiencia y la innovación en todo el aparato federal
1 comentarios
Opiniones en Hacker News
Si no tienes experiencia en el gobierno, puede que no tengas idea de por qué esto es tan difícil. Las fuerzas armadas le tienen alergia al software interno, y la TI militar es un mundo completamente distinto, atacado todos los días por intrusos con apoyo estatal de primer nivel mundial.
Las startups no pasan por esto, e incluso grandes empresas como Facebook apenas experimentan algo de nivel similar en términos de importancia; en el sector privado, lo más cercano serían las grandes instituciones financieras. Además, el ejército de EE. UU. es el mayor empleador individual del planeta, equivalente a 4.5 veces Walmart.
Por eso las fuerzas armadas monitorean todo en múltiples capas y lo bloquean fuertemente con listas de software aprobado por capa. Es muy probable que quienes escriben o supervisan las políticas de seguridad no sean directores de software experimentados, y cuando ven NPM o Maven los consideran vectores de ataque ilimitados creados por gente que no sabe de seguridad; y no están del todo equivocados.
En el ámbito civil y de contratistas, la propiedad del código también es complicada. Si se construye con dinero del gobierno, debería ser propiedad del gobierno, pero los contratistas consideran que deben llevárselo como un activo propio separado del gobierno para poder volver a cobrar. Si los subcontratistas no están alineados con los objetivos financieros del contratista principal, se vuelve aún más complejo. Personalmente creo que bastaría con entregarle todo al gobierno, pero es raro cómo la gente levanta barreras por capas. La infraestructura del lado del gobierno tiene un nivel de certificación de seguridad mucho más alto, así que en general también tiene menos restricciones.
Algunas áreas del ejército de EE. UU. quizá enfrenten el nivel de amenazas y sofisticación de seguridad descrito, pero en conjunto hay muchos sistemas legacy donde es difícil integrar soluciones modernas o mejores prácticas. Estos sistemas, flujos de trabajo y burocracias obsoletos suelen generar más ineficiencias y vulnerabilidades que una seguridad sobresaliente.
Que no escuchemos que el ejército de EE. UU. haya sido vulnerado no significa que no ocurra, sino que, cuando ocurre, se clasifica como secreto. Evitar la vergüenza pública es el uso número uno de la clasificación, lo que crea la creencia de que son competentes. Yo pondría en cualquier momento la seguridad de Facebook por delante de la del ejército de EE. UU., y creo que la diferencia no es pequeña. Facebook también es un procesador de pagos.
Dada la importancia de AWS, es evidente que Amazon también debe enfrentar amenazas similares.
(A) Disposición general: esta ley no se aplica al código fuente clasificado ni al código fuente desarrollado principalmente para su uso en sistemas de seguridad nacional, según la definición de 40 U.S.C. 11103.
(B) Seguridad nacional: la exención de los requisitos de la sección 3 se aplica al código fuente clasificado o al siguiente código fuente: (i) código desarrollado principalmente para su uso en sistemas de seguridad nacional, o (ii) código desarrollado por una agencia integrante de la comunidad de inteligencia, según la definición de la sección 3(4) de la Ley de Seguridad Nacional de 1947, o por una parte de ella.
En ese momento entendí cómo está estructurado el negocio de la contratación gubernamental y por qué las cosas se alargan años más de lo necesario.
Es dinero que pagamos con nuestros impuestos, así que uno termina preguntándose por qué deberíamos apoyar un esquema que saca dinero del bolsillo de todos para hacer muy ricos a unos cuantos peces gordos de la empresa y al personal de ventas.
Si la postura es “no le vamos a dar todo al gobierno”, creo que una forma razonable sería darle al gobierno el derecho de usar los entregables como quiera, pero permitir que los componentes no clasificados y sus derivados se vendan libremente al sector privado.
La ley exige que el CIO de cada agencia elabore una política dentro de los 180 días posteriores a su entrada en vigor, y que esa política garantice que el código desarrollado a medida se ajuste a las mejores prácticas, además de definir procedimientos para publicar los metadatos del código a medida y procedimientos estándar de reporte.
En la nueva ley, los metadatos incluyen si el código a medida fue desarrollado por contrato, si fue compartido en un repositorio, el número de contrato y un enlace al repositorio donde se compartió el código.
Lamentablemente, no parece ser una ley que exija a las agencias convertir el código en open source público, sino solo compartirlo entre agencias. Lo único que debe compartirse públicamente son los “metadatos”. El texto completo del proyecto está en https://www.congress.gov/bill/118th-congress/house-bill/9566...
Hay excepciones, pero también existía la lógica de que otros contratistas debían conservar la capacidad de modificar el código fuente y, del mismo modo, no publicarlo. Supongo que probablemente por el ámbito de defensa.
Para mantenerlo privado por motivos económicos, el estándar era alto, pero siempre era posible mantenerlo privado por cualquier otro motivo. DOE Code es un programa que rastrea software open source y normalmente se gestiona mediante organizaciones de GitHub. OSTI es la oficina que rastrea toda la propiedad intelectual y la investigación.
El modelo de desarrollo open source también benefició a LLNL, que terminó con una base de código mucho mejor que la que habría obtenido desarrollándola en solitario.
También hay cosas que ya son públicas, como NASA IKOS: https://github.com/NASA-SW-VnV/ikos
Este proyecto recibe mucha menos atención de terceros de la que debería. Si pudiera evolucionar hasta convertirse en un analizador estático sólido de propósito general que maneje multithreading, ayudaría a mejorar muchos otros proyectos.
Alguna vez impulsé un modelo open source completo con la idea de que “si se financia con presupuesto público, el público debería ver los resultados de ese dinero”: https://web.archive.org/web/20200920095030/http://oss4gov.or...
Creía que el valor predeterminado del software gubernamental debía ser open source, salvo excepciones aprobadas a nivel ministerial. Aunque en ese momento era joven e ingenuo.
Ghidra es un buen ejemplo, y que este software pasara a ser gratuito fue un gran beneficio para la comunidad de seguridad.
Nosotros creamos software open source e intentamos que las agencias gubernamentales lo adopten o lo usen, pero sorprende el nivel al que estas agencias parecen tener alergia al open source.
Algunas prefieren construirlo ellas mismas con métodos legacy, como cargas de CSV o parsers rotos, antes que usar código de otros, y de paso crean los bugs y fallas predecibles.
Incluso al responder a solicitudes de propuestas, la opción open source recibe un escrutinio más fuerte que los sistemas cerrados. Si es público, tienes que demostrar que eso es bueno; si es cerrado, el proveedor puede decir “sí, es perfecto” y la agencia lo acepta. Da la sensación de que las agencias y su personal no quieren asumir ninguna responsabilidad. Aun así, nunca he visto a alguien perder un puesto gubernamental por incompetencia.
Trabajo en el gobierno y lo he vivido directamente. La cultura es muy tóxica y está rota. Tengo curiosidad por ver qué cambios propondrán Elon y el equipo de Trump.
El Departamento de Defensa de EE. UU. tiene una FAQ sobre software de código abierto: http://dodcio.defense.gov/OpenSourceSoftwareFAQ.aspx y https://github.com/risacher/DoD-OSS-FAQ
Esta versión fue publicada en GitHub como un experimento de herramienta colaborativa para la participación pública en documentos de política gubernamental, y se indica que personal militar y civil, contratistas y ciudadanos pueden enviar propuestas de cambios o agregados mediante pull requests
Video de 2010: https://www.youtube.com/watch?v=WWt0YiXcEkE
Dan Risacher, de la oficina del CIO del DoD, y el experto en seguridad de código abierto David A. Wheeler explican la historia y el impacto de un memorando reciente del DoD que aclaró la postura de que el Departamento de Defensa considera el código abierto como una forma viable de software comercial
Material de 2024: https://openssf.org/press-release/2024/10/29/openssf-expands...
La OpenSSF de la Linux Foundation dijo que reconoce la necesidad de capacitación en seguridad y, según David A. Wheeler, director de seguridad de la cadena de suministro de código abierto de OpenSSF, más de 25,000 personas se han inscrito en estos materiales de capacitación desde el inicio del curso
La intención es buena, pero en la práctica no creo que pase mucho más que los posibles competidores del contratista 1 acorten la brecha o ataquen basándose en la calidad del código de contratos existentes. Leer código es más difícil que escribirlo
Si atacan basándose en la calidad del código de contratos existentes, eso es code review y, de una u otra forma, lleva a mejorar la calidad del código. No veo cuál es el problema aquí
Es algo excelente. Recuerdo haber sufrido por no poder leer código incluso dentro de la misma organización. Este tipo de cambio parece que les facilitará el trabajo a quienes crean modelos mentales descendentes
En general, todo lo pagado con dinero de los contribuyentes debería ser público. Public Monies Public Goods debería ser el principio básico absoluto
Eso no impide que contratistas inmorales le pongan copyright al código y cobren licencias. Así es la mayor parte del código del DoE, con excepciones como NWCHEM. Siempre me pregunté por qué eso no terminó en demandas; probablemente porque a nadie le importa demasiado
Por un lado, entiendo que vean a otras regiones como aprovechándose gratis del sistema de ordenanzas financiado por los contribuyentes de esa localidad. Más aún si esa ley se aplica principalmente al gobierno local de la zona. Por otro lado, se siente raro que las leyes estén restringidas por copyright
Cuando contratas a alguien para hacer un trabajo en tu casa, también hay que pensar qué exactamente pasas a poseer además del resultado final
Es una gran dirección. Trabajando con equipos gubernamentales, vi lugares donde este enfoque se presentaba como práctica recomendada: https://www.forgov.qld.gov.au/information-and-communication-...
Sin embargo, en muchos casos todavía hace falta el paso de convertirlo en un requisito legal para que esa recomendación realmente se siga. Especialmente en los servicios públicos, donde es común que haya personas que nunca participaron en una comunidad open source
Como otros señalaron, el presupuesto público debe traducirse en beneficio público, y el open source es una buena forma de ampliar ese beneficio
Hay una frase que dice: “La nueva ley no se aplica a código clasificado, sistemas de seguridad nacional ni código que, al compartirse, suponga riesgos para la privacidad”
¿Qué clase de código podría suponer un riesgo para la privacidad si se comparte? Suena como si el código y los datos estuvieran mezclados de una forma bastante mala
Los contratistas gubernamentales admiten de buen grado, entre líneas, que su código es pésimo y que en general depende de la seguridad por oscuridad. La comisión de información también les dio la razón algunas veces
Por ejemplo, basta pensar qué podrías ver en fórmulas de Excel