2 điểm bởi GN⁺ 2023-09-05 | 1 bình luận | Chia sẻ qua WhatsApp
  • Vì mã nguồn VS Code và bản phân phối chính thức có các điều kiện khác nhau, VSCodium trở thành lựa chọn thay thế cho người dùng muốn nhận ngay bản nhị phân theo giấy phép MIT
  • Mã nguồn vscode của Microsoft mang giấy phép MIT, nhưng sản phẩm Visual Studio Code để tải xuống lại đi kèm giấy phép riêng và có tích hợp telemetry/theo dõi
  • VSCodium thay thế quy trình phát hành bằng các script tự động build từ kho vscode của Microsoft rồi đưa bản nhị phân kết quả lên GitHub releases
  • Các bản nhị phân được cung cấp có telemetry bị vô hiệu hóa và có thể tải bản phát hành mới nhất cho Windows, Mac OS, Linux
  • Có thể cài đặt qua nhiều trình quản lý gói như Homebrew, WinGet, Chocolatey, Scoop, Snap, Nixpkgs, AUR, kho deb/rpm, Flatpak

Sự khác biệt giữa mã nguồn VS Code và bản phân phối của Microsoft

  • VSCodium là bản phân phối nhị phân tự do/mã nguồn mở dựa trên VS Code của Microsoft
  • Mã nguồn vscode của Microsoft mang giấy phép MIT, nhưng sản phẩm Visual Studio Code do Microsoft phân phối sử dụng giấy phép không phải FLOSS và bao gồm telemetry/theo dõi
  • Bản build do Microsoft phát hành được tạo bằng cách clone kho vscode rồi áp dụng product.json có chứa các tính năng riêng của Microsoft
    • Các tính năng riêng của Microsoft đó bao gồm telemetry, gallery, logo, v.v.
    • Nếu tự build trực tiếp với product.json mặc định, sẽ tạo ra một bản build “sạch” không có các tùy biến của Microsoft, và mặc định áp dụng giấy phép MIT

Cách build và phát hành của VSCodium

  • VSCodium giúp người dùng nhận được bản build giấy phép MIT mà không cần tự tải mã nguồn về rồi build
  • Script build sẽ clone vscode repository của Microsoft và chạy lệnh build, sau đó tải bản nhị phân kết quả lên GitHub releases
  • Các bản nhị phân của VSCodium mang giấy phép MIT và telemetry đã bị vô hiệu hóa
  • Người dùng muốn tự build có thể dùng kho vscode và hướng dẫn build của Microsoft
  • Bản phát hành mới nhất được cung cấp cho Windows, Mac OS và Linux

Cài đặt theo từng trình quản lý gói

  • Nếu dùng Homebrew trên Mac:
    brew install --cask vscodium
    
  • Trên Windows có thể dùng nhiều trình quản lý gói
    • WinGet
      winget install vscodium
      
    • Chocolatey
      choco install vscodium
      
    • Scoop
      scoop bucket add extras
      scoop install vscodium
      
  • Trên Linux có thể cài qua Snap, Nixpkgs, AUR, Flatpak, v.v.
    • Trên Snap Store, ứng dụng được cung cấp với tên Codium
      snap install codium --classic
      
    • Trên Nix(OS), có thể thêm vscodium vào environment.systemPackages hoặc cài cục bộ
      nix-env -iA nixpkgs.vscodium
      
    • Trên Arch Linux, có thể cài gói vscodium-bin từ AUR bằng AUR Helper
      yay -S vscodium-bin
      

Cài đặt dựa trên bản phân phối/kho phần mềm

  • Parrot OS đã cài sẵn VSCodium
    • Nếu không thấy theo mặc định, có thể cài từ kho Parrot chính thức
      sudo apt update && sudo apt install codium
      
  • Gói deb cho Debian/Ubuntu được cài thông qua kho liên quan đến VSCodium và các mirror CDN
    • Thêm khóa GPG của kho rồi thêm cấu hình kho phù hợp với phiên bản Debian/Ubuntu
    • Lệnh cài đặt như sau
      sudo apt update && sudo apt install codium
      
    • Nếu muốn vscodium-insiders thì thay codium bằng codium-insiders
  • Gói rpm cho Fedora/RHEL/CentOS/Rocky Linux/OpenSUSE cũng được cài bằng cách thêm kho riêng
    • Fedora/RHEL/CentOS/Rocky Linux:
      sudo dnf install codium
      
    • OpenSUSE/SUSE:
      sudo zypper in codium
      
  • Trên Gentoo/Funtoo thì cài bằng ebuild
    • Funtoo:
      sudo emerge -av vscodium-bin
      
    • Gentoo:
      sudo emerge -av vscodium
      

Flatpak và tài liệu migration

  • VSCodium cũng được cung cấp dưới dạng ứng dụng Flatpak, và kho build là flathub/com.vscodium.codium
  • Trong môi trường đã bật kho Flathub, có thể cài bằng lệnh sau
    flatpak install flathub com.vscodium.codium
    
  • Nếu đã cài gnome-software-plugin-flatpak, bạn cũng có thể tìm thấy VSCodium trong GNOME Software
  • Những điểm khác biệt có thể gặp khi migration từ Visual Studio Code sang VSCodium hoặc trong quá trình sử dụng được tổng hợp trong tài liệu

1 bình luận

 
GN⁺ 2023-09-05
Ý kiến trên Hacker News
  • Các binary do những dự án kiểu này tạo ra khiến tôi cảm thấy khó tin tưởng hơn so với binary do Big Tech cung cấp. Dù Big Tech đúng là những bên theo dõi lớn nhất, các dự án có nhân lực và lợi ích liên quan ít hơn nhiều có vẻ dễ bị tấn công chuỗi cung ứng hơn, hoặc dễ bị thâu tóm mang tính thù địch khi nhà phát triển bán dự án
    Tôi không quá am hiểu lĩnh vực này, nên sẽ rất hữu ích nếu có tài liệu tham khảo về cách các dự án như vậy tránh những rủi ro này; và có lẽ mối lo này cũng có cơ sở

    • Mối lo đó hoàn toàn có cơ sở. Tôi không định đánh giá riêng dự án này, nhưng việc làm cho quá trình lấy bản gốc, chỉnh sửa rồi phân phối lại trở nên đáng tin cậy là điều khó
      Các công ty lớn nỗ lực đến mức cực đoan để bảo đảm chuỗi tin cậy cho phần mềm họ build, và các nền tảng phân phối ứng dụng cũng bỏ nhiều công sức để bảo đảm chuỗi tin cậy đầu-cuối từ nhà phát triển đến ứng dụng chạy trên thiết bị của người dùng
      Về cơ bản là không thể nếu không tin cả tác giả gốc lẫn bên phân phối lại, nhưng các cách như quy trình build có thể kiểm chứng, kiểm tra khóa ký và hash, ký lại... giúp giảm lượng niềm tin cần thiết. Nếu về mặt lý thuyết người dùng có thể tự tái tạo cùng một bản build, thì sẽ dễ tin hơn
      Lựa chọn tốt nhất là dự án gốc tự cung cấp các bản build không gắn thương hiệu, còn các dự án như VSCodium chỉ còn là chỉ cấu hình như tắt telemetry, để không cần ký lại. Ví dụ, dự án Chromium tự phân phối binary Chromium không có các thành phần riêng của Google
      Tôi chủ yếu nghĩ đến các app store, nhưng gần như cùng một logic cũng áp dụng cho những nơi như kho gói Debian. App store thường ký lại ở giữa nên bạn phải tin store, nhưng các công ty này bỏ nhiều công sức để bảo đảm độ tin cậy tại điểm đó
    • Về lý thuyết, nếu một dự án như vậy build bằng GitHub Actions và bạn tin vào bảo mật của Microsoft, thì có thể kiểm tra hash commit lấy từ action rồi so sánh khác biệt với upstream
      Nếu phần khác biệt đó trông an toàn, thì gần như có nghĩa là binary cũng có thể tin được. Tất nhiên cũng phải kiểm tra xem nó có tải về tài nguyên Internet nào không thể bảo đảm tính toàn vẹn theo cùng cách hay không
    • Tôi vừa cài vscodium trên máy Manjaro, và nó được build từ mã nguồn AUR
      Bạn có thể so sánh mã nguồn mà gói đã dùng với git SHA upstream của Microsoft mà nó tuyên bố dựa trên: https://aur.archlinux.org/packages/vscodium
      Đúng lúc giờ cũng đã có extension chế độ remote mã nguồn mở, nên không còn lý do gì để dùng bản độc quyền nữa. Về phía tôi thì không còn telemetry
    • Sau khi nhìn vào tình trạng hiện nay của ngành công nghệ và từng làm việc trong đó, tôi lại nghĩ ngược lại
      Tôi hoàn toàn không tin rằng các công ty lớn sẽ làm mọi thứ cho đúng, hay sẽ không nhồi đầy ứng dụng bằng spyware dưới cái tên telemetry. Tôi thà tin những người kiên trì bám trụ để tạo ra phần mềm tự do và mã nguồn mở hơn
    • Hiện tại tôi cũng tin công ty phát triển gốc hơn. Sẽ tốt nếu có nhiều lựa chọn hơn
      Build có thể tái tạo như cách Go đã làm trong SDK mới nhất có thể giúp ích ở đây: https://go.dev/blog/rebuild
      Điều này đặc biệt hiệu quả với một fork có ít thay đổi mã nguồn, vì chỉ cần kiểm chứng các patch
      Các bản phân phối Linux cũng khá tương tự. Lý do tôi phần lớn tin các gói Debian là vì có một tổ chức bảo trợ và các quy trình. Các tổ chức độc lập thì ít có điều đó hơn
      Một ngày nào đó có thể sẽ xuất hiện một tổ chức bảo trợ chỉ phụ trách các build có thể tái tạo, và mọi người có thể phân phối binary thông qua đó. Giống như các tổ chức đăng ký tên miền, việc kiểm chứng độc lập có thể giữ cho tổ chức đó trung thực
  • Microsoft đã hạn chế các extension chủ chốt chỉ được dùng trong bản phát hành chính thức, qua đó loại bỏ cạnh tranh theo hướng này. Cá nhân tôi dùng remote extension khá nhiều, nên sẽ rất tốt nếu có ai đó cung cấp lựa chọn thay thế

    • Hôm nay khá may mắn
      “Open Remote - SSH” của “jeanp413”, tức @ext:jeanp413.open-remote-ssh, ít nhất với tôi thì hoạt động y hệt extension mã nguồn đóng
      Tôi đang dùng gói vscodium AUR trên Manjaro, và extension thì lấy từ store mặc định của vscodium. Không biết nó có trên Microsoft Store không
      Trong Code - OSS thì extension đó không hoạt động với tôi; trông giống lỗi cấu hình, và tôi không điều tra thêm
    • Tài liệu có cách chuyển lại sang marketplace extension chính thức: https://github.com/VSCodium/vscodium/blob/master/DOCS.md#how...
      Vì vậy nếu có extension bắt buộc phải có mà marketplace của codium không có, bạn vẫn có thể dùng thông qua Microsoft Marketplace
    • Tôi đã bắt đầu dùng Remote OSS, dùng cùng một script tùy chỉnh để cài đặt và chạy remote code host. Nó hoạt động tốt cả trên máy chủ từ xa, và cũng phối hợp ổn với devcontainers trên remote host
      Nếu muốn tự động xử lý việc cài đặt và cấu hình tunnel, bạn có thể dùng thứ giống script ở đây: https://github.com/CGamesPlay/dotfiles/blob/master/files/.lo...
      Tôi cũng đang làm một PR để thêm cách tự động chạy script tùy chỉnh nhằm thiết lập tunnel: https://github.com/xaberus/vscode-remote-oss/pull/9
      Remote OSS: https://open-vsx.org/extension/xaberus/remote-oss
    • Tôi nghĩ lựa chọn thay thế đơn giản là không dùng VS Code. Ở công ty thì tôi dùng vì bộ phận IT hỗ trợ chính thức và tôi cũng không bận tâm chuyện theo dõi, nhưng với việc cá nhân thì tôi vẫn dùng Sublime
    • https://open-vsx.org/extension/jeanp413/open-remote-sshhttps://open-vsx.org/extension/jeanp413/open-remote-wsl
  • Về cơ bản, đây là thứ bạn nhận được khi tải mã nguồn của Visual Studio Code về rồi build
    Cái tên cũng trông gần như một kiểu chơi chữ giống Chrome → Chromium
    Việc Microsoft và Google nói rằng họ “mở mã nguồn” sản phẩm, nhưng thực tế lại phát hành sản phẩm có các tính năng bổ sung mã nguồn đóng, nhìn nhẹ thì là thiếu trung thực, nhìn nặng thì là chuyện có thể dẫn tới một vụ kiện khổng lồ

    • Hoàn toàn đúng. Google và Apple đã khởi xướng xu hướng này, còn MS thì hoàn thiện nó. Họ nói rằng mình tạo ra sản phẩm “mã nguồn mở”, nhưng thực tế lại tung ra phiên bản mã nguồn đóng
      Các tập đoàn khổng lồ này hưởng lợi từ công sức của những kỹ sư phần mềm ngây thơ hiến tặng thời gian cho sản phẩm mã nguồn mở, nhưng thứ họ đưa đến người dùng cuối lại là phiên bản mã nguồn đóng
    • Tôi không hiểu chỗ nào là thiếu trung thực, và định kiện vì điều gì. “Họ công bố mã nguồn mở và phân phối miễn phí sản phẩm, nhưng nó không đúng như tôi muốn” nghe có vẻ khó mà đem đi kiện được
    • Nói “có thể dẫn tới một vụ kiện khổng lồ” là một tuyên bố khá mạnh miệng. Trừ khi vscode hay sản phẩm khác dùng mã GPL không đúng cách hoặc không tuân thủ yêu cầu giấy phép, thì theo những gì tôi biết, Microsoft không làm gì sai cả
      Trường hợp này cũng giống vô số công ty thương mại phát hành phần mềm độc quyền dựa trên dự án mã nguồn mở
    • Đây là mô hình open enshittification
    • Tôi thấy cách dùng từ “mã nguồn mở” ở đây khá công bằng. Người khác có thể lấy mã nguồn và phân phối hợp pháp một bản build gần như giống hệt, có lẽ chỉ khác phần telemetry
      Thứ cần có giống một kiểu phân loại phản tính năng như trên store F-Droid hơn. Ví dụ các nhãn như “ứng dụng này phụ thuộc vào ứng dụng không tự do khác” hoặc “phụ thuộc vào hay khuyến khích dùng dịch vụ mạng không tự do”
  • Vscode được thiết kế để tạo ra sự phân mảnh: https://ghuntley.com/fracture/

    • Điều này từng được bàn từ năm 2022: https://news.ycombinator.com/item?id=32657709
      Tóm lại, Microsoft phát hành Visual Studio Code có tích hợp telemetry, nên các dự án như VSCodium bắt đầu tung ra các bản build tùy chỉnh không có telemetry. Nhưng vì các dự án này không được Microsoft cấp phép nên không thể dùng cùng marketplace, và đó chính là sự phân mảnh trong tiêu đề bài viết
      Tiếp đó bài viết nói rằng các IDE độc quyền khác cũng có vấn đề, và GitHub là cái bẫy để giam giữ và chia rẽ lập trình viên
      Vở kịch quanh Microsoft và mã nguồn mở này làm tôi nhớ đến các tài liệu Halloween: http://www.catb.org/~esr/halloween/
    • Điểm cốt lõi mà bài viết đó rốt cuộc đi tới là Microsoft đã tạo ra IDE tốt nhất và các extension tốt nhất, nên việc không dùng Microsoft trở nên khó khăn. Điều đó có nhiều hàm ý xấu
      Ừm… vậy sao? Dùng hoặc không dùng thôi. Tôi không chắc “nó tốt đến mức không thể không dùng” có phải là một phàn nàn chính đáng hay không
    • Theo định nghĩa đó, thật sự rất khó nghĩ ra sản phẩm nào có khả năng mở rộng hoặc cho phép extension mà lại không được thiết kế để tạo ra sự phân mảnh
  • Hôm qua tôi đã phải chuyển khỏi bản build mã nguồn mở. Sau khi cập nhật, Pylance có vẻ đã ngừng hoạt động vì DRM
    Mỗi lần khởi động, nó hiện một cảnh báo lớn rằng dùng trên bản build không được MS phê duyệt là vi phạm giấy phép, rồi dừng ngay lập tức

    • Có thể dùng pyright thay thế: https://github.com/microsoft/pyright
      Đây là phiên bản tự do và mã nguồn mở của pyright, nhưng thiếu một số tính năng
    • Nghe như đó là một lý do để không dùng Pylance
  • Các bài liên quan
    VSCodium – Free/Libre Open Source Software Binaries of VS Code - https://news.ycombinator.com/item?id=31604932 - tháng 6 năm 2022, 430 bình luận
    VS Code without Microsoft branding/telemetry/licensing - https://news.ycombinator.com/item?id=23447413 - tháng 6 năm 2020, 200 bình luận
    VSCodium – An Open Source Visual Studio Code Without Trackers - https://news.ycombinator.com/item?id=19650109 - tháng 4 năm 2019, 253 bình luận
    VSCodium: 100% Open Source Version of vs. Code - https://news.ycombinator.com/item?id=19619956 - tháng 4 năm 2019, 8 bình luận
    VSCodium: Binary releases of VSCode without MS branding, telemetry and licensing - https://news.ycombinator.com/item?id=17850960 - tháng 8 năm 2018, 113 bình luận

  • Tôi đã dùng nó trong thời gian dài và cũng bảo cả nhóm dùng, nhưng cuối cùng đã bỏ cuộc. Nếu không có Remote SSH và devcontainers, Microsoft vẫn nắm rất chặt phần giúp tận dụng tối đa VSCode
    Hơn nữa, có vẻ Microsoft đã lùi bước về telemetry, và giờ có thể tắt hoàn toàn. Tuy nhiên tôi chưa tự kiểm tra xem “tắt” có thật sự là tắt không

    • Extension devcontainer chính thức xử lý phần lớn công việc cốt lõi bằng devcontainer CLI mã nguồn mở, nên có thể dùng ngoài bất kỳ IDE nào
      Ngoài ra, nếu dùng Remote OSS, bạn có thể dùng host từ xa vscodium bên trong dev container. Chi tiết tôi đã viết trong bình luận này: https://news.ycombinator.com/item?id=37386025
  • Tôi dùng cả VSCode lẫn VSCodium. Lý do đơn giản và thực dụng: quản lý cấu hình và nhiều cửa sổ có thể phân biệt được
    VSCode của tôi bị nhấn chìm hoàn toàn trong một lượng extension khổng lồ có vẻ cần cho công việc Microchip/Atmel/zephyr
    Tôi dùng VSCodium cho công việc ansible/elixir

    • Có vẻ bạn đang dùng khá phức tạp chỉ để duy trì hai môi trường khác nhau
      VSCodium không có tính năng giống profile trình duyệt, cho phép thay đổi đủ loại thiết lập chỉ trong profile đó à? Tôi thường dùng Firefox theo cách như vậy, và cũng để giao diện cửa sổ khác nhau
  • Mong dự án tiếp tục được duy trì. Extension của startup chúng tôi đã được đưa lên Open VSX Registry, và chúng tôi rất hài lòng với cách vận hành đó

  • Trên Arch có một gói có vẻ tương đương, tên đơn giản là code

    • code là tên binary, còn bản thân “dự án” là Code - OSS như được ghi tại https://wiki.archlinux.org/title/Visual_Studio_Code
      Đó là gói do kho chính cung cấp; nếu muốn dùng VSCodium hoặc Visual Studio Code thì phải dùng AUR