BSD no Windows: Coisas que eu gostaria de saber que existiam

Esforços para executar ambientes BSD ou semelhantes a Unix no Windows — de projetos antigos como BSD on Windows (BOW) e coLinux até o SFU/Interix da própria Microsoft e o WSL de hoje — destacam tanto o apelo quanto a complexidade de conectar esses sistemas operacionais. Os comentaristas avaliam a viabilidade desses subsistemas em comparação com alternativas modernas como máquinas virtuais e camadas de compatibilidade, e discutem por que POSIX, APIs específicas do Linux e a interface Win32 estável do Windows levaram à história fragmentada de portabilidade de hoje. O tópico também aborda os pontos fortes e fracos do design do kernel NT e como escolhas estratégicas da Microsoft e do ecossistema de código aberto em geral moldaram quais plataformas se tornaram dominantes.

BSD histórico no Windows (BoW) e subsistemas Unix

  • O BoW é visto como um artefato histórico muito legal: um ambiente BSD no Windows 3.1 usando binários a.out, mais parecido com serviços no estilo EMX/HURD do que com Cygwin.
  • Pontos fortes mencionados: roda em hardware muito modesto, sem formatação de disco ou mudanças de drivers, pode usar Winsock e consegue executar coisas como vi, gcc, hack, Apache 1.3.
  • Principal limitação: essencialmente monousuário, por causa das restrições do Win16; algumas pessoas especulam que uma evolução baseada em NT poderia ter sido muito mais impactante.
  • Alguns prefeririam um subsistema BSD moderno e completo no Windows em vez de um ambiente esquisito como o BoW.

Outras soluções Unix-no-Windows

  • Os participantes lembram de uma longa linha de abordagens: Cygwin, MSYS2, Git Bash, coLinux, Linux com debugger hackeado, SFU/Interix, UWIN.
  • SFU/Interix é descrito ao mesmo tempo como “horrível” e “funcionava bem”, dependendo do caso de uso; alguns tiveram sucesso compilando cargas de trabalho reais, outros acharam pouco confiável e estranho de licenciar.
  • Há nostalgia por um Windows que inicializa em um userland estilo Unix em modo caractere.

Binários multiplataforma e POSIX vs Linux

  • Alguns gostariam de compatibilidade cruzada nativa entre executáveis Windows e Linux; outros argumentam que a realidade atual (Win32 + WSL + containers) provavelmente é o melhor que se consegue.
  • Cosmopolitan/APE e Win32-on-Linux são citados como direções promissoras, mas são apontadas limitações para APIs complexas (gráficos, Bluetooth, etc.).
  • Há críticas fortes ao direcionamento para APIs “só Linux” e comportamento específico do glibc; POSIX é visto como pouco usado apesar de ser suficiente para a maioria dos apps.
  • Usuários de BSD argumentam que, se os desenvolvedores evitassem código específico de Linux, seu software em grande parte “simplesmente funcionaria” em BSD e outros sistemas parecidos com Unix.

Linkagem estática, empacotamento e complexidade do Linux

  • Uma anedota detalhada descreve tentativas fracassadas de distribuir um único binário estaticamente ligado de um jogo Love2D devido a pilhas profundas de dependências (bibliotecas de imagem/áudio, Mesa, drivers de GPU).
  • A linkagem estática no Linux é retratada como frágil e frustrante; linkagem dinâmica com empacotamento (arquivos .so, AppImage, Flatpak) é sugerida como mais realista.
  • Go com cgo desativado é mencionado como uma solução parcial para binários CLI estáticos, embora gráficos continuem difíceis.

Microsoft, POSIX e WSL

  • O subsistema POSIX histórico do NT é enquadrado tanto como um requisito de conformidade para contratos governamentais quanto como uma oportunidade perdida; se tivesse sido melhorado em vez de abandonado, alguns acham que a posterior dominância do Linux poderia ter sido enfraquecida.
  • WSL/WSL2 é referido como uma espécie de “mea culpa”, reintroduzindo capacidades semelhantes ao Unix depois que os subsistemas anteriores foram descartados.
  • Debate sobre Interix: um lado diz que foi “comprado e extinguido”, outros apontam que ele foi oficialmente suportado por mais de uma década, embora sua usabilidade supostamente tenha piorado.

Design de kernel: NT vs Unix

  • Alguns elogiam a herança VMS do kernel NT e seu design; outros o chamam de “nem bom / nem terrível”, criticando a complexidade de drivers, o modelo IRQL, o HAL e a pilha de rede dividida.
  • Há discordância sobre se benchmarks ou a experiência cotidiana mostram o NT como particularmente forte ou fraco; o consenso é que as camadas Win32 escondem em grande parte qualquer elegância por baixo.

Frustrações mais amplas: ecossistemas e longevidade

  • Reclamações sobre ecossistemas proprietários causando obsolescência de hardware (por exemplo, impressoras perdendo suporte a drivers em novas versões do macOS).
  • Preocupação de que a dominância do Linux em suporte a hardware e DRM reduza paradoxalmente a escolha prática de sistema operacional, já que outros sistemas livres precisam importar código do Linux para acompanhar.
  • Alguns argumentam que a indústria subestima compatibilidade retroativa e preservação, levando a desperdício desnecessário.

Fora do tópico: riqueza, criatividade e expectativas

  • Um desvio explora como criadores ricos às vezes param de fazer “projetos legais” (como jogos ambiciosos ou experimentos de SO) depois de ficarem ricos.
  • As opiniões divergem entre criticar isso como uma oportunidade desperdiçada e aceitar que o trabalho anterior já foi contribuição “suficiente”.