2 ポイント 投稿者 GN⁺ 2024-09-25 | 2件のコメント | WhatsAppで共有

Winamp

紹介

  • Winampは1997年にリリースされたマルチメディアプレーヤーで、さまざまなオーディオフォーマットとの互換性と柔軟性で知られている
  • Nullsoftが開発し、数百万人のユーザーの間で高い人気を集めた
  • 開発はしばらく中断されていたが、現在はソースコードが公開され、コミュニティがプレーヤーを改善・モダナイズできるようになった

使用方法

  • Winampデスクトップクライアントのビルドは現在、Visual Studio 2019 (VS2019) と Intel IPP ライブラリをベースとしている
  • Winampをビルドする方法はいくつかある
    1. build_winampAll_2019.cmd スクリプトファイルを使って x86/x64(デバッグおよびリリース)の4バージョンをビルドする。この場合、Visual Studio IDEは起動しない
    2. winampAll_2019.sln ファイルを使って Visual Studio IDE でビルドおよびデバッグを行う

依存関係

  • build_winampAll_2019.cmd スクリプトファイルを使って x86/x64(デバッグおよびリリース)の4バージョンをビルドする。この場合、Visual Studio IDEは起動しない
  • winampAll_2019.sln ファイルを使って Visual Studio IDE でビルドおよびデバッグを行う
libvpx
libmpg123
  • libmpg123https://www.mpg123.de/download.shtml から取得し、修正後にアーカイブとしてパッケージしている
  • unpack_libmpg123.cmd を実行して dll ファイルを処理する
OpenSSL
  • openssl-1.0.1u を使用する必要がある
  • 静的版ライブラリをビルドするために build_vs_2019_openssl_x86.cmdbuild_vs_2019_openssl_64.cmd を実行する
  • OpenSSLをビルドするには、7-Zip、NASM、Perlをインストールする必要がある
DirectX 9 SDK
  • DirectX 9 SDK(2010年6月)をMicrosoftから取得し、修正後にアーカイブとしてパッケージしている
  • unpack_microsoft_directx_sdk_2010.cmd を実行して展開する
Microsoft ATLMFC lib の修正
  • C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\VC\Tools\MSVC\14.24.28314\atlmfc\include\atltransactionmanager.h ファイルの427行目を return ::DeleteFile((LPTSTR)lpFileName); から return DeleteFile((LPTSTR)lpFileName); に変更する
Intel IPP 6.1.1.035
  • Intel IPP 6.1.1.035 を取得し、修正後にアーカイブとしてパッケージしている
  • unpack_intel_ipp_6.1.1.035.cmd を実行して展開する

GN⁺の要約

  • Winampは、さまざまなオーディオフォーマットとの互換性により、今なお多くのユーザーに愛されている
  • ソースコードが公開され、コミュニティがプレーヤーを改善・モダナイズできる機会が提供された
  • Visual Studio 2019と複数のライブラリを使ってビルドでき、さまざまな依存関係に対応する必要がある
  • Winampと似た機能を提供する他のマルチメディアプレーヤーには、VLC Media Playerやfoobar2000がある

2件のコメント

 
wedding 2024-09-25

ライセンスのことでかなり議論になっているようですね

 
GN⁺ 2024-09-25
Hacker Newsのコメント
  • このプロジェクトで人々にどう貢献してほしいと考えているのか気になる。ライセンス第4条では、改善、機能追加、バグ修正を公式リポジトリに提出するよう求めているが、第5条の制限ではコードのフォークや改変版の配布を禁じている
    だとすると、GitHubの標準的なやり方である「リポジトリをフォークし、ブランチで修正し、プルリクエストを送る」という流れ自体がライセンス違反になる

    • issueを開いて説明欄にパッチを直接打ち込めばよい
      ただし、そのパッチをテストしたりデバッグしたりはできない。それはコードベースの改変版を作ることになり、禁止されているからだ。ただ妄想じみた熱病の中から出てきた内容を、慣行の助けなしにそのまま書けばいい。ライセンスに十分なら、コードにも十分だろう
    • フォークには2つの意味がある。1つはGitHubの「Fork」ボタンで、実際にはリポジトリを自分のアカウントに複製することに近い
      もう1つは「プロジェクトをフォークする」という意味で、別名のもとで代替系統を積極的に開発・配布することだ。GitHubのプルリクエストの流れを使うのは問題ないと思う。ここでは、GitHubがすでに定着した「fork」の意味とずれる名前を付けたのが残念だ。本当は「clone」であるべきだった
    • GitHubの利用規約には、ユーザーはすべての公開リポジトリをフォークする権利があると書かれている
    • ここでいう「fork」は、オープンソース界隈での広い意味、つまりNeoVimがVimをフォークしたように、自分の版を作って別方向へ持っていくことを指しているようだ
      GitHubは、貢献用のリポジトリのコピーを作る場合にも「fork」という言葉を使っているだけだ
    • 単に人々がライセンスを無視することを期待しているだけのように見える
      たいていはそうするだろうし、貢献者に弁護士を差し向けることもないだろうし、世の中はそのまま回り続けるだろう
  • このプロジェクトの将来のために今できる最善のことは、関わらないことだ。レビューしたりコンパイルしたりしようとして個人の作業環境に複製することさえ、現在のライセンス姿勢からすれば関与しすぎている
    ライセンス方針を変えたというHN投稿が出たらまた確認するが、それまではこのタブを閉じて忘れるのがよさそうだ

    • 原作者のJustin FrankelはReaper DAWも作った伝説的な人物だが、この件についてこう答えている
      質問: WinAMPのソースが公式に公開されたが、新しくてクールな機能をハックして入れたい気持ちはあるか?
      回答: そういう気持ちがあったとしても、ライセンス条件のせいで消えただろうね、lol。条件の書き方が完全にばかげている。たとえば「ソフトウェアのフォーク版を作成、維持、配布してはならない」とある。だとすると、どんな変更でも「フォーク版を作ること」と見なされうる。意図どおりにもう少し寛大に解釈したとしても、条件はひどい。遠慮しておく
  • ずっと昔、EFNetの#mpeg3でたむろしていたころに、Justin Frankelがこれを作業していた時期に知り合ったのを覚えている
    アプリ用のスキンとトレイアイコンをいくつか作ってあげて、その一部がここに入っている。どれが全部自分のものか100%は思い出せないが、punchlabelは確実に自分のものだ。クレジットにも自分の名前がある: https://github.com/WinampDesktop/winamp/blob/0695744fd658c42...

  • 彼らはGitHubに大量のDMCA申請を送り始めて、自分たちのリポジトリがGitHubから落とされることになるか、あるいは著作権を失うリスクを負って自らGitHubから下ろすことになる気がする
    フォークはGitHubの中核機能だ。フォークポリシーを設定できるのは非公開リポジトリだけで、これは公開リポジトリだ。ライセンスはフォークを許可していないのに、すでにフォークが6個ある。通常、著作権は商標権と違って選択的な執行で失われることはないが、この件では権利者がライセンス違反を極めて簡単に発生させており、違反者の一覧にも完全にアクセスできる。権利を積極的に防衛しなければ、法廷で笑いものになりそうだ。GitHubとしても扱いたくない状況だろう。プラットフォームで最も多く押されるボタンの1つをクリックしただけで、いきなり法的問題になるというひどいユーザー体験だからだ

    • 他の人も言っているように、GitHubはすでに利用規約でその部分をカバーしている。すべての公開リポジトリはフォーク可能
    • 現在410フォークある
  • Winampとは少し縁がある。以前かなり人気のあるプラグインを作っていた
    これはWinamp 3のソースコードで、Winamp 2をC++で完全に書き直した版だ。私の考えでは、複雑すぎて過剰設計だ。Justin Frankelの元のソースコードはCだった

    • 「提供された」ものは、AOLからRadionomyに売却された際に渡された5.666のソース一式の縮小版と、その後の5.9.2リリースまでの反復作業の成果物だ
      そのため、1.x → 2.x → 5.xの開発過程にわたる何年分もの内容と、その間に複数の人が手を入れた結果が入り混じった、言ってみればカオスになっている。Winamp3の大きな部分も含まれているが、それはAOL時代にすでにきちんとオープンソースとして公開されていた部分だ。今回のような極端に制限的なライセンスとは違う。ただし、コードの引き渡し物を作る際に専用のWinamp3リポジトリが提供されたことはなかったと記憶している。11年前の記憶が正しければ、という話だ
      -dro
    • Frankelの元のコードはどこかにあるのか? 彼は以前、C++をCより好むが、実際にはクラス付きCのように使っていると言っていた記憶がある。Frankelは私のヒーローだ
  • 1999年の夏、大学時代、うちの家はパーティーでMP3を使った最初の家だった。ほとんどはCDチェンジャーを使っていて、傷や汚れのあるディスクが多く、音楽がずっと飛んでいた
    私たちは完全デジタルに移行していて、時代を先取りしていた。パーティーは地下室で開き、コンピューターは空いている寝室に閉じ込めて、ケーブルとスピーカーを地下のメインスペースまで引っ張った。Winampをシャッフルで回し、何時間も一度も音飛びせず、誰かが音楽の面倒を見る必要もなかった。良い思い出を作ってくれたWinampに感謝

    • 1999年夏に「完全デジタル」だったというのはちょっと違うな。私は1993年にDATレコーダーを持っていたし、DATウォークマンも持っていた
  • 「open」という語をねじ曲げたものだ。ライセンス条件は再配布や再販売を認めておらず、これは一般に受け入れられているオープンソースの条件に反する
    タイトルやリポジトリのどこにも「open source」と書いていない点に注目すべきだ。「ソースが今や開かれた」のではなく、source availableと呼ぶべきだった

    • このライセンスは自らをコピーレフトライセンスだと主張しているが、ライセンスが配布制限を課しているならコピーレフトではありえない
      「コピーレフトライセンス」という主張を取り下げるか、配布制限を「このプログラムの改変版を配布する場合、その改変版をWinampと呼んではならない」程度に緩和してほしい
  • 腹の立たない唯一の音楽プレーヤーだった。競合製品が正解だと思い込んでいたガラクタや無骨なグラフィック抜きで、簡潔なインターフェースで自分の仕事だけをしていた

    • ガラクタや無骨なグラフィックがなかったって? あのプレーヤーの楽しさの一つは、どんなスキンでも着せてみることじゃなかったか? 別のものを思い浮かべているのか?
    • 最近の自分の「最推し」はTidalだ。あそこは安定した再生体験すら作れず、UIもユーザーに敵対的な要素や作法、不具合だらけだ
      もし自分が採用する立場なら、Tidal出身者にチャンスはないだろう
    • その通り。そして今はもっと良いものを見つけた: cmus
      この怪物に出会ってから、ほかへ戻ったことはない
    • Windows向けのミニマルな音楽プレーヤーが欲しいなら、Tray Playerを見てみるといい
  • 面白いのは、最新コミットが「Removing code which is not open」[0]なのに、それはそのコードをGitの履歴に残すことで別の誰かのライセンス条件を侵害しているという意味だ
    [0] https://github.com/WinampDesktop/winamp/commit/0a4b7d32d0906...

    • https://github.com/WinampDesktop/winamp/issues/11を見ると、自分たちのコードではあるが、ソースを公開しないことにしていた別サービス側のコードらしい
    • はは! この1〜2時間のあいだに、ほかのものも急いで削っている。たとえば、こんなヘッダーが付いたファイルがいくつもあった
      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
  • SHOUTcastサーバーソフトウェアの無料コピーが欲しいなら、このリポジトリでそのコードを違法共有している