2 điểm bởi GN⁺ 2024-09-25 | 2 bình luận | Chia sẻ qua WhatsApp

Winamp

Giới thiệu

  • Winamp là một trình phát đa phương tiện ra mắt vào năm 1997, nổi tiếng nhờ khả năng tương thích với nhiều định dạng âm thanh và tính linh hoạt
  • Được phát triển bởi Nullsoft và từng rất phổ biến với hàng triệu người dùng
  • Việc phát triển đã từng bị gián đoạn trong một thời gian, nhưng nay mã nguồn đã được công khai để cộng đồng có thể cải tiến và hiện đại hóa trình phát

Cách sử dụng

  • Bản build client desktop của Winamp hiện dựa trên Visual Studio 2019 (VS2019) và thư viện Intel IPP
  • Có nhiều cách để build Winamp
    1. Dùng tệp script build_winampAll_2019.cmd để build 4 phiên bản x86/x64 (debug và release). Trong trường hợp này, Visual Studio IDE sẽ không được chạy
    2. Dùng tệp winampAll_2019.sln để build và debug trong Visual Studio IDE

Phụ thuộc

  • Dùng tệp script build_winampAll_2019.cmd để build 4 phiên bản x86/x64 (debug và release). Trong trường hợp này, Visual Studio IDE sẽ không được chạy
  • Dùng tệp winampAll_2019.sln để build và debug trong Visual Studio IDE
libvpx
libmpg123
  • libmpg123 được lấy từ https://www.mpg123.de/download.shtml, sau đó chỉnh sửa và đóng gói thành archive
  • Chạy unpack_libmpg123.cmd để xử lý các tệp dll
OpenSSL
  • Cần sử dụng openssl-1.0.1u
  • Chạy build_vs_2019_openssl_x86.cmdbuild_vs_2019_openssl_64.cmd để build phiên bản thư viện tĩnh
  • Để build OpenSSL, cần cài đặt 7-Zip, NASM và Perl
DirectX 9 SDK
  • DirectX 9 SDK (tháng 6 năm 2010) được lấy từ Microsoft, sau đó chỉnh sửa và đóng gói thành archive
  • Chạy unpack_microsoft_directx_sdk_2010.cmd để giải nén
Sửa lib Microsoft ATLMFC
  • Thay đổi dòng 427 của tệp C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\VC\Tools\MSVC\14.24.28314\atlmfc\include\atltransactionmanager.h từ return ::DeleteFile((LPTSTR)lpFileName); thành return DeleteFile((LPTSTR)lpFileName);
Intel IPP 6.1.1.035
  • Intel IPP 6.1.1.035 được lấy về, chỉnh sửa và đóng gói thành archive
  • Chạy unpack_intel_ipp_6.1.1.035.cmd để giải nén

Tóm tắt của GN⁺

  • Winamp vẫn được nhiều người dùng yêu thích nhờ khả năng tương thích với nhiều định dạng âm thanh
  • Mã nguồn được công khai, tạo cơ hội để cộng đồng cải tiến và hiện đại hóa trình phát
  • Có thể build bằng Visual Studio 2019 cùng nhiều thư viện khác nhau, đồng thời cần xử lý nhiều phụ thuộc
  • Các trình phát đa phương tiện khác có chức năng tương tự Winamp gồm có VLC Media Player và foobar2000

2 bình luận

 
wedding 2024-09-25

Nhìn qua vấn đề này thì thấy có khá nhiều tranh cãi về giấy phép.

 
GN⁺ 2024-09-25
Ý kiến trên Hacker News
  • Tôi tò mò họ kỳ vọng mọi người đóng góp cho dự án như thế nào. Điều 4 của giấy phép nói hãy gửi các cải tiến, tính năng bổ sung và bản sửa lỗi lên kho lưu trữ chính thức, nhưng hạn chế ở Điều 5 lại cấm fork mã nguồn hoặc phân phối bản đã sửa đổi.
    Như vậy, chính luồng tiêu chuẩn của GitHub — “fork kho lưu trữ, sửa trên một nhánh, rồi gửi pull request” — sẽ trở thành vi phạm giấy phép.

    • Chỉ cần mở issue rồi gõ trực tiếp bản vá vào phần mô tả là được.
      Tuy nhiên không thể kiểm thử hay debug bản vá. Vì làm vậy là tạo ra một bản sửa đổi của codebase, mà điều đó bị cấm. Cứ viết thẳng những gì nảy ra từ một cơn tưởng tượng mê sảng, không cần sự trợ giúp của thông lệ. Nếu giấy phép thấy đủ thì chắc mã nguồn cũng đủ thôi.
    • “Fork” có hai nghĩa. Một là nút “Fork” của GitHub, thực chất gần với việc sao chép kho lưu trữ sang tài khoản của mình.
      Nghĩa còn lại là “fork một dự án”, tức tích cực phát triển và phân phối một nhánh thay thế dưới một tên riêng. Tôi nghĩ luồng pull request của GitHub vẫn dùng được. Ở đây đáng tiếc là GitHub đã đặt một cái tên lệch với nghĩa “fork” vốn đã tồn tại. Thực ra lẽ ra nên là “clone”.
    • Điều khoản sử dụng của GitHub nói rằng người dùng có quyền fork mọi kho lưu trữ công khai.
    • Có vẻ “fork” được nói ở đây là theo nghĩa rộng trong giới nguồn mở, tức tạo phiên bản của riêng mình và đưa nó đi theo hướng khác, như NeoVim fork từ Vim.
      GitHub chỉ dùng từ “fork” cả khi tạo một bản sao kho lưu trữ để đóng góp.
    • Có vẻ họ chỉ kỳ vọng mọi người phớt lờ giấy phép.
      Phần lớn sẽ làm vậy, họ cũng sẽ không dí luật sư vào mặt người đóng góp, và thế giới vẫn tiếp tục vận hành.
  • Điều tốt nhất có thể làm lúc này cho tương lai của dự án này là không dính vào. Ngay cả việc sao chép về workspace cá nhân để xem xét hay biên dịch cũng đã là mức tham gia quá nhiều so với thái độ cấp phép hiện tại.
    Nếu có bài HN nói rằng họ đã đổi lập trường về giấy phép thì tôi sẽ xem lại, còn trước lúc đó tốt hơn là đóng tab này và quên nó đi.

    • Justin Frankel, tác giả gốc và cũng là nhân vật huyền thoại đã tạo ra Reaper DAW, đã trả lời về chuyện này như sau:
      Hỏi: Mã nguồn WinAMP đã được công bố chính thức, anh có muốn hack thêm vài tính năng mới hay ho vào không?
      Đáp: Dù có từng muốn thì các điều khoản giấy phép cũng đã làm tôi hết muốn rồi, lol. Cách các điều khoản được viết hoàn toàn vô lý. Ví dụ, nó nói “không được tạo, duy trì hoặc phân phối phiên bản fork của phần mềm”. Như vậy bất kỳ thay đổi nào cũng có thể bị xem là “tạo phiên bản fork”. Ngay cả nếu diễn giải rộng rãi hơn một chút theo đúng ý định, các điều khoản vẫn rất tệ. Tôi xin kiếu.
  • Tôi nhớ từ rất lâu trước đây, khi còn chơi ở #mpeg3 trên EFNet, tôi đã biết Justin Frankel vào thời anh ấy đang làm thứ này.
    Tôi đã làm vài skin và một số biểu tượng khay cho ứng dụng, và một phần trong số đó có ở đây. Tôi không nhớ chắc 100% cái nào đều là của mình, nhưng punchlabel chắc chắn là của tôi. Tên tôi cũng có trong phần ghi công: https://github.com/WinampDesktop/winamp/blob/0695744fd658c42...

  • Có vẻ họ sẽ gửi hàng loạt yêu cầu DMCA lên GitHub rồi khiến kho của chính mình bị GitHub gỡ xuống, hoặc tự gỡ khỏi GitHub trong lúc đối mặt với nguy cơ mất bản quyền.
    Fork là một tính năng cốt lõi của GitHub. Chính sách fork chỉ có thể cấu hình cho kho riêng tư, còn đây là kho công khai. Giấy phép không cho phép fork, và đã có 6 fork rồi. Thông thường, khác với nhãn hiệu, bản quyền không bị mất do thực thi có chọn lọc, nhưng trong trường hợp này chủ sở hữu quyền đã khiến việc vi phạm giấy phép trở nên cực kỳ dễ dàng, và họ cũng có toàn quyền truy cập vào danh sách người vi phạm. Nếu không chủ động bảo vệ quyền của mình, có lẽ họ sẽ bị tòa cười vào mặt. Với GitHub đây cũng là tình huống họ không muốn xử lý. Vì đó là một trải nghiệm người dùng tệ hại: bấm vào một trong những nút được nhấn nhiều nhất trên nền tảng, rồi đột nhiên vướng rắc rối pháp lý.

    • Như những người khác đã nói, GitHub đã che phần đó bằng điều khoản sử dụng rồi. Mọi kho lưu trữ công khai đều có thể fork.
    • Hiện có 410 fork.
  • Tôi có chút duyên với Winamp. Trước đây tôi từng làm một plugin khá phổ biến.
    Đây là mã nguồn của Winamp 3, phiên bản viết lại hoàn toàn Winamp 2 bằng C++. Theo tôi nó quá phức tạp và bị thiết kế quá mức. Mã nguồn ban đầu của Justin Frankel là C.

    • Thứ “được cung cấp” là một bản rút gọn của gói mã nguồn 5.666 được chuyển giao khi AOL bán cho Radionomy, cộng với kết quả của các vòng lặp phát triển sau đó cho tới bản phát hành 5.9.2.
      Vì vậy nó là một mớ hỗn độn, có thể nói là sự pha trộn giữa nhiều năm phát triển từ 1.x → 2.x → 5.x và kết quả do nhiều người động vào trong thời gian đó. Một phần lớn của Winamp3 cũng nằm trong đó, phần này dưới thời AOL đã từng được công bố đúng nghĩa là nguồn mở. Khác với giấy phép bị hạn chế nghiêm ngặt như lần này. Tuy nhiên, theo tôi nhớ thì khi tạo gói bàn giao mã nguồn, chưa từng có kho Winamp3 riêng nào được cung cấp. Nếu ký ức 11 năm trước của tôi đúng thì là vậy.
      -dro
    • Mã gốc của Frankel có ở đâu đó không? Tôi nhớ trước đây anh ấy từng nói mình thích C++ hơn C, nhưng thực tế lại viết như C có class. Frankel là người hùng của tôi.
  • Hồi mùa hè năm 1999, thời đại học, nhà chúng tôi là nhà đầu tiên dùng MP3 trong các bữa tiệc. Hầu hết mọi người dùng đầu đổi CD, mà nhiều đĩa bị xước và bẩn nên nhạc cứ bị nhảy.
    Chúng tôi chuyển sang hoàn toàn kỹ thuật số và đi trước thời đại. Tiệc tổ chức ở tầng hầm; máy tính được khóa trong một phòng ngủ trống, rồi kéo dây và loa xuống khu chính dưới tầng hầm. Chúng tôi bật Winamp ở chế độ shuffle, vài tiếng liền không nhảy một lần nào và cũng không cần ai trông nhạc. Cảm ơn Winamp vì những kỷ niệm đẹp.

    • Nói “hoàn toàn kỹ thuật số” vào mùa hè 1999 thì hơi kỳ. Tôi đã có máy ghi DAT từ năm 1993, và cả DAT Walkman nữa.
  • Đây là cách bóp méo từ “open”. Điều khoản giấy phép không cho phép tái phân phối hay bán lại, trong khi đó thường là điều kiện được chấp nhận của mã nguồn mở
    Cần lưu ý rằng không có chỗ nào trong tiêu đề hay kho lưu trữ viết “open source”. Lẽ ra nên gọi là source available, chứ không phải “mã nguồn giờ đã được mở”

    • Giấy phép này tự nhận là giấy phép copyleft, nhưng nếu giấy phép yêu cầu hạn chế phân phối thì không thể là copyleft
      Mong họ bỏ tuyên bố “giấy phép copyleft”, hoặc nới lỏng hạn chế phân phối thành kiểu “nếu phân phối bản sửa đổi của chương trình này thì không được gọi bản sửa đổi đó là Winamp”
  • Đó là trình phát nhạc duy nhất không gây khó chịu. Không có mớ linh tinh và đồ họa thô kệch mà các đối thủ xem là đáp án đúng; nó chỉ làm đúng việc của mình với giao diện gọn gàng

    • Không có mớ linh tinh và đồ họa thô kệch à? Chẳng phải một trong những thú vui của trình phát đó là thử khoác đủ loại skin lên nó sao? Hay là tôi đang nghĩ đến thứ khác?
    • “Chân ái” hiện nay của tôi là Tidal. Họ thậm chí không tạo nổi trải nghiệm phát ổn định, còn UI thì đầy những yếu tố và cách làm thù địch với người dùng, cùng các lỗi hoạt động
      Nếu tôi là người tuyển dụng, ứng viên từng làm ở Tidal sẽ không có cơ hội
    • Đúng vậy. Và giờ tôi đã tìm được thứ tốt hơn: cmus
      Từ khi gặp con quái vật này, tôi chưa từng quay lại dùng thứ khác
    • Nếu muốn một trình phát nhạc tối giản cho Windows thì hãy thử xem Tray Player
  • Buồn cười là commit mới nhất là “Removing code which is not open”[0], nghĩa là bằng việc để đoạn mã đó trong lịch sử Git, họ đang vi phạm điều khoản giấy phép của người khác
    [0] https://github.com/WinampDesktop/winamp/commit/0a4b7d32d0906...

    • Xem https://github.com/WinampDesktop/winamp/issues/11 thì có vẻ đó đúng là mã của họ, nhưng là mã thuộc một dịch vụ khác mà họ đã quyết định không công khai nguồn
    • Ha! Trong một hai giờ qua họ cũng đang nhanh chóng gỡ thêm nhiều thứ khác. Ví dụ có nhiều tệp mang các header như thế này
      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
  • Nếu muốn một bản miễn phí của phần mềm máy chủ SHOUTcast, kho này đang chia sẻ trái phép mã đó