Nunca he intentado conectar CatB a la plataforma de Yegge. Sus autores también podrían sorprenderse de cualquier conexión. Estaban escribiendo sobre equipos de software muy diferentes, resolviendo diferentes problemas en diferentes momentos.
El mundo del software de mediados y finales de los 90, que produjo “La catedral y el bazar”, fue un momento diferente. Todo parecía posible para el código abierto. Parecía mejorar a pasos agigantados ante sus propios ojos, hasta el punto de que Linux, Apache o MySQL de este año fue mucho mejor (más rápido, más estable, más capaz) que el año pasado, como para parecer un tipo completamente diferente de cosa. Mientras tanto, el software comercial parecía dormido; En el año que separó esas dos versiones incomparables de MySQL, Oracle literalmente podría no haber cambiado en absoluto. Extrapolando estas tasas de crecimiento incluso unos pocos años, concluiría que el software de código abierto estaba destinado a dominar, pronto y con fuerza.
En retrospectiva, gran parte de este efecto fue solo vigor juvenil. Al estudiar el crecimiento de un niño pequeño, no llegamos a la conclusión de que el niño tendrá 100 pies de altura en diez años. El código abierto estaba experimentando una fase temprana de mejora insostenible y explosiva, recogiendo fruta que los sistemas de código cerrado habían comido años atrás. En las áreas técnicas que soy más competente para juzgar (sistemas operativos, virtualización), el código abierto generalmente retrasó el trabajo comercial por al menos un par de años. Por ejemplo, si bien Linux tenía una gran cantidad de buenas ideas de UNIX industrial para prestar, mejoró tan rápido como se pudieron aplicar las ideas. Una vez que obtuvo Pareto lo suficientemente bueno en comparación con Solaris en algún momento en 2006, más o menos, desaceleró a aproximadamente la tasa media de mejora de sus núcleos pares. Mientras tanto, MacOS se ha dado cuenta de los sueños colectivos de Linux de ser un UNIX que a la gente normal le importa, aunque lo hizo desde la más “catedral” de todos los entornos imaginables.
- ¿Cuál es la diversidad de la ingeniería de software?
- ¿Por qué Python cubre tantas áreas de desarrollo de software?
- ¿Qué cursos / conceptos de CS necesito entender bien para construir mi propio cliente bittorrent?
- ¿Por qué es tan barato externalizar un proyecto de software a la India?
- En el mercado laboral de la ingeniería de software, ¿qué piensan los empleadores sobre los certificados profesionales de las mejores universidades?
Sin embargo, no atribuiría toda la promesa de código abierto a tener que seguir pasos. Tenía una ventaja estructural de la que carecía su competencia de fuente cerrada: no, afirmo, el caótico mercado de ideas que lo creó (la tesis de CatB), sino un breve circuito de retroalimentación que conecta a los usuarios con los desarrolladores. Supongamos que un usuario tiene una idea prometedora para MS Windows hoy. Incluso si el propio Steven Sinofsky se está moviendo un poco para ver esta idea en MS Windows, lo más pronto que esa idea saldrá a la luz será a fines de 2014. Para entonces, la idea puede haberse vuelto irrelevante debido a razones tecnológicas o comerciales, o el las personas que implementan la idea pueden malinterpretar sutilmente o implementarla mal, etc. Ahora debemos esperar la próxima llegada del cometa Halley antes de que podamos ver si la promesa de esta simple idea realmente se cumple.
Las grandes empresas web han logrado esta ventaja dinámica sin (necesariamente) abrir el software involucrado. Al ejecutar el software en el equipo que controlan, pueden reaccionar ante las oportunidades y las amenazas competitivas sin imprimir CD, guardarlos en cajas, llevarlos a las tiendas y de alguna manera atraer a los usuarios perfectamente felices a actualizar. La instrumentación le dice a los desarrolladores si la característica es valiosa o no, y en qué medida, en tiempo real y con significación estadística. Los experimentos completos tienen un comienzo, una mitad y un final durante un par de semanas. Incluso las piezas de software técnicamente complejas se pueden probar con fuego tan pronto como un prototipo en funcionamiento pueda mantenerse en producción. Esta capacidad de probar ideas rápidamente, incluso si las ideas mismas son imperfectas, fue el motor real que impulsó el código abierto a fines de los años 90. También es la razón por la que cada vez más software que realmente le importa a la gente ha llegado a ejecutarse en el lado del servidor, entregado a través de Internet a navegadores web o aplicaciones cliente.
La apertura de la fuente y la caótica libertad para todos que condujeron a su desarrollo fueron incidentales. De hecho, estoy absolutamente seguro de que hoy, los proyectos insignia de código abierto se mueven más lentamente que Facebook internamente. El drama de la lista de correo, las luchas de fuego, las crisis de horquillas y el cambio de bicicletas requieren tiempo y energía, y los proyectos de código abierto más exitosos terminan generando este espectáculo secundario (sin culpa de los proyectos o sus líderes, podría agregar). No todos los ingenieros de Facebook son santos ni nada, y ciertamente he estado involucrado en mi parte justa de argumentos de diseño acalorados. Pero más allá de cierto punto, los argumentos en Facebook se resuelven en código, y la realidad decide. Esto es difícil de hacer en un entorno donde el código es de propiedad comunitaria.
Vincular esto a la plataforma de observación de Yegge, las plataformas o SoA, o lo que sea, son solo la versión interna de la compañía de esta misma dinámica. Facebook puede cambiar su software cuando lo desee, porque los usuarios usan su software a través de un número limitado de canales estructurados: la web, la aplicación para iPhone, la API de conexión, etc. Debido a la organización técnica interna de Facebook, los back-end para búsqueda, suministro de noticias , los anuncios, así como los sistemas horizontales de nivel inferior que admiten estas capas superiores, pueden trasplantarse sin coordinarse con otros equipos. Estos componentes interactúan con el resto de las entrañas de Facebook a través de canales estrechos y bien definidos. Cuando su empresa crezca lo suficiente, no tener una organización interna que refleje fractalmente la organización de Internet en sí misma le impedirá moverse rápidamente; Las versiones internas del problema de lanzamiento de Microsoft Windows comienzan a acumularse, donde lleva un año sacar algo que realmente funciona con todo. (Y honestamente: tomaría la caracterización de Yegge de Facebook como una especie de Ultimate Platform Company con un grano de sal. No practicamos todo lo que predicamos. Y Google es demasiado grande y bueno como para no tener mucho bien) -Organizados órganos internos, también.)
En resumen: la velocidad de iteración triunfa sobre todo. Cuando el software de código abierto / bazar producido fue el rey de la velocidad de iteración, fue el software que mejoró más rápido en la tierra. Ahora que las compañías que ejecutan software en el lado del servidor pueden moverse más rápido, tienen más éxito, independientemente de la naturaleza abierta / cerrada, catedrática / bazariana de los entornos internos de esas compañías.
(No estoy hablando por mi empleador).