Mã nguồn trình phát Winamp legacy
(github.com/WinampDesktop)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
- 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
- Dùng tệp script
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
libvpxđược lấy từ https://github.com/ShiftMediaProject/libvpx, sau đó chỉnh sửa và đóng gói thành archive- Chạy
unpack_libvpx_v1.8.2_msvc16.cmdđể giải nén
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.cmdvàbuild_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.htừreturn ::DeleteFile((LPTSTR)lpFileName);thànhreturn 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
Nhìn qua vấn đề này thì thấy có khá nhiều tranh cãi về giấy phép.
Ý 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.
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.
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”.
GitHub chỉ dùng từ “fork” cả khi tạo một bản sao kho lưu trữ để đóng gó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.
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ý.
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.
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
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.
Đâ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ở”
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
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
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
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...
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ã đó
https://github.com/WinampDesktop/winamp/tree/3ab19235a69d96b...
Nguồn: https://en.wikipedia.org/wiki/Radionomy#List_of_properties_f...