¿Por qué algunos desarrolladores de código abierto presumen de no escribir software para Windows?

No creo que sea esnobismo. Hay muchas razones por las cuales Microsoft es el hijastro pelirrojo del desarrollo de software.

Durante décadas, las API de Windows fueron terriblemente complejas y mal documentadas. Las llamadas tenían efectos secundarios indocumentados, había cosas inocuas que podrían obstaculizar el rendimiento … Y, a diferencia de Linux u OS X, realmente tiene que invertir algo de tiempo y dinero en las herramientas para comenzar. Las API POSIX utilizadas en entornos que no son de Windows están comprobadas y están cuidadosamente documentadas, y una gran cantidad de lenguajes de programación y herramientas de desarrollo de software están disponibles de forma gratuita (vienen con los sistemas operativos).

Microsoft hizo un largo camino hacia la limpieza de su acto al desarrollar la plataforma .Net y despreciar las API de WIN32. También comenzaron a hacer cosas como implementar compiladores C y C ++ que cumplen con los estándares. Los controladores de dispositivos siguen siendo estúpidamente tediosos y complejos de escribir en comparación con casi cualquier otra cosa, pero el software está llegando allí, incluso si todavía tiene que pagar para jugar.

Hay otras razones para: la plataforma principal de Microsoft para consumidores y empresas se encuentra en los sistemas de gama baja, por lo que esas personas están más o menos bloqueadas de la mayoría del desarrollo. Hay poco disponible en el soporte de secuencias de comandos nativas, lo que no fomenta la experimentación.

Agregue al hecho de que ha habido una evolución lejos del desarrollo para el escritorio y hacia servicios de back-end y en la nube, móviles e informática integrada. Microsoft es un jugador minoritario hoy en día en el mundo de la informática, que predomina en las tecnologías web y móviles basadas en sistemas UNIX (Linux en particular, y en menor medida BSD / iOS / OS X).

Microsoft todavía está en el juego por razones heredadas: una gran base instalada de usuarios comerciales y usuarios domésticos con hardware para ejecutar sus aplicaciones y juegos. Pero son un jugador de nicho en la evolución moderna de la informática.

Trabajo en biotecnología y todo lo que hago es en un entorno Linux, UNIX u OS / X. Hace 5 años, la mayoría de nuestra instrumentación tenía computadoras basadas en Windows que las controlaban, ahora no tenemos un solo proveedor que no haya migrado a Linux para controlar la instrumentación. Tenemos muy pocos sistemas Windows y están dedicados a AD, Exchange o trabajo de secretaría. En casa, todo lo que tengo funciona con algún tipo de UNIX: mi computadora Mac, las computadoras de una sola placa que uso para proyectos electrónicos; mi DVR ejecuta Linux, el kit de robótica Lego de mi hijo ejecuta Linux … Mi teléfono móvil también ejecuta una variante UNIX. Todos usan las mismas API centrales con diferencias principalmente en sus API.

TL; DR: Windows es tedioso y muy costoso de desarrollar en comparación con las alternativas; como plataforma, es el hombre extraño por la compatibilidad API con la infraestructura moderna y muchos desarrolladores lo consideran ampliamente como una plataforma heredada.

No es presuntuoso: las interfaces de programación de aplicaciones (API) que debe aprender para que su software funcione en Microsoft Windows de forma nativa son difíciles, generalmente más complejas que las cosas POSIX que necesita para Linux y Mac OS Classic.

En los casos en que un experto de Windows está dispuesto a hacer el trabajo extra, los proyectos generalmente están dispuestos a incluirlo. (Un buen ejemplo es el Servidor Apache HTTP).

More Interesting

Estoy considerando dejar mi trabajo de ingeniero de software senior, pasar tres meses y $ 23k en total en el programa de ciencia de datos, y luego buscar un puesto de ciencia de datos. ¿Vale la pena?

¿Cuáles son las habilidades esenciales necesarias para convertirse en un programador de red?

¿Qué distingue a los mejores arquitectos de software de los mediocres?

¿Cuáles son las habilidades adicionales que se pueden desarrollar para una buena carrera en un campo de software?

¿Qué es un mejor software de protección, Malwarebytes o Avast?

¿Cómo debo usar Git / SVN para mis proyectos que se ejecutan en un servidor EC2? Soy la única persona que escribe el código.

¿Está bien trabajar en un lenguaje de programación que no se usa en ninguna parte, excepto en mi pequeña empresa? El lenguaje se basa en conceptos OOPS y es similar a C ++. Estoy realmente preocupado por mi futuro. ¿Debo solicitar otros trabajos?

¿Está bien que un ingeniero senior con 7 años de experiencia trabaje continuamente en un campo técnico durante 3 años más?

¿Qué software debe saber un ingeniero químico?

¿Cuáles son los desafíos en los servicios de prueba de software?

¿Dónde consigo una pasantía de MCA en Pune?

¿Les importa a los grupos de desarrollo de software si su gerente de proyecto sabe algo sobre codificación?

¿Cuál es la mejor estrategia para hacer en la universidad?

¿Cuál es mejor: ingeniería informática en DTU, ingeniería de software en DTU o ingeniería informática en NSIT?

Como desarrollador, ¿cómo trato con los malos gerentes de proyecto?