2 puntos por GN⁺ 2024-09-25 | 2 comentarios | Compartir por WhatsApp

Winamp

Introducción

  • Winamp es un reproductor multimedia lanzado en 1997, famoso por su compatibilidad con varios formatos de audio y su flexibilidad.
  • Fue desarrollado por Nullsoft y ganó gran popularidad entre millones de usuarios.
  • Su desarrollo estuvo detenido durante un tiempo, pero ahora se ha publicado el código fuente para que la comunidad pueda mejorar y modernizar el reproductor.

Uso

  • La compilación del cliente de escritorio de Winamp se basa actualmente en Visual Studio 2019 (VS2019) y la biblioteca Intel IPP.
  • Hay varias formas de compilar Winamp.
    1. Usar el archivo de script build_winampAll_2019.cmd para compilar las 4 versiones x86/x64 (debug y release). En este caso, no se abre el IDE de Visual Studio.
    2. Usar el archivo winampAll_2019.sln para compilar y depurar dentro del IDE de Visual Studio.

Dependencias

  • Usar el archivo de script build_winampAll_2019.cmd para compilar las 4 versiones x86/x64 (debug y release). En este caso, no se abre el IDE de Visual Studio.
  • Usar el archivo winampAll_2019.sln para compilar y depurar dentro del IDE de Visual Studio.
libvpx
libmpg123
OpenSSL
  • Se debe usar openssl-1.0.1u.
  • Ejecutar build_vs_2019_openssl_x86.cmd y build_vs_2019_openssl_64.cmd para compilar la versión estática de la biblioteca.
  • Para compilar OpenSSL, es necesario instalar 7-Zip, NASM y Perl.
DirectX 9 SDK
  • El DirectX 9 SDK (junio de 2010) se toma de Microsoft, se modifica y luego se empaqueta como archivo.
  • Ejecutar unpack_microsoft_directx_sdk_2010.cmd para descomprimirlo.
Modificación de la biblioteca Microsoft ATLMFC
  • Cambiar la línea 427 del archivo C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\VC\Tools\MSVC\14.24.28314\atlmfc\include\atltransactionmanager.h de return ::DeleteFile((LPTSTR)lpFileName); a return DeleteFile((LPTSTR)lpFileName);.
Intel IPP 6.1.1.035
  • Intel IPP 6.1.1.035 se toma, se modifica y luego se empaqueta como archivo.
  • Ejecutar unpack_intel_ipp_6.1.1.035.cmd para descomprimirlo.

Resumen de GN⁺

  • Winamp sigue siendo querido por muchos usuarios gracias a su compatibilidad con varios formatos de audio.
  • La publicación del código fuente le da a la comunidad la oportunidad de mejorar y modernizar el reproductor.
  • Puede compilarse usando Visual Studio 2019 y varias bibliotecas, y es necesario manejar diversas dependencias.
  • Otros reproductores multimedia con funciones similares a Winamp incluyen VLC Media Player y foobar2000.

2 comentarios

 
wedding 2024-09-25

Viendo el tema, parece que hay mucha discusión sobre la licencia.

 
GN⁺ 2024-09-25
Opiniones en Hacker News
  • Me da curiosidad cómo esperan que la gente contribuya al proyecto. La sección 4 de la licencia dice que se envíen mejoras, nuevas funciones y correcciones de errores al repositorio oficial, pero las restricciones de la sección 5 prohíben los forks del código o la distribución de versiones modificadas.
    Entonces el flujo estándar de GitHub —“hacer fork del repositorio, modificar en una rama y enviar un pull request”— en sí mismo se vuelve una violación de la licencia.

    • Basta con abrir un issue y escribir el parche directamente en la descripción.
      Eso sí, no se puede probar ni depurar el parche. Eso implicaría crear una versión modificada de la base de código, y está prohibido. Solo hay que escribir directamente, sin ayuda de las prácticas habituales, lo que salga de alguna imaginación febril. Si alcanza para la licencia, también alcanzará para el código.
    • “Fork” tiene dos significados. Uno es el botón “Fork” de GitHub, que en realidad se parece más a copiar el repositorio a tu propia cuenta.
      El otro es “hacer un fork del proyecto”, es decir, desarrollar y distribuir activamente una línea alternativa con otro nombre. Creo que el flujo de pull requests de GitHub se puede usar sin problema. Lo lamentable aquí es que GitHub haya elegido un nombre que choca con el significado ya establecido de “fork”. En realidad debería haber sido “clone”.
    • Los Términos de Servicio de GitHub dicen que los usuarios tienen derecho a hacer fork de todos los repositorios públicos.
    • Parece que aquí “fork” se usa en el sentido amplio del mundo open source, como cuando NeoVim hizo un fork de Vim: crear tu propia versión y llevarla en otra dirección.
      GitHub simplemente usa la palabra “fork” también para crear una copia del repositorio con fines de contribución.
    • Creo que simplemente esperan que la gente ignore la licencia.
      La mayoría hará eso, no le van a mandar abogados a los contribuidores, y el mundo seguirá girando.
  • Lo mejor que se puede hacer ahora por el futuro de este proyecto es no involucrarse. Incluso clonarlo en un espacio de trabajo personal para revisarlo o compilarlo ya es demasiada participación frente a la postura actual de la licencia.
    Si aparece un post en HN diciendo que cambiaron su posición sobre la licencia, volveré a mirar; hasta entonces, mejor cerrar esta pestaña y olvidarlo.

    • Justin Frankel, el autor original, también es la figura legendaria que creó Reaper DAW, y respondió esto sobre el tema:
      Pregunta: Ya que el código fuente de WinAMP fue publicado oficialmente, ¿te dan ganas de hackearle alguna función nueva y genial?
      Respuesta: Aunque las hubiera tenido, las condiciones de la licencia me las habrían quitado, lol. La forma en que están escritas es completamente absurda. Por ejemplo, dice que “no se puede crear, mantener ni distribuir una versión fork del software”. Entonces cualquier cambio podría interpretarse como “crear una versión fork”. Incluso si se interpreta de forma un poco más permisiva, como supuestamente se pretendía, las condiciones son pésimas. Paso.
  • Recuerdo que hace muchísimo tiempo andaba por #mpeg3 en EFNet y conocí a Justin Frankel cuando estaba trabajando en esto.
    Le hice algunos skins y unos íconos de bandeja para la app, y algunos de ellos están aquí. No recuerdo al 100% cuáles son todos míos, pero punchlabel definitivamente es mío. También aparezco en los créditos: https://github.com/WinampDesktop/winamp/blob/0695744fd658c42...

  • Creo que van a terminar enviando una enorme cantidad de solicitudes DMCA a GitHub hasta lograr que les bajen su propio repositorio, o bien lo van a retirar ellos mismos de GitHub con el riesgo de perder derechos de autor.
    Los forks son una función central de GitHub. La política de forks solo se puede configurar en repositorios privados, y este es un repositorio público. La licencia no permite forks, y ya hay 6 forks. Normalmente, a diferencia de las marcas, los derechos de autor no se pierden por aplicación selectiva, pero en este caso el titular hizo que violar la licencia fuera facilísimo y además tiene acceso completo a la lista de infractores. Si no defienden activamente sus derechos, un tribunal probablemente se les reiría en la cara. Para GitHub también es una situación que no querrán manejar: una experiencia de usuario horrible en la que haces clic en uno de los botones más usados de la plataforma y de pronto te metes en un problema legal.

    • Como ya dijeron otros, GitHub ya cubrió esa parte en sus Términos de Servicio. Todos los repositorios públicos son forkeables.
    • Actualmente hay 410 forks.
  • Tengo una pequeña relación con Winamp. Hace tiempo hice un plugin bastante popular.
    Este es el código fuente de Winamp 3, que fue una reescritura completa de Winamp 2 en C++. En mi opinión, era demasiado complejo y sobrediseñado. El código original de Justin Frankel estaba en C.

    • Lo que se “proporcionó” es una versión reducida del paquete de código fuente 5.666 que se transfirió cuando AOL se lo vendió a Radionomy, más el resultado del trabajo iterativo hasta el lanzamiento 5.9.2.
      Así que es, por decirlo de alguna manera, un caos que mezcla varios años del desarrollo 1.x → 2.x → 5.x y el trabajo de muchas personas durante ese tiempo. También contiene una gran parte de Winamp3, que ya había sido liberada correctamente como open source durante la época de AOL. No como esta licencia tan fuertemente restringida. Eso sí, recuerdo que al armar el entregable de código nunca se proporcionó un repositorio dedicado de Winamp3. Si mi memoria de hace 11 años no falla.
      -dro
    • ¿El código original de Frankel está en algún lado? Recuerdo que él dijo alguna vez que prefería C++ a C, pero que en la práctica lo usaba como C con clases. Frankel es mi héroe.
  • En el verano de 1999, cuando estaba en la universidad, nuestra casa fue la primera en usar MP3 en las fiestas. La mayoría usaba cambiadores de CD, y como había muchos discos rayados y manchados, la música saltaba todo el tiempo.
    Nosotros fuimos completamente digitales y nos adelantamos a la época. Las fiestas eran en el sótano; dejábamos la computadora encerrada en una recámara libre y pasábamos cables y parlantes al espacio principal del sótano. Poníamos Winamp en modo aleatorio, durante horas no saltaba ni una vez y nadie tenía que estar pendiente de la música. Gracias a Winamp por crear buenos recuerdos.

    • Decir que en el verano de 1999 eran “completamente digitales” es un poco discutible. Yo tenía una grabadora DAT en 1993, y también un Walkman DAT.
  • Es una distorsión de la palabra “open”. Los términos de la licencia no permiten la redistribución ni la reventa, que suelen ser condiciones generalmente aceptadas del open source
    Hay que notar que ni en el título ni en el repositorio dice “open source”. No debieron decir “el código fuente ahora está abierto”, sino llamarlo source available

    • Esta licencia afirma ser una licencia copyleft, pero no puede ser copyleft si la licencia exige restricciones de distribución
      Ojalá eliminen la afirmación de que es una “licencia copyleft”, o relajen la restricción de distribución a algo como “si distribuyes una versión modificada de este programa, no puedes llamar Winamp a esa versión modificada”
  • Era el único reproductor de música que no era molesto. Hacía lo suyo con una interfaz simple, sin el desorden ni los gráficos toscos que sus competidores consideraban la respuesta correcta

    • ¿Que no tenía desorden ni gráficos toscos? ¿No era parte de la gracia de ese reproductor ponerle cualquier skin? ¿Estaré pensando en otra cosa?
    • Hoy mi “favorito” es Tidal. Esa gente ni siquiera puede crear una experiencia de reproducción estable, y la UI está llena de elementos y patrones hostiles al usuario, además de fallas
      Si yo estuviera contratando, alguien que venga de Tidal no tendría oportunidad
    • Exacto. Y ahora encontré algo mejor: cmus
      Desde que conocí a esta bestia, nunca volví a usar otra cosa
    • Si quieres un reproductor de música minimalista para Windows, puedes revisar Tray Player
  • Lo gracioso es que el commit más reciente es “Removing code which is not open”[0], lo que significa que al dejar ese código en el historial de Git están infringiendo los términos de licencia de alguien más
    [0] https://github.com/WinampDesktop/winamp/commit/0a4b7d32d0906...

    • Viendo https://github.com/WinampDesktop/winamp/issues/11, parece que sí es código de ellos, pero de otro servicio cuyo código fuente decidieron no publicar
    • ¡Ja! En la última hora o dos también han estado quitando rápidamente otras cosas. Por ejemplo, había varios archivos con encabezados como estos
      Copyright 2000-2002 Dolby Laboratories, Inc. All Rights
      Reserved. Do not copy. Do not distribute.
      Confidential information.
      (C) copyright Fraunhofer - IIS (1998)
      All Rights Reserved
  • Si quieres una copia gratis del software de servidor SHOUTcast, en este repositorio están compartiendo ilegalmente ese código