💎 Zod 4 is now stable!  Read the announcement.
Zod logo

Uniéndome a Clerk como OSS Fellow para trabajar en Zod 4

Estoy emocionado de anunciar que soy el recipient inaugural de la Beca OSS de Clerk! Esta beca es una especie de "pasantía de verano"—Clerk me está pagando un salario de tiempo completo (piensa en ingeniero de software de nivel de entrada) para trabajar en Zod a tiempo completo durante el verano de 2024.

En el contexto tanto de mi propia trayectoria profesional como del desarrollo de Zod, este es un acuerdo perfecto, y estoy más que agradecido de que Clerk estuviera dispuesto a experimentar con algunos acuerdos de financiación alternativos para OSS.

Veamos un poco el contexto aquí.

En cubierta: Zod 4

La versión mayor actual de Zod (v3) se lanzó en 2021. En términos de estructura e implementación, acerté en muchas cosas con Zod 3. La base de código ha sido lo suficientemente versátil para soportar 23(!) lanzamientos menores, cada uno con nuevas características y mejoras, sin cambios disruptivos en la API pública.

Pero hay un par de problemas recurrentes de DX que requerirán cambios estructurales para abordarse, y eso implicará cambios disruptivos. (Vale la pena señalar desde el principio que la mayoría de los usuarios de Zod no se verán afectados, pero muchas de las bibliotecas en el ecosistema de Zod dependen de API internas y necesitarán ser actualizadas).

  • Para simplificar la base de código y habilitar herramientas de generación de código más fáciles, algunas subclases de ZodType se dividirán o consolidarán.
  • Para mejorar el rendimiento, se cambiará la firma del método (cuasi-)interno _parse. Cualquier subclase definida por el usuario de ZodType deberá actualizarse en consecuencia.
  • Para limpiar el autocompletado, algunos métodos y propiedades internos se harán protected. Algunas API actuales quedarán obsoletas; algunas API obsoletas se eliminarán.
  • Para mejorar el reporte de errores, simplificaré el sistema de mapa de errores de Zod. El nuevo sistema también será más susceptible a la internacionalización (RFC próxima).
  • Para habilitar la semántica de exactOptionalPropertyTypes, la lógica utilizada para determinar la opcionalidad de la clave en ZodObject cambiará. Dependiendo del valor de exactOptionalPropertyTypes en tu tsconfig.json, algunos tipos inferidos pueden cambiar (RFC próxima).
  • Para mejorar el rendimiento del servidor TypeScript, algunas firmas de clase genéricas (por ejemplo, ZodUnion) se cambiarán o simplificarán. Otras utilidades de tipo se volverán a implementar para mayor eficiencia, pero pueden resultar en un comportamiento marginalmente diferente en algunos contextos.

En resumen, Zod 4 será una reescritura desde cero de la biblioteca con pocos cambios disruptivos para los usuarios típicos, mejoras de velocidad dramáticas, una estructura interna más simple y una gran lista de nuevas características.

La historia de financiación actual de Zod

Zod tiene muchos donantes generosos y es probablemente una de las bibliotecas de utilidades TypeScript más bien patrocinadas de su tipo. En este momento, eso equivale a poco más de $2600/mes. Estoy agradecido por este nivel de apoyo, y supera con creces las expectativas que tenía cuando configuré por primera vez mi perfil de Patrocinadores de GitHub.

Pero con mucho amor y aprecio a todas las personas y empresas que apoyan a Zod, eso está lejos de reemplazar un salario de tiempo completo en los EE. UU.

Dejé Bun a principios de este año y pasé un par de meses viajando, aprendiendo cosas nuevas y recuperándome del agotamiento. A partir de abril, pasé unas 6 semanas fusionando PRs y solucionando problemas, culminando en el lanzamiento de Zod 3.23 (la versión final 3.x). He pasado el último mes más o menos especificando Zod 4.

En mi estimación, tomará unos tres meses más de trabajo a tiempo completo completar la reescritura y desplegar el nuevo lanzamiento de manera responsable a la ahora masiva base de usuarios de Zod y bibliotecas del ecosistema de terceros. Estoy más que emocionado de hacer todo este trabajo, pero eso es mucho tiempo para estar sin ingresos.

Así que me acerqué a algunas empresas con una propuesta experimental: una "incubadora OSS" donde la empresa patrocinaría el desarrollo de Zod durante 12 semanas (mi línea de tiempo para el lanzamiento de Zod 4). Durante esta ventana predeterminada, me pagarían un salario razonable, y la empresa sería el principal patrocinador de Zod. El costo para la empresa se conoce de antemano, ya que todo tiene un límite de tiempo; es como una incubadora o una pasantía.

La beca Clerk

Para mi deleite, Colin de Clerk (AKA "el otro Colin") estaba entusiasmado a bordo. He admirado a Clerk durante mucho tiempo por su producto, ojo para la experiencia del desarrollador y compromiso con el código abierto. De hecho, los cubrí en mi podcast el día que se lanzaron en HN en febrero de 2021. Ya han estado patrocinando Auth.js (anteriormente NextAuth) durante algún tiempo y estuvieron inmediatamente abiertos a discutir los términos de una posible "beca".

A cambio del apoyo, Clerk obtiene una versión súper cargada de las ventajas que los otros patrocinadores de Zod ya obtienen:

  1. Colocación de nivel Diamante en el README y los documentos 💎 Logotipo grande. Grande. Enorme.
  2. Actualización de mi biografía de Twitter durante la duración de la beca para reflejar mi nueva posición como Clerk OSS Fellow 💅
  3. Menciones en las próximas RFCs (Solicitudes de Comentarios) de Zod 4. Históricamente, las RFCs de Zod han atraído mucha atención y comentarios de la comunidad TypeScript (o al menos de TypeScript Twitter). Este es un lugar perfecto para agradecer a la empresa que (efectivamente) me está pagando para implementar estas nuevas características.
  4. Un pequeño anuncio en la parte inferior de la barra lateral del nuevo sitio de documentación de Zod (en construcción ahora). Puedes ver cómo se vería esto en los documentos de Auth.js.
  5. Para la continuidad después del lanzamiento de Zod 4, Clerk obtiene "primeros derechos" (derecho de tanteo) sobre un nuevo espacio de patrocinador "nivel diamante" continuo durante 6 meses. La idea es que este es un "espacio" exclusivo: solo una empresa puede mantenerlo a la vez. Las ventajas de este nivel incluyen el gran logotipo en el README y la ubicación del anuncio en la barra lateral.
  6. ¡Esta publicación de anuncio! Sí, has estado leyendo material de marketing todo este tiempo. Te atrapé.

OSS, modelos de financiación e intentar cosas nuevas

Este modelo representa un interesante término medio entre el modelo de patrocinio tradicional y el enfoque de "mantenedor en residencia" que empresas como Vercel han adoptado con Rich Harris/Svelte. Zod no necesita un mantenedor a tiempo completo a perpetuidad (en realidad, no me importaría eso... 🙄) pero sí necesita atención a tiempo completo para sacar esta versión mayor por la puerta.

Esta beca es una forma de cerrar esa brecha. En general, estoy más que emocionado de haber encontrado un socio en Clerk que esté interesado en probar algo como esto.

¡Animo a otras empresas a probar cosas similares! No hay escasez de bibliotecas invaluables con mantenedores de tiempo completo (o casi tiempo completo) que renuncian a un ingreso regular para construir herramientas gratuitas. ArkType, Valibot y tRPC me vienen a la mente.

Así que si estás construyendo una aplicación en algún momento pronto, sé inteligente: valida tus cuerpos de Request (o, eh, ¿argumentos de Acción del Servidor?) y no implementes tu propia autenticación.

On this page