2 points par GN⁺ 2024-09-25 | 2 commentaires | Partager sur WhatsApp

Winamp

Présentation

  • Winamp est un lecteur multimédia lancé en 1997, réputé pour sa compatibilité avec de nombreux formats audio et sa flexibilité
  • Développé par Nullsoft, il a connu une grande popularité auprès de millions d'utilisateurs
  • Son développement avait été interrompu pendant un temps, mais le code source est désormais publié, permettant à la communauté d'améliorer et de moderniser le lecteur

Utilisation

  • La compilation du client desktop Winamp repose actuellement sur Visual Studio 2019 (VS2019) et les bibliothèques Intel IPP
  • Il existe plusieurs façons de compiler Winamp
    1. Utiliser le script build_winampAll_2019.cmd pour compiler 4 versions x86/x64 (debug et release). Dans ce cas, l'IDE Visual Studio ne se lance pas
    2. Utiliser le fichier winampAll_2019.sln pour effectuer la compilation et le débogage dans l'IDE Visual Studio

Dépendances

  • Utiliser le script build_winampAll_2019.cmd pour compiler 4 versions x86/x64 (debug et release). Dans ce cas, l'IDE Visual Studio ne se lance pas
  • Utiliser le fichier winampAll_2019.sln pour effectuer la compilation et le débogage dans l'IDE Visual Studio
libvpx
libmpg123
  • libmpg123 est récupéré depuis https://www.mpg123.de/download.shtml, puis modifié et empaqueté sous forme d'archive
  • Exécuter unpack_libmpg123.cmd pour traiter les fichiers dll
OpenSSL
  • Il faut utiliser openssl-1.0.1u
  • Exécuter build_vs_2019_openssl_x86.cmd et build_vs_2019_openssl_64.cmd pour compiler la version statique des bibliothèques
  • Pour compiler OpenSSL, il faut installer 7-Zip, NASM et Perl
DirectX 9 SDK
  • Le DirectX 9 SDK (juin 2010) est récupéré depuis Microsoft, puis modifié et empaqueté sous forme d'archive
  • Exécuter unpack_microsoft_directx_sdk_2010.cmd pour le décompresser
Correctif de la bibliothèque Microsoft ATLMFC
  • Dans le fichier C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\VC\Tools\MSVC\14.24.28314\atlmfc\include\atltransactionmanager.h, modifier la ligne 427 de return ::DeleteFile((LPTSTR)lpFileName); en return DeleteFile((LPTSTR)lpFileName);
Intel IPP 6.1.1.035
  • Intel IPP 6.1.1.035 est récupéré, puis modifié et empaqueté sous forme d'archive
  • Exécuter unpack_intel_ipp_6.1.1.035.cmd pour le décompresser

Résumé de GN⁺

  • Winamp reste apprécié par de nombreux utilisateurs grâce à sa compatibilité avec divers formats audio
  • La publication du code source offre à la communauté l'occasion d'améliorer et de moderniser le lecteur
  • Il peut être compilé avec Visual Studio 2019 et plusieurs bibliothèques, en gérant diverses dépendances
  • Parmi les autres lecteurs multimédia offrant des fonctionnalités similaires à Winamp figurent VLC Media Player et foobar2000

2 commentaires

 
wedding 2024-09-25

À voir le problème, il semble y avoir beaucoup de discussions autour de la licence.

 
GN⁺ 2024-09-25
Avis sur Hacker News
  • Je me demande comment ils s’attendent à ce que les gens contribuent au projet. L’article 4 de la licence dit de soumettre les améliorations, ajouts de fonctionnalités et corrections de bugs au dépôt officiel, mais les restrictions de l’article 5 interdisent les forks du code ou la distribution de versions modifiées.
    Du coup, le flux standard de GitHub — « forker le dépôt, modifier dans une branche, envoyer une pull request » — devient lui-même une violation de la licence.

    • Il suffit d’ouvrir une issue et de taper le patch directement dans la description.
      En revanche, impossible de le tester ou de le déboguer. Ce serait créer une version modifiée du codebase, donc interdit. Il n’y a qu’à écrire directement, sans l’aide des pratiques habituelles, ce qui vous vient dans une sorte de délire fiévreux. Si c’est assez bon pour la licence, ça l’est sûrement aussi pour le code.
    • « Fork » a deux sens. L’un est le bouton “Fork” de GitHub, qui revient en réalité plutôt à dupliquer le dépôt sur son propre compte.
      L’autre signifie « forker un projet », c’est-à-dire développer et distribuer activement une lignée alternative sous un autre nom. Je pense que le flux de pull requests de GitHub reste acceptable. Ici, c’est dommage que GitHub ait choisi un nom qui entre en conflit avec le sens déjà établi de “fork”. En fait, cela aurait dû s’appeler “clone”.
    • Les conditions d’utilisation de GitHub indiquent que les utilisateurs ont le droit de forker tous les dépôts publics.
    • Le “fork” dont il est question ici semble être le sens large côté open source : créer sa propre version et l’emmener dans une autre direction, comme NeoVim a forké Vim.
      GitHub utilise simplement aussi le mot “fork” pour créer une copie de dépôt destinée à contribuer.
    • On dirait qu’ils s’attendent simplement à ce que les gens ignorent la licence.
      La plupart le feront, ils ne menaceront probablement pas les contributeurs avec des avocats, et le monde continuera de tourner.
  • Le mieux à faire maintenant pour l’avenir de ce projet, c’est de ne pas s’en mêler. Même le cloner dans un espace de travail personnel pour l’examiner ou le compiler est déjà une participation excessive au regard de leur position actuelle sur la licence.
    Si un post HN indique qu’ils ont changé de position sur la licence, j’irai revoir, mais d’ici là mieux vaut fermer cet onglet et l’oublier.

    • Justin Frankel, l’auteur original et aussi le créateur du DAW Reaper, une figure légendaire, a répondu ceci à ce sujet :
      Question : Le code source de WinAMP a été officiellement publié ; est-ce que tu as envie d’y bricoler de nouvelles fonctionnalités sympas ?
      Réponse : Même si j’en avais eu envie, les conditions de licence m’auraient refroidi, lol. La façon dont elles sont rédigées est complètement absurde. Par exemple, il est écrit qu’on ne peut pas « créer, maintenir ou distribuer une version forkée du logiciel ». Donc n’importe quelle modification pourrait être considérée comme « créer une version forkée ». Même en interprétant cela de façon un peu plus généreuse, comme ils l’ont probablement voulu, les conditions sont nulles. Je passe mon tour.
  • Il y a très longtemps, je traînais sur #mpeg3 sur EFNet, et je me souviens avoir connu Justin Frankel à l’époque où il travaillait là-dessus.
    Je lui avais fait quelques skins pour l’app et quelques icônes de zone de notification, dont certaines sont incluses ici. Je ne me souviens pas à 100 % lesquelles sont toutes de moi, mais punchlabel est clairement de moi. Mon nom figure aussi dans les crédits : https://github.com/WinampDesktop/winamp/blob/0695744fd658c42...

  • Ils vont probablement envoyer en masse des demandes DMCA à GitHub et finir par faire retirer leur propre dépôt de GitHub, ou bien le retirer eux-mêmes de GitHub au risque de perdre leurs droits d’auteur.
    Le fork est une fonctionnalité centrale de GitHub. Les règles de fork ne peuvent être configurées que pour les dépôts privés, or celui-ci est public. La licence n’autorise pas les forks, et il y en a déjà 6. En général, contrairement aux marques, on ne perd pas un copyright par application sélective, mais dans ce cas les ayants droit ont rendu la violation de licence très facile, et la liste des contrevenants leur est entièrement accessible. S’ils ne défendent pas activement leurs droits, ils risquent de se faire ridiculiser au tribunal. C’est aussi une situation que GitHub n’a probablement pas envie de gérer : une expérience utilisateur catastrophique où cliquer sur l’un des boutons les plus utilisés de la plateforme devient soudain un problème juridique.

    • Comme d’autres l’ont dit, GitHub a déjà couvert ce point dans ses conditions d’utilisation. Tous les dépôts publics sont forkables.
    • Il y a actuellement 410 forks.
  • J’ai un petit lien avec Winamp. J’avais créé à l’époque un plugin assez populaire.
    Ceci est le code source de Winamp 3, qui était une réécriture complète de Winamp 2 en C++. À mon avis, c’était excessivement complexe et surconçu. Le code original de Justin Frankel était en C.

    • Ce qui a été « fourni » est une version réduite du paquet de sources 5.666 transmis lors de la vente d’AOL à Radionomy, plus le résultat des itérations jusqu’à la version 5.9.2.
      C’est donc, pour ainsi dire, un sacré bazar mêlant des années de développement de 1.x → 2.x → 5.x et les contributions de nombreuses personnes au fil du temps. De grandes parties de Winamp3 y figurent aussi, mais celles-ci avaient déjà été correctement publiées en open source à l’époque d’AOL, contrairement à cette licence très restrictive. Cela dit, si ma mémoire d’il y a 11 ans est bonne, aucun dépôt Winamp3 dédié n’avait été fourni au moment de constituer la livraison du code.
      -dro
    • Le code original de Frankel existe-t-il quelque part ? Je me souviens qu’il avait dit autrefois préférer le C++ au C, mais qu’en pratique il l’écrivait comme du C avec des classes. Frankel est mon héros.
  • À l’été 1999, quand j’étais à la fac, notre maison était la première à utiliser des MP3 en soirée. La plupart des gens utilisaient des changeurs de CD, avec beaucoup de disques rayés et tachés, et la musique sautait sans arrêt.
    Nous, nous étions passés au tout numérique, et nous étions en avance sur notre temps. La fête avait lieu au sous-sol ; l’ordinateur était enfermé dans une chambre libre, avec les câbles et les enceintes tirés jusqu’à l’espace principal en bas. Winamp tournait en shuffle, ça n’a pas sauté une seule fois pendant des heures, et personne n’avait besoin de s’occuper de la musique. Merci à Winamp pour ces bons souvenirs.

    • Dire « tout numérique » à l’été 1999, c’est un peu fort. J’avais un enregistreur DAT en 1993, et aussi un Walkman DAT.
  • C’est une déformation du mot « open ». Les conditions de la licence n’autorisent ni la redistribution ni la revente, alors que c’est généralement une condition acceptée de l’open source
    Il faut noter que ni le titre ni le dépôt n’emploient l’expression « open source ». Ce n’est pas « le source est désormais ouvert », il aurait fallu parler de source available

    • Cette licence se présente elle-même comme une licence copyleft, mais s’il y a des restrictions de distribution imposées par la licence, elle ne peut pas être copyleft
      Il faudrait soit retirer l’affirmation « licence copyleft », soit assouplir la restriction de distribution en quelque chose comme : « si vous distribuez une version modifiée de ce programme, vous ne devez pas l’appeler Winamp »
  • C’était le seul lecteur de musique qui n’était pas agaçant. Sans le fatras ni les graphismes grossiers que ses concurrents semblaient considérer comme la bonne réponse, il faisait simplement son boulot avec une interface épurée

    • Sans fatras ni graphismes grossiers ? L’un des plaisirs de ce lecteur, ce n’était pas justement d’essayer n’importe quel skin dessus ? Je pense peut-être à autre chose ?
    • Aujourd’hui, mon « chouchou », c’est Tidal. Ils n’arrivent même pas à fournir une expérience de lecture stable, et leur UI est remplie d’éléments et de comportements hostiles à l’utilisateur, ainsi que de dysfonctionnements
      Si j’étais recruteur, quelqu’un venant de Tidal n’aurait aucune chance
    • Exact. Et maintenant, j’ai trouvé mieux : cmus
      Depuis que j’ai rencontré ce monstre, je ne suis jamais revenu à autre chose
    • Si vous voulez un lecteur de musique minimaliste pour Windows, jetez un œil à Tray Player
  • Le plus drôle, c’est que le dernier commit s’intitule « Removing code which is not open »[0], ce qui signifie qu’en conservant ce code dans l’historique Git, ils enfreignent les conditions de licence de quelqu’un d’autre
    [0] https://github.com/WinampDesktop/winamp/commit/0a4b7d32d0906...

    • D’après https://github.com/WinampDesktop/winamp/issues/11, il s’agirait bien de leur code, mais de code lié à un autre service dont ils ont choisi de ne pas publier les sources
    • Ha ! Depuis une ou deux heures, ils retirent aussi rapidement d’autres choses. Par exemple, il y avait plusieurs fichiers avec ce type d’en-tête
      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 vous voulez une copie gratuite du logiciel serveur SHOUTcast, ce dépôt en partage le code illégalement