- Mitchell Hashimoto y su esposa prometieron donar USD 300.000 a la Zig Software Foundation, apoyando públicamente el desarrollo independiente de Zig y la operación de la fundación
- La donación se entregará a lo largo de 2 años, con USD 150.000 por año, y el primer desembolso ya fue realizado
- Hashimoto venía siguiendo Zig desde 2019, comenzó a usarlo en 2021 y desde 2022 ha seguido escribiendo sobre el tema y haciendo contribuciones al compilador
- Ghostty, el proyecto de terminal que presentó en 2023, también está escrito en Zig, y actualmente la mayor parte de su tiempo de programación la dedica a Zig
- Aunque a Zig todavía le queda camino por recorrer en estabilidad y adopción más amplia en la industria, Hashimoto lo ve como un proyecto con una comunidad sólida y un modelo de financiamiento sostenible, y recomienda donar
Compromiso de donación de USD 300.000
- Mitchell Hashimoto y su esposa se comprometieron a donar USD 300.000 a la Zig Software Foundation
- El pago está estructurado para realizarse a lo largo de 2 años, con USD 150.000 cada año
- El primer desembolso ya fue entregado
- La ZSF aborda la misión de la fundación y los usos concretos de los fondos en un anuncio aparte
Por qué Hashimoto apoya a Zig
- Hashimoto ha seguido el proyecto Zig desde alrededor de 2019, y en 2021 compartió públicamente sus expectativas sobre el proyecto
- Empezó a usar Zig a fines de 2021, y desde comienzos de 2022 empezó a escribir artículos relacionados con Zig y a contribuir al compilador
- Desde entonces, ha continuado haciendo decenas de contribuciones de código al repositorio de Zig
- El proyecto de terminal Ghostty, presentado en 2023, fue escrito en Zig, y actualmente Hashimoto dedica la mayor parte de su tiempo de programación a Zig
Evaluación de Zig y la ZSF
- Hashimoto ve a Zig como un proyecto de software independiente capaz de generar cambio e impacto
- Zig comenzó como un proyecto impulsado por la pasión y aún mantiene ese carácter; considera que la operación del proyecto y su comunidad son sólidas
- Ve su modelo de financiamiento como transparente y sostenible, y, en lo técnico, como ambicioso e innovador, pero también práctico y realista
- Aunque todavía se necesita tiempo para alcanzar estabilidad y una adopción más amplia en la industria, considera que el camino y la oportunidad para lograrlo son claros
- Aproximadamente un tercio de los fondos de la ZSF proviene de donaciones individuales, y recomienda donar a quienes puedan hacerlo
1 comentarios
Opiniones en Hacker News
La frase “nuestra filantropía normalmente es privada, pero por mi trayectoria creo que un apoyo público a Zig puede ayudar de verdad al proyecto, así que hago una excepción” me llegó de una forma curiosa
Es difícil expresarlo con precisión, pero hay una decencia básica ahí que merece reconocimiento
¿Quiere decir que el apoyo público no ayuda a otras actividades filantrópicas? Si es así, me dio curiosidad saber qué tipo de actividades son. Claro, si uno hace caridad con su propio dinero, al final puede hacerlo como quiera, pero la forma de expresarlo sonó un poco curiosa
En este caso, ese apoyo público podría atraer contribuciones adicionales mayores que el monto de su propia donación
Si alguien de Zig Foundation está leyendo, recomiendo mucho crear una bolsa de trabajo
En un lugar con lectores de un nicho específico, es casi una fuente de ingresos gratis
Puede ser una pregunta tonta, pero como desarrollador web normalmente solo me acerco a la programación de sistemas/de bajo nivel por curiosidad
Se suele decir que, siempre que sea posible, hay que migrar todo a lenguajes con seguridad de memoria, pero Zig no parece ofrecer esas garantías. Si Zig es un lenguaje nuevo, su uso principal serán proyectos nuevos; entonces me pregunto si no deberían empezar con un lenguaje con seguridad de memoria. Si la ventaja de Zig es “más moderno que C y más simple que Rust”, entiendo el atractivo, pero ¿no se debilita esa ventaja si le falta seguridad de memoria?
Si el objetivo final fuera solo la seguridad, JavaScript habría bastado. Rust seguro garantiza seguridad de memoria, así que es una gran mejora en programación de sistemas, pero no siempre es la respuesta definitiva. Hay compromisos según la aplicación, y personalmente creo que es más importante que la seguridad sea fácil de lograr que tener seguridad garantizada. El problema de C y C++ era que hacerlos seguros era demasiado difícil
unsafe, lo que en la práctica equivale a desactivar las funciones de seguridad de memoriaTodavía habrá que ver si Zig es realmente menos seguro que Rust. En cualquier caso, para hacer que un programa sea seguro hay que escribir muchas pruebas, y Rust no elimina mágicamente todos los bugs. En Zig, si pruebas lo suficiente en modo debug, probablemente puedas atrapar la mayoría de los bugs de seguridad de memoria. Aun así, si fuera a hacer algo como un navegador web, creo que usaría Rust
Basta ver la industria de los videojuegos, o la industria en general en la época en que el software tenía que grabarse en discos para distribuirse. El problema actual es que la complejidad de los lenguajes aumentó y el nivel promedio de habilidad de los desarrolladores de software bajó. Que Google creara Go fue, en cierta medida, para resolver este problema, y Rust es otro lenguaje que puso la seguridad de memoria en el centro de su diseño. Otra razón por la que Rust favorece escribir programas más seguros es que es mucho menos complejo que C++. Aunque se está volviendo cada vez más complejo, por suerte en la comunidad de Rust el concepto de seguridad de memoria está profundamente arraigado, así que aunque el lenguaje se complique, esa ventaja y los hábitos de los desarrolladores seguirán presentes
Zig también es una buena opción si valora la seguridad. Simplifica con sintaxis como
defery ofrece varios targets de ejecución y herramientas para detectar problemas de seguridad de memoria durante el desarrollo. El compilador no lo impone; se detecta en runtime en compilaciones de desarrollo/noReleaseFast, pero aun así es una mejora frente a C/C++Tiene bastantes herramientas y verificaciones de seguridad de memoria que C no tiene. La seguridad es un espectro. C es menos seguro que C++, C++ es menos seguro que Zig, Zig es menos seguro que Rust, Rust es menos seguro que Java y Java es menos seguro que Python. El comportamiento indefinido y la corrupción de memoria siguen siendo posibles en todos; la diferencia es qué tan fácil es que ocurran
Aun así, Zig todavía no es un lenguaje terminado, así que es difícil afirmarlo ahora. Zig tiene buenas funciones de seguridad de memoria, y aunque no está al nivel de JavaScript o Rust, tampoco es igual que C. La última vez que revisé, el uso después de liberar memoria era un problema grande, y si no logran resolverlo, creo que Zig no tiene futuro
JavaScript sí es un lenguaje realmente seguro en memoria, pero su runtime y su nivel de abstracción no son adecuados para programación de sistemas. Para programación de sistemas, creo que se necesita algo que sea seguro en memoria por defecto, pero con vías de escape, y con una abstracción baja, apenas un nivel por encima del PDP-11 virtual al que en general han apuntado los compiladores y las CPU. Debe permitir que el programador piense según el modelo de ejecución de la CPU sin quedar enterrado en los detalles, y también debe tener una interoperabilidad muy buena con C
Creo que Rust logró bien lo primero. Su debilidad es lo segundo. Tiene capacidades de bajo nivel, pero están enterradas bajo una pila de complejidad de funciones del lenguaje. Además, no permite algunos patrones de gestión de memoria que son completamente seguros, por lo que hay que usar
unsafedemasiado seguido o retorcer el código para ajustarlo al espacio de la solución, no al dominio del problemaZig es débil en lo primero. Tiene buenas funciones, pero también huecos grandes. En cambio, es bastante fuerte en lo segundo. Lo que me gustaría es que Zig ofreciera seguridad de memoria por defecto, pero de una forma mucho más flexible que Rust, y que mantuviera sus ventajas de baja abstracción e interoperabilidad con C
Al ver la noticia reciente de que pasaron a autoalojamiento, me dio la impresión de que es un proyecto especialmente eficiente, que no va a desperdiciar las donaciones
[1] https://kristoff.it/blog/zig-self-hosted-now-what/
[2] https://ziglang.org/news/migrate-to-self-hosting/
“Amor, hay un lenguaje de programación que me gusta muchísimo y quiero hablarte de él”
“¿Sí?…”
“Me gusta tanto, tanto ese lenguaje, que quiero donar algo de dinero…”
“……Ahí vas de nuevo……”
“¡Me parece bien! Subámonos a nuestro Cirrus SF50 Vision y vayamos a entregárselo en persona a Andrew Kelley”
Sin duda es una buena noticia, pero para ponerlo en perspectiva, esta cantidad equivale más o menos a entre 0.75 y 1 salario anual de un desarrollador experimentado que trabaja con compiladores
Es una conjetura, pero Microsoft probablemente gasta cada año entre 10 y 20 veces eso solo en TypeScript, y mucho más en C++/C#, etc.
Claro que el costo de un desarrollador no termina en el sueldo. Aun así, sentí que los puestos similares al de un desarrollador de compiladores que trabaja en un compilador estándar ANSI dentro de una gran empresa tecnológica suelen incluir una buena dosis de “pago por riesgo”, porque el trabajo real puede ser bastante desagradable en comparación con tareas más libres
Con el financiamiento adecuado, puede servir como catalizador para no tener que tener dos trabajos ni limitarse a trabajar de noche o los fines de semana
Francamente, Zig me genera muchas expectativas
Es ágil y sin adornos innecesarios, y no es un lenguaje creado por gente en una torre de marfil a la que no le importa la usabilidad real. Tampoco fue diseñado por un equipo de doctores como Haskell, aunque claramente parece haberse inspirado en ideas útiles de Rust, Haskell y otros. Escribir código en Zig suena bastante interesante
Quizá sus garantías de seguridad de memoria no sean tan completas como las de Rust, pero me gustaría ver Zig algún día en el Linux Kernel. Tal vez los programadores veteranos de C del kernel se adapten más fácilmente a Zig que a Rust
zig fmten lugares como vim o VS CodeCuando se imponen las preferencias de estilo, queda un sabor amargo. Se siente como una actitud que no respeta a los desarrolladores que usan el lenguaje como herramienta. También podría ser una señal de problemas más profundos en torno a la participación de la comunidad y la apertura a otros puntos de vista, y Zig realmente parece tener esos problemas[0]
Si una empresa necesita consistencia en el código, basta con ejecutar un linter; en mis proyectos de fin de semana no me importa nada más que mis propias preferencias de estilo. La cuestión es si Zig es o no un lenguaje para adultos. Si de todos modos me van a obligar a programar de una forma específica, no hay razón para no usar Rust, que además te da seguridad de memoria gratis
[0] https://github.com/ziglang/zig/issues/16270