Tiêu chuẩn kép của Unity về mã nguồn mở: chặn VLC
(mfkl.github.io)- VLC for Unity là một tích hợp mã nguồn mở kết nối game engine Unity với engine đa phương tiện VLC; từ tháng 12/2019, các binary theo từng nền tảng đã được phân phối trên Unity Store
- Vào cuối mùa hè năm 2023, sau email từ Unity, tài khoản publisher lập tức bị chặn; dù đã trao đổi trong nhiều tháng và đề xuất loại bỏ mã LGPL, việc quay lại Store vẫn bị ngăn cản
- Trên Unity Store vẫn còn nhiều asset chứa phụ thuộc LGPL như FFmpeg, và bản thân Unity Editor cùng runtime cũng sử dụng các thư viện LGPL như Lame, libiconv, libwebsockets, websockify.js
- Sau khi asset bị gỡ, khách hàng hỏi về bảo trì và cập nhật build, nên Videolabs đã mở Videolabs Store trên website riêng để bắt đầu bán binary mà không cần Unity Store
- Ngoài binary của plugin VLC Unity, Videolabs Store còn bao gồm hệ thống hỗ trợ thương mại cho LibVLC·FFmpeg, giấy phép LibVLCSharp, ebook LibVLC, Kyber và các sản phẩm tích hợp Unreal dự kiến ra mắt
VLC for Unity bị chặn khỏi Unity Store
- VLC for Unity là một tích hợp dạng cầu nối cho phép tạo trình phát media dùng engine VLC trong các game dựa trên Unity
- Unity có tính di động cao thông qua Mono, còn LibVLC cũng tự có tính di động cao, nên tích hợp này hướng tới việc sử dụng đa nền tảng
- Từ tháng 12/2019, các binary của tích hợp mã nguồn mở VLC for Unity đã được phân phối trên Unity Store, với 3 nền tảng mục tiêu
- Windows
- UWP
- Android
- Cuối mùa hè năm 2023, sau khi Unity gửi email, tài khoản publisher lập tức bị chặn
- Sau đó, hai bên đã tìm điểm thỏa hiệp qua email trong nhiều tháng, thậm chí đề xuất loại bỏ mã LGPL khỏi asset, nhưng Unity vẫn không cho phép quay lại Store
- Họ nhận được phản hồi rằng ngay cả khi loại bỏ toàn bộ mã LGPL khỏi gói Unity, cũng không thể quay lại
- Trên Unity Store hiện vẫn có từ hàng trăm đến hàng nghìn asset chứa phụ thuộc LGPL như FFmpeg
- Bản thân Unity cũng sử dụng các phụ thuộc LGPL trong Editor và runtime, điều này cũng ảnh hưởng đến các game được phân phối bằng Unity
- Các thư viện ví dụ được liệt kê gồm Lame, libiconv, libwebsockets, websockify.js
- Danh sách đầy đủ các phụ thuộc mã nguồn mở của Unity có thể xem trong danh sách riêng
- Xung đột cốt lõi nằm ở tiêu chuẩn kép: Unity sử dụng các thư viện mã nguồn mở LGPL, nhưng lại không cho phép publisher trên Unity Store và người dùng phân phối dựa trên LGPL
Videolabs Store và hỗ trợ thương mại
- Sau khi asset VLC for Unity bị gỡ, khách hàng hiện tại và khách hàng mới đã hỏi về việc có tiếp tục bảo trì hay không và cách nhận cập nhật build
- Vì nhiều công ty đang sử dụng các công nghệ liên quan như LibVLC SDK và FFmpeg, Videolabs quyết định mở Videolabs Store riêng
- Khách hàng hiện tại và khách hàng mới có thể mua binary của plugin VLC Unity mã nguồn mở mà không cần Unity Store
- Vì VLC for Unity là mã nguồn mở, người dùng cũng có thể tự build
- Videolabs Store trở thành kênh để thiết lập rõ ràng cấu trúc cung cấp sản phẩm và dịch vụ cho LibVLC và FFmpeg
- Một số người dùng yêu cầu khắc phục sự cố hoặc tính năng mới, nhưng chỉ dựa vào cộng đồng và thời gian hạn chế của một số ít tình nguyện viên thì khó đáp ứng đầy đủ
- Đội ngũ Videolabs gồm các chuyên gia VLC và FFmpeg, xử lý nhiều giao thức, định dạng và nền tảng
- Các gói tư vấn đa phương tiện được cung cấp theo mức 3 giờ, 10 giờ, 24 giờ, có thể mua dưới dạng dịch vụ một lần hoặc đăng ký hằng tháng
- Phạm vi hỗ trợ bao gồm build tùy chỉnh, sửa lỗi, tích hợp SDK, hỏi đáp cho các yêu cầu cụ thể
- Có thể hỗ trợ bất kể nền tảng hệ điều hành hay toolkit
- Store cũng bao gồm giấy phép thương mại LibVLCSharp và LibVLC ebook
- Các sản phẩm dự kiến gồm Kyber, SDK streaming và điều khiển từ xa cho game/desktop với độ trễ cực thấp, cùng các tích hợp game engine bổ sung như Unreal
4 bình luận
Công ty đến cả engine còn làm không ra hồn mà trò vớ vẩn gì cũng bày ra đủ cả nhỉ haha
Có lẽ đây là một suy nghĩ mơ hồ và cực đoan, nhưng mỗi khi có một vấn đề khó hiểu nảy sinh trong ngành công nghệ, tôi lại thấy gần như đều là do đám mặc vest gây ra.
Unity lại nữa...
Họ đã từng đẩy mọi chuyện đến sát bờ vực công ty sụp đổ vì vấn đề cấp phép, vậy mà giờ lại tiếp tục làm người ta bực mình haha
Ý kiến trên Hacker News
Có vẻ rõ ràng là đội pháp lý đã nhận thông tin sai rồi đưa vào hợp đồng
Như bài viết nói, khá nhiều asset Unity dùng phụ thuộc LGPL, bản thân Unity cũng dùng asset LGPL, và các game phát hành được làm bằng Unity cũng có asset LGPL
Nhiều khả năng ý định ban đầu chỉ là lọc ra các phụ thuộc GPL
GPL và LGPL có khác biệt lớn: LGPL là giấy phép được thiết kế để, nếu đáp ứng một số điều kiện nhất định, cho phép ứng dụng độc quyền liên kết với thư viện mã nguồn mở mà không yêu cầu công khai mã nguồn của ứng dụng
Ngược lại, GPL có yêu cầu nghiêm ngặt hơn: toàn bộ tác phẩm phái sinh có chứa mã GPL phải được phân phối theo GPL và cũng phải công khai mã nguồn
Ví dụ, tôi từng nghĩ rằng các ứng dụng chỉ được phân phối qua store của những nền tảng bắt buộc phải ký sẽ không thể chứa thành phần LGPL, vì người dùng không thể sửa đổi các thành phần LGPL
Ngay cả khi gác các chi tiết pháp lý sang một bên, LGPL linh hoạt hơn GPL nhưng vẫn khá hạn chế, nên phần mềm độc quyền cần giữ mọi thứ đơn giản hoặc tham vấn luật sư chuyên môn liên quan để kiểm tra cẩn thận tính tuân thủ
Ở khía cạnh đó, việc Unity cấm phần mềm LGPL là điều có thể hiểu được. Không phải là họ không thể làm đúng, mà là vì việc Unity hoặc nhà cung cấp lần nào cũng rà soát pháp lý tất cả asset được đưa lên store là không thực tế
Thật lạ là đến năm 2025, ngay cả trên HN dường như cũng không ai biết chắc ý nghĩa cụ thể hay yêu cầu triển khai của LGPL
Nếu tình trạng phức tạp, rối rắm và phụ thuộc vào diễn giải đến vậy, rõ ràng vẫn còn chỗ để tạo ra một hệ thống giấy phép mới tốt hơn mà mọi người thực sự có thể hiểu
Các giấy phép như MIT thì hầu hết mọi người hiểu tương đối rõ, nhưng lý tưởng là nhiều giấy phép thuộc họ GPL và các giấy phép tùy chỉnh phức tạp hơn nên được thay thế bằng thứ gì đó tốt hơn
Điều quan trọng ở đây là Unity Asset Store cho phép những gì
Unity không có nghĩa vụ phải cho phép mọi thứ có thể liên kết vào game Unity xuất hiện trên store, và có vẻ hợp đồng nhà cung cấp khi đó chỉ đơn giản nói rằng không được bán asset LGPL trên store
Việc store đặt thêm yêu cầu không phải điều đáng ngạc nhiên hay bất công, và với tư cách nhà phân phối nội dung bên thứ ba, họ cũng có lý do để giảm rủi ro
Ngoài ra, asset trên Unity Asset Store cũng không nhất thiết chỉ được dùng với Unity; một số asset có thể dùng với engine khác tùy theo giấy phép: https://support.unity.com/hc/en-us/articles/34387186019988-C...
Tuy nhiên, việc tiếp tục phân phối các asset khác có thành phần LGPL trong khi không áp dụng đồng đều quy tắc LGPL mới là vấn đề lớn hơn
Về cơ bản, LGPL yêu cầu người dùng phải có khả năng sửa đổi thư viện mã nguồn mở, build lại, rồi tích hợp lại thư viện mới đó vào ứng dụng hiện có
Nhà phát triển dùng thư viện LGPL phải làm cho điều đó “có thể thực hiện được”, nhưng trên thực tế cụm đó nghĩa là gì thì còn nhiều dư địa diễn giải
Lý do luật sư và các công ty ngại LGPL cũng là vì nó có nhiều dư địa diễn giải hơn GPL
Tôi không chắc tiền đề đó có đúng trong trường hợp này không
Các luật sư của Unity vẫn đang tiếp tục phá hỏng công ty, và điều đó cũng không mấy ngạc nhiên
Tôi từng làm việc ở đó; tôi tự hào về các thành tựu kỹ thuật, nhưng gần như mọi thứ khác thì đáng xấu hổ
Chỉnh sửa: Thực ra là có liên quan; phần lớn các nhà phát triển cốt lõi của VLC đang làm việc tại VideoLabs
Tôi giữ lại bình luận ban đầu
Bài blog này liên kết tới “VideoLab Store” trên https://videolabs.io, dùng một logo lớn rất giống logo VLC (viết tắt của VideoLAN, không phải VideoLab) nhưng không giống hệt
Trên trang chủ thậm chí còn có dòng “Hire the VLC team”
Theo tôi biết thì VideoLab không liên quan đến tổ chức phi lợi nhuận VideoLAN, và trông như đang cố khiến mọi người hiểu nhầm rằng họ là các nhà phát triển VLC
Hiện VideoLabs tuyển dụng phần lớn các nhà phát triển cốt lõi của VLC, và chính họ là động lực chính của việc phát triển VLC
Lý do tổ chức như vậy là để ngay cả khi công ty Videolabs không tồn tại mãi, VLC vẫn sẽ mãi là phần mềm tự do và tổ chức phi lợi nhuận cũng tiếp tục tồn tại
Đây là một cấu trúc khá điển hình trong các dự án nguồn mở; với VideoLAN thì có 3–4 công ty làm tư vấn
Về bản chất, đây là một pháp nhân vì lợi nhuận tuyển dụng và trả lương cho phần lớn các contributor chính của VLC để họ làm việc trong hệ sinh thái đó, rồi финанс việc này bằng tư vấn và các dịch vụ khác
Họ cũng đóng góp khá nhiều cho codebase của VLC
Từ góc nhìn của người từng làm việc cùng họ theo dạng đối tác, tôi bổ sung rằng “vì lợi nhuận” chủ yếu chỉ là hình thức pháp lý, chứ tư duy thì không phải vậy
Hơn nữa, Videolabs cũng được liệt kê tại https://www.videolan.org/videolan/partners.html
Có vẻ phía dự án biết rõ công ty này
Hiện họ là contributor chủ chốt của VLC, tuyển dụng các nhà phát triển lâu năm và xây dựng các giải pháp tùy chỉnh quanh hệ sinh thái VLC và FFmpeg
Theo trang giới thiệu, họ là các maintainer chính của VLC
Nếu tôi sai thì mong được sửa giúp
Theo tôi hiểu, việc dùng mã LGPL v2 vẫn ổn ngay cả khi phát hành trên console. Vì v2 không có điều khoản chống Tivo hóa, nghĩa là không có vấn đề gì ngay cả khi người dùng cuối không thể liên kết lại chương trình do nền tảng bị khóa
Nhưng websockify.js và có lẽ một số dependency khác là LGPL v3, và điều này có vẻ có nghĩa là chúng không thể được đưa vào các nền tảng như Nintendo Switch, nơi người dùng cuối không thể thay thế các thành phần đó
Tôi tò mò liệu Unity có đang loại các thành phần như vậy khỏi các nền tảng bị khóa hay chỉ đơn giản là đang vi phạm LGPL v3
Điều khoản này được viết khá hẹp để ngăn việc Tivo từng làm. Tức là nó nhắm tới trường hợp bán một thiết bị có hệ điều hành bị khóa và có kèm phần mềm *GPLv3
Để áp dụng, phần mềm phải được chuyển giao trong một “sản phẩm người dùng”, và việc chuyển giao đó phải là một phần của giao dịch trong đó quyền sở hữu và quyền sử dụng sản phẩm được chuyển sang cho người nhận
“Sản phẩm người dùng” thường có nghĩa là tài sản cá nhân hữu hình thường dùng cho mục đích cá nhân, gia đình, hộ gia đình, hoặc thứ được thiết kế/bán để tích hợp vào không gian cư trú
Với Nintendo Switch, điều đó có nghĩa là Nintendo không thể đưa phần mềm *GPLv3 vào chính chiếc Switch hoặc những gì đi kèm khi mua
Phần mềm bổ sung được tải về và cài đặt sau đó, phần mềm bán qua cửa hàng trực tuyến của Nintendo hoặc trên phương tiện vật lý, không thuộc phạm vi áp dụng của điều khoản chống Tivo hóa
Vì vậy, nếu chỉ xét riêng điều khoản đó, việc Unity đưa mã *GPLv3 vào cho nền tảng bị khóa, hoặc việc nhà phát triển dùng Unity để làm game cho nền tảng đó, không có vấn đề
Điều có thể gây vấn đề là các phần khác của *GPLv3. Khi phần mềm được phân phối và mua qua app store như của Apple hay Nintendo, bên tạo và phân phối bản sao tải xuống là Apple hoặc Nintendo
Nếu họ được chủ sở hữu bản quyền cho phép thì không sao, nhưng để dùng các cửa hàng như vậy, thường phải đồng ý với điều khoản cấm tái phân phối hoặc kỹ thuật đảo ngược, và đó là vi phạm *GPLv3
Nếu chủ sở hữu bản quyền nắm toàn bộ bản quyền của mọi mã đã dùng, họ có thể cấp phép phân phối cho Apple hoặc Nintendo
Nhưng nếu app hoặc game có chứa thư viện *GPL của bên thứ ba, và bên thứ ba đó không cấp giấy phép như vậy cho nhà vận hành cửa hàng, thì app hoặc game đó không thể được phân phối trên cửa hàng đó
Đây là bản sao nội dung từ một liên kết đã chết
Apple cũng có vấn đề giống Unity. Nếu chạy
% bash --versiontrên macOS, bạn sẽ thấy GNU bash 3.2.57; họ không thể nâng lên sau bản 3.2, bản phát hành cuối cùng theo GPL v2, nên phải tự duy trì một phiên bản cũPhiên bản này đủ cũ để, theo chuẩn Mỹ, có thể hút thuốc, đi bầu và nhập ngũ, và Apple đang cố chuyển người dùng sang zsh
Tôi đã xem LGPL 2.1 và phần “or later” của giấy phép khá kỳ lạ. Người dùng có thể tùy ý chuyển sang bất kỳ phiên bản GPL nào từ 2.1 trở lên
Tuy nhiên, tác giả thư viện phải ghi rõ trong tệp COPYING là LGPL, chính xác là LGPL 2.1, hoặc cách khuyến nghị là “LGPL 2.1 or later”
Việc Unity nói mã LGPL đã bị “deprecated” là có thể hiểu được, miễn là mã đó không ghim phiên bản LGPL. Vì nhà cung cấp LGPL upstream có thể thực hiện license rug pull bất cứ lúc nào như bash
Nhưng thư viện VLC ở đây được ghi là “LGPL 2.1 only”, tức là họ tuyên bố rõ ràng rằng không thể rug pull trừ khi nhảy sang GPL3: https://code.videolan.org/explore/projects/starred
Tuy nhiên VLC không kèm giấy phép đúng cách; COPYING và COPYING.lib không nói liệu có ghim phiên bản LGPL hay không, còn README.md thì ghi
libVLC, the engine is released under the LGPLv2 (or later) license.: https://code.videolan.org/videolan/vlcVì vậy mối lo của Unity có vẻ đúng ở một mức độ nào đó. “or later” bao gồm v3, và v3 đặc biệt không hợp với những thứ như công nghệ chống gian lận hoặc console
Tuy nhiên, theo suy đoán của tôi, Unity đang lo làm phật ý bên thứ ba nắm bằng sáng chế đối với các thuật toán mà VLC triển khai, và đang dùng LGPL làm cái cớ để che giấu chi tiết của các thỏa thuận không công khai đó
Godot tốt hơn
Dạo này Unity là một lựa chọn kinh doanh tệ
Nếu phải chọn một engine thương mại, ít nhất tôi sẽ chọn Epic Games, bên dùng luật sư để đấu với Apple thay vì quấy rầy các nhà phát triển mã nguồn mở
Thú vị là có vẻ thỏa thuận dành cho nhà cung cấp không có mục 5.10.4: https://unity.com/legal/provider
Từng có điều khoản này:
5.10.4 Provider represents and warrants that its Assets shall not contain (a) any software licensed under the GNU General Public License or GNU Library or Lesser General Public License, or any other license with terms that include a requirement to extend such license to any modification or combined work and provide for the distribution of the combined or modified product’s source code upon demand so that Customer content becomes subject to the terms of such license; or (b) any software that is a modification or derivative of any software licensed under the GNU General Public License or Library or Lesser Public License, or any other license with terms similar thereto so that Customer content become subject to the terms of such license.Nhưng theo Wayback Machine thì nó đã bị xóa trong khoảng từ ngày 3/12 đến ngày 12/12
Tôi thật sự muốn dùng Unity cho dự án
Tôi thực sự thích editor và API, và có thể khá dễ dàng tạo nhiều công cụ ngay trong editor cho những người không rành kỹ thuật
Nhưng Unity khiến việc sử dụng trở nên khó khăn ở mọi bước, từ các hành vi thù địch với người dùng, 20 gói beta kiểu “chúng tôi thật sự hứa sang năm sẽ ổn định”, cho đến hiệu năng tệ đi nghiêm trọng ngay cả với một dự án trống
Hiện tôi chủ yếu dùng Godot và thấy ổn, nhưng nó không hoàn toàn so sánh được với Unity
Chỉ vì đăng một package mà Unity giờ đã quyết định là deprecated nên bị cấm tài khoản vĩnh viễn à? Rốt cuộc họ đang hút cái gì vậy?
Nó cạnh tranh với trình phát media riêng của họ à? Hay người tạo VLC đang hẹn hò với người yêu cũ của một lãnh đạo Unity?
Đây thật sự là một trào lưu ngu ngốc, và tất cả chúng ta nên đẩy lùi nó, nhưng vẫn chưa tới mức đó
Diễn giải ghi chú của Unity thì có vẻ họ đã xóa thư viện VLC khỏi Unity Store và cấm vĩnh viễn tài khoản Unity Store của nhóm VLC với lý do vi phạm điều khoản hợp đồng với Unity
Biệt ngữ doanh nghiệp có thể khó hiểu. Có lẽ đó chính là mục đích chính của biệt ngữ doanh nghiệp
Unity lại thể hiện sự thù địch
Cấm vĩnh viễn một nhà phát triển vì lý do như thế này là điên rồ
Việc này xảy ra vào tháng 8/2023, trước vụ tính phí theo lượt cài đặt
Không ngạc nhiên. Unity đúng là một công ty khủng khiếp