Phát triển ứng dụng cho Linux
(makealinux.app)- Desktop và di động Linux có nhu cầu với phần mềm mới, nhưng các app store và kho phần mềm đang thiếu số lượng ứng dụng, nên thông điệp là hãy tập trung vào phát triển ứng dụng hơn là tạo thêm bản phân phối mới
- Ngay cả những ứng dụng bắt đầu từ nhu cầu cá nhân, nếu được phát triển công khai, cũng có thể trở thành tài liệu học tập và cộng đồng, từ đó dẫn đến mở rộng hệ sinh thái Linux
- Sự đa dạng với hàng trăm bản phân phối là một gánh nặng, nhưng nếu tận dụng các hệ thống đóng gói và phân phối đã được tài liệu hóa, vẫn có thể đưa ứng dụng đến người dùng ở nhiều môi trường khác nhau
- GNOME, KDE Frameworks, elementary OS, Electron, Ubuntu Touch cung cấp các lộ trình phát triển khác nhau với Gtk, Qt, Vala, JavaScript·HTML·CSS, QML...
- Có các phương thức phân phối như AppCenter, AppImage, Flatpak, Open Build Service, Snapcraft; đồng thời cũng có khả năng kiếm tiền thông qua ứng dụng trả phí, dịch vụ và các app store theo mô hình ủng hộ
Vì sao Linux cần nhiều ứng dụng hơn
- Người dùng Linux trên desktop và di động có nhu cầu đối với phần mềm mới
- Các app store và kho phần mềm Linux thiếu ứng dụng so với các nền tảng độc quyền
- Với những người đam mê công nghệ, ngày càng có nhiều lời kêu gọi hãy dành đam mê và sự sáng tạo cho ứng dụng mới phục vụ người dùng Linux thay vì tạo thêm các bản phân phối Linux mới
- Thông điệp cốt lõi là: “Hãy ngừng tạo bản phân phối Linux và bắt đầu làm ứng dụng”
Tác động của phát triển ứng dụng đối với hệ sinh thái
- Nếu có ý tưởng về một ứng dụng mà bản thân cần, rất có thể cũng có những người dùng khác có nhu cầu tương tự
- Nếu xây dựng ứng dụng một cách công khai, các nhà phát triển mới hơn cũng có thể học hỏi và bắt đầu, qua đó hỗ trợ thế hệ phát triển ứng dụng Linux tiếp theo
- Phát triển ứng dụng là công việc sáng tạo, và cảm giác thành tựu khi hoàn thành dự án cũng có thể là một phần thưởng
- Phát triển ứng dụng giúp hình thành cộng đồng, và cộng đồng Linux thường muốn giúp nhà phát triển thành công
- Năng lực phát triển phần mềm là kỹ năng có nhu cầu cao, và cũng có rất nhiều tài nguyên học tập miễn phí
- Quan niệm rằng người dùng Linux không hỗ trợ tài chính cho nhà phát triển là một hiểu lầm; các ứng dụng và dịch vụ trả phí phổ biến có thể tạo ra nguồn thu mới
Nhắm đến nhiều bản phân phối Linux khác nhau
- Linux, không giống các nền tảng khác, là một mục tiêu cực kỳ đa dạng, với hàng trăm bản phân phối tồn tại
- Một khi được phát hành, ứng dụng nói chung có thể chạy trên nhiều môi trường
- Có các hệ thống đóng gói và phân phối được tài liệu hóa tốt để nhà phát triển đưa ứng dụng đến người dùng
- Mỗi framework phát triển và mỗi bản phân phối Linux đều có lộ trình khuyến nghị riêng để phân phối ứng dụng đến người dùng
- Khi sẵn sàng chia sẻ ứng dụng, có thể xem hướng dẫn đóng gói được khuyến nghị trong tài liệu phát triển
Những lộ trình có thể bắt đầu phát triển
-
GNOME
- Dự án GNOME tạo ra desktop GNOME Shell và hỗ trợ phát triển dựa trên Gjs và Gtk
- Với Gtk, có thể dùng các ngôn ngữ phổ biến như Python, C, C++, Rust, JavaScript...
- GNOME Developer Center
-
KDE Frameworks
- KDE cung cấp desktop Plasma cùng các công cụ và framework để tạo ứng dụng
- KDE Frameworks từ lâu đã được dùng để phát triển nhiều ứng dụng desktop khác nhau
- Chủ yếu sử dụng bộ công cụ Qt và ngôn ngữ lập trình C++
- KDE Frameworks Getting Started
-
elementary OS
- elementary OS hướng tới một hệ điều hành nhanh, cởi mở và tôn trọng quyền riêng tư, thay thế cho Windows và macOS
- Các nhà phát triển xây dựng desktop và hệ sinh thái dành cho phát triển ứng dụng
- Hướng dẫn cho nhà phát triển khuyến nghị Vala và Gtk
- elementary OS Developer Guide
-
Electron
- Electron cho phép tạo ứng dụng desktop đa nền tảng bằng JavaScript, HTML, CSS
- Nhà phát triển có thể tận dụng thư viện module node đồ sộ để tạo ứng dụng dựa trên công nghệ web
- Electron Documentation
-
Ubuntu Touch
- Ubuntu Touch là hệ điều hành mã nguồn mở được thiết kế để chạy trên nhiều thiết bị như điện thoại, máy tính bảng và PC
- Ứng dụng Ubuntu Touch native được tạo bằng QML hoặc HTML, còn hành vi được định nghĩa bằng JavaScript, C++, Python, Rust, Go
- Ubuntu Touch Documentation
Ý kiến của các nhà phát triển về hệ sinh thái ứng dụng Linux
- Neil McGovern của GNOME Foundation cho rằng để đưa Linux đến với đại chúng thì cần một hệ sinh thái ứng dụng thịnh vượng, và mọi người đều phải có thể phát triển cho Linux thì mới tiến gần hơn tới mục tiêu về một desktop mở
- Aleix Pol của KDE e.V. nói rằng để biến Linux thành hệ điều hành mà người dùng mong muốn thì cần những ứng dụng tuyệt vời, và các công cụ phát triển cho phép tạo ra những gì ta hình dung
- Nhà sáng lập elementary, Daniel Foré, cho rằng trên desktop Linux, không chỉ có cơ hội tạo ra các ứng dụng tuyệt vời mà còn có thể xây dựng API nền tảng và tác động đến định hướng của desktop
- Jan Sprinz, thành viên hội đồng quản trị UBports Foundation, nói rằng phát triển ứng dụng Linux hoàn toàn khác với các hệ sinh thái đóng; dù có cạnh tranh về kỹ thuật, mọi người vẫn hợp tác vì một tầm nhìn lớn hơn
Cách chia sẻ và phân phối ứng dụng
-
AppCenter
- Là app store công khai theo mô hình pay-what-you-want dành cho nhà phát triển độc lập, đồng thời cũng là một dịch vụ build
- AppCenter Dashboard tích hợp với GitHub để hỗ trợ phát hành và theo dõi issue
- AppCenter Dashboard
-
AppImage
- Có thể phân phối ứng dụng desktop Linux dưới định dạng AppImage để tiếp cận người dùng của các bản phân phối Linux phổ biến
- Theo đuổi cách tiếp cận đóng gói một lần, chạy ở mọi nơi
- AppImage Packaging Guide
-
Flatpak
- Là framework để phân phối ứng dụng desktop Linux
- Được tạo ra bởi các nhà phát triển đã làm việc lâu năm trên desktop Linux và được vận hành như một dự án mã nguồn mở độc lập
- Flatpak Documentation
-
Open Build Service
- openSUSE Build Service là một instance công khai của Open Build Service
- Được dùng cùng với việc phát triển bản phân phối openSUSE để cung cấp gói cho nhiều bản phân phối như Fedora, Debian, Ubuntu, SUSE Linux Enterprise... từ cùng một mã nguồn
- openSUSE Build Service Help
-
Snapcraft
- Snapcraft là công cụ dòng lệnh để tạo snaps
- snaps được giới thiệu là các gói ứng dụng cho desktop, cloud và IoT; dễ cài đặt, an toàn, đa nền tảng và không phụ thuộc
- Snapcraft Documentation
1 bình luận
Các ý kiến trên Hacker News
Tôi cho rằng tiền đề này sai ở chỗ Linux vẫn chưa có một bộ framework cốt lõi ổn định về ABI
Các nền tảng cạnh tranh có nhiều framework nền tảng hơn hẳn như CoreImage, CoreAudio, CodeML, SceneKit, AppKit, và chúng ít bị phá vỡ hơn
snap hay flatpak trên Linux cũng thú vị, nhưng chúng giống một cách đi vòng bằng hạ tầng và quản lý gói hơn, thay vì giải quyết ngay trong chính framework và ngôn ngữ lập trình mà ứng dụng yêu cầu người dùng dùng
Linux thực ra cũng có các bộ tiêu chuẩn trên thực tế, nhưng do có những thứ thay đổi và bị loại bỏ nên độ ổn định kém hơn. Dù vậy, tình hình vẫn tốt hơn vẻ ngoài, và Snaps có thể giảm nhẹ một số vấn đề
Tuy nhiên, nếu mọi người chọn các bản phân phối không có những tiêu chuẩn đó, thì chỉ cần bạn không hỗ trợ đủ loại cấu hình kỳ lạ là sẽ mất một nửa người dùng tiềm năng
Nhưng như bài viết nói, phần lớn mọi người vẫn tiếp tục tập trung vào việc tạo bản phân phối, nên tự nhiên rất khó xuất hiện một stack duy nhất có thể theo kịp vô số bản phân phối kỳ lạ
Cuối cùng Google đã lấy kernel Linux rồi đặt lên đó hai bộ framework cốt lõi dựa trên Java và JavaScript, và với người tiêu dùng phổ thông thì các bản phân phối Linux đó đã trở thành bên thắng cuộc
Thông thường, nhà phát triển game build trên một bản phân phối lớn mới nhất rồi đưa lên Steam; nếu bản phân phối đó có glibc 2.36 thì binary cũng thường sẽ mang tên phiên bản yêu cầu glibc 2.36 trở lên
Rốt cuộc phải dùng chỉ thị symver của binutils gas để ép tên phiên bản khớp với một glibc đủ cũ ở mức hợp lý. Cá nhân tôi xem 5 năm, có lẽ 7–8 năm, là mốc hợp lý: https://sourceware.org/glibc/wiki/Glibc%20Timeline
Nhà phát triển game bình thường hầu như không biết vấn đề này, và dù biết cũng sẽ không làm công việc đau đớn như vậy chỉ vì 1% thị trường. Với libgcc và C++, cũng phải liên kết tĩnh libstdc++ để tránh vấn đề ABI đó
Dù vậy, engine Godot đang cung cấp build container có quan tâm đến những điểm này, và Unity cũng có vẻ xử lý phần đó khá gọn gàng. UT5.x thì tôi không rõ
Ngược lại cũng có những engine chưa sẵn sàng, như game dựa trên Electron. Nếu không có phiên bản GTK+ phù hợp với bản phân phối như Enlightenment, Qt, X11 thuần hoặc Wayland thì có thể không chạy được
Việc đóng gói đúng toàn bộ engine Google Blink để phân phối binary nhắm tới một dải rộng các bản phân phối ELF/Linux cũng không dễ
ELF/Linux nhìn chung không thân thiện với phân phối chỉ có binary vì ABI bị phá vỡ, đặc biệt nghiêm trọng ở SDK và các thư viện cốt lõi
Nếu binary game đã khó đến mức này thì ứng dụng còn khó hơn. Tôi có thể hình dung các nhà phát triển cuối cùng sẽ nói: “không quan tâm, cứ cài Microsoft SUSE GNU/Linux mà dùng, các thứ còn lại không hỗ trợ”
Việc có nhiều công cụ có thể lấy ra dùng ngay mà gần như không phải bận tâm về thời gian hỗ trợ, fork nào tốt hơn, hay có tương thích tốt với thư viện bên thứ ba khác không là điều rất tuyệt. Nó giảm ma sát rất nhiều và khiến bạn cứ thế làm
Hệ sinh thái KDE Qt và phía GNOME/GTK là gần nhất, nhưng vẫn chưa đạt tới mức đó
Có thể là tôi không biết mẫu quy tắc để quyết định khi nào nên thêm
devvàversionvào tên gói, hay các số1hoặc0tùy ý ở cuối có nghĩa là gì, nhưng có lẽ bản phân phối Linux đầu tiên có quy tắc đặt tên gói nhất quán sẽ chiếm được cảm tìnhlibgnutls-devlibgtk-3-0libwayland-server0libxcb1libx11-6libffi-devlibncurses5-dev-devchứa các header nên khá dễ hiểuCác con số là chỉ báo phiên bản khi có thể cài đồng thời nhiều phiên bản. Tuy nhiên có thể có ngoại lệ, như
xcb1, khi đó nó là một phần của tên thư việnVí dụ, tại một thời điểm nào đó hẳn có thể cài đồng thời
libgtk-3-0vàlibgtk-2-$something. Rất có khả năng tên này được giữ lại để sau này, dù gỡlibgtk-2, các tham chiếulibgtk-3-0trong những hướng dẫn cũ vẫn không bị hỏngTôi cũng không rõ số
0ở cuốilibwayland-server0là gì. Tôi có thấy trong/var/libcùng một thư viện mang nhiều đuôi.$number, nhưng chưa từng đào sâu xem chính xác nó giải quyết vấn đề gì-devlà đủ; nếu muốn phát triển với thư viện đó thì cũng cần gói-devđể cài các header1hay0phía sau không có gì đặc biệt, chỉ là một phần của tên gói hoặc phiên bản mà thôiTuy vậy
-devnghĩa là những thứ chỉ cần khi phát triển nhắm tới thư viện đóCác con số là số phiên bản chính, tức số tương thích. Nhờ vậy có thể dễ dàng cài song song nhiều phiên bản chính mà các gói khác nhau phụ thuộc vào, không bị xung đột
-devlà được. Các gói-devcó kèm số thường không phải thứ bạn cần trực tiếp bận tâm; nếu cần thì gói không có số nên chuyển tiếp tới chúngTrong quá trình build, hệ thống sẽ ghi lại hậu tố số nào, tức phiên bản ABI, đã được dùng. Nó phải khớp với hậu tố
.so.N, nhưng không phải là bạn tự đi tìm theo cách đóCách này cho phép cài nhiều bản sao thư viện không tương thích với nhau, rồi dùng đúng bản phù hợp. Các bản phân phối thường dọn những cái cũ theo từng bản phát hành lớn
Khi cài đặt, hệ thống nên tự động dùng các dependency đã được ghi lại trong lúc build
Đây là một trong những vấn đề lớn nhất đang níu toàn bộ nền tảng Linux lại. Người ta thường nói đó là ưu điểm, nhưng tôi không nhìn nhận như vậy
Các nhà phát triển nêu việc có nhiều lựa chọn là điểm mạnh của Linux, nhưng với nhiều người dùng, nó trở thành nghịch lý lựa chọn và khiến họ quay lại nền tảng quen dùng trước đây
Trên macOS và Windows có ít lựa chọn hơn, nhưng những lựa chọn khả dụng được trau chuốt hơn nhiều và ít phân mảnh hơn
Ví dụ, ta cần bao nhiêu trình quản lý cửa sổ dạng tiling? Không thể chọn trình quản lý cửa sổ dạng tiling tốt nhất rồi làm dock và applet tốt hơn sao? Còn các ứng dụng và launcher tích hợp vào paradigm của trình quản lý cửa sổ dạng tiling thì sao?
Thay vào đó, thường chỉ còn lại 10 loại trình quản lý cửa sổ dạng tiling và những chương trình workaround nửa vời đặt lên trên chúng
Một hệ sinh thái thành công là hệ sinh thái cho ra kết quả đủ tốt ngay cả khi chọn những lựa chọn dễ thấy
Việc số lượng bản phân phối Linux tăng lên phần lớn chỉ là các khác biệt nhỏ không làm giảm đáng kể mức độ phù hợp có ý nghĩa, và chỉ một số rất ít người vốn không gặp khó khăn gì khi chọn distro mới coi đó là vấn đề
Ngược lại, những trường hợp như Wayland là vấn đề thực sự, vì phần plumbing và phần cứng bỗng trở nên quan trọng, và muốn chọn tổ hợp dùng được thì phải biết phần nào cấu trúc bên trong
So sánh Mac hay Windows với Linux cũng không có nhiều ý nghĩa. Với 95% người tiêu dùng, hệ điều hành là một đặc tính cố định hoặc một chức năng của máy tính, chứ không phải một sản phẩm riêng
Nếu toàn bộ gói phù hợp thì họ có thể mua một chiếc máy tính cài sẵn hệ điều hành đó, chứ không cố cài riêng lên thiết bị Windows hay Mac của mình
Những người có đủ kiến thức kỹ thuật để hài lòng có lẽ cũng không quá bối rối nếu có thêm 3 bản phái sinh Ubuntu và 2 bản phái sinh Arch
Trở thành lập trình viên mã nguồn mở nghĩa là có thể tự đặt ra mục tiêu và phương tiện cho mình, và trong phát triển phần mềm thương mại thì thường không có sự tự do đó
Sẽ có những chỗ thô ráp, nhưng hiệu ứng IKEA sẽ phát huy tác dụng và cuối cùng bạn sẽ thích nó
Nếu tất cả dùng cùng một phần mềm, ta sẽ có một hệ sinh thái độc canh dễ bị tấn công hơn. Windows từng là mục tiêu của rất nhiều virus cũng vì mục tiêu vừa lớn vừa nhất quán
Nếu xâm nhập được máy Windows của một người dùng phổ thông thì có thể xâm nhập những máy còn lại theo cách tương tự. Nhắm vào Linux thì khó hơn nhiều
Hơn nữa, đây là phần mềm tự do. Nếu không phải trả tiền thuê ai đó làm, thì phần lớn là hoạt động tình nguyện, và chúng ta không thể bảo người khác phải dùng thời gian tình nguyện của họ vào việc gì
Nếu có nhiều nhóm như vậy mà vẫn không ai muốn tham gia, thì cũng nên xem lại các cấu trúc xã hội đang chi phối. Có thể điểm khởi đầu là loại bỏ các bộ quy tắc ứng xử cho phép trừng phạt cả hành vi bên ngoài dự án
Và tôi cũng không rõ còn cần cải thiện gì thêm. Những thứ như Ulauncher hay Albert mạnh hơn nhiều so với những gì có thể làm trên các nền tảng khác, và tôi cũng không biết có thể làm UI tốt hơn nữa bằng cách nào
Việc có thêm nhiều phần mềm là điều tốt. Nhưng trước khi làm lại từ đầu, có lẽ nên cân nhắc đóng góp cho những thứ đã tồn tại, hoặc chọn các dự án đã bị bỏ rơi hay cần được chỉnh sửa để có thể build/chạy trên compiler và phần cứng mới nhất
Tôi cũng tò mò liệu có cơ sở dữ liệu các dự án đang ngủ đông/đã chết nào đó đáng để hồi sinh không
Một dự án khác có thể do một người khó làm việc cùng dẫn dắt, hoặc là một cộng đồng không chấp nhận đề xuất và patch
Các quy trình xã hội và điểm nghẽn có thể làm mất động lực đóng góp. Không phải ai cũng có thể trở thành một người chơi đội nhóm lạc quan không cá tính
Với tôi, bắt đầu lại từ đầu thì tốt hơn. Vì tôi có thể kiểm soát mọi biến số, không cần động vào hạ tầng xã hội/kỹ thuật hiện có, không phải thuyết phục ai đó rằng ý tưởng của mình là tốt, và không muốn dành nhiều thời gian cho tranh luận, thảo luận hơn là viết code
Trải nghiệm phát triển solo tốt hơn. Vì không bị trói buộc bởi chính trị và quy trình xã hội, còn việc thử làm người chơi đội nhóm chỉ đem lại đau khổ cho tôi
Cộng tác có thể trông như gánh nặng và khó khăn, nhưng rốt cuộc đó là việc tạo ra kết quả, và là thời gian được dùng tốt hơn so với đổ vào một dự án rồi sẽ bị bỏ rơi
Có nhiều lời phàn nàn rằng thiếu công cụ để tạo ứng dụng tương thích trên nhiều hệ điều hành, nhưng tôi không đồng ý. Chỉ xét các giải pháp không phải Electron cũng đã có rồi
Telegram dùng Qt để phân phối ứng dụng native hiệu năng tốt trên cả ba hệ điều hành
Flutter được compile thành code native trên cả ba hệ điều hành và mobile
Kirigami là framework QtQuick, cho phép tạo ứng dụng chạy được cho cả mục tiêu mobile lẫn desktop
Cứ làm ứng dụng thôi. Không có lý do gì lấy chuyện này làm cái cớ để chỉ trích Linux
Trên Windows, macOS và mobile hầu như không có cộng đồng hay dự án nghiêm túc nào. Tôi không có ý hạ thấp phía KDE, nhưng thực tế là vậy
License của Qt Quick trên iOS cũng không dễ, hoặc nếu đi theo hướng thương mại thì rất đắt
Ngược lại, Electron được các tập đoàn lớn đầu tư và đưa ra công cụ cấp production rất được trau chuốt, có cộng đồng và hệ sinh thái thư viện khổng lồ, lại không phải một ngôn ngữ xa lạ như Dart
Telegram thực sự đã nỗ lực hơn một bậc. Client của họ rất tuyệt
[0]: https://github.com/overtake/TelegramSwift
Vấn đề là phần mềm OSS thậm chí cũng không thật sự cố gắng cạnh tranh với thị trường
Những người dùng phần mềm OSS mặc nhiên chấp nhận rằng UX sẽ thiếu sót, và thực tế nhiều khi đúng là như vậy
Phần mềm độc quyền thông thường phải thích nghi để làm trải nghiệm người dùng cuối tốt hơn vì có rủi ro người dùng không trả tiền, nhưng OSS thường không có rủi ro đó. Mã nguồn mở cũng cần được đặt trước những rủi ro đến từ người dùng cuối
Tôi đã cố thay đổi điều đó bằng Notes[1], nhưng nhận ra rằng chỉ sống bằng quảng cáo thì rất khó. Tôi cũng đã thử thêm thanh toán cho các tính năng premium như Kanban, nhưng vì ứng dụng là FOSS hoàn toàn nên ai cũng có thể dễ dàng biên dịch từ mã nguồn
Ứng dụng tiếp theo[2] tôi định chuyển sang mã nguồn đóng trước khi ra mắt. Tôi không thể chấp nhận rủi ro công sức của mình không được đền đáp
Tôi tin rằng nếu có thể thu tiền, tôi sẽ đầu tư nhiều hơn vào các ứng dụng tập trung vào UX trên Linux, nên điều đó cũng có lợi cho cộng đồng Linux. Một phần có thể được phát hành mã nguồn mở, và trong tương lai xa có thể toàn bộ cũng sẽ được mở
[1] https://github.com/nuttyartist/notes
[2] https://www.get-plume.com
Vì vậy, nếu không làm chương trình thành mã nguồn mở, bạn có khả năng mất nhiều hơn so với việc làm mã nguồn mở và chấp nhận rủi ro một số người không trả tiền
Tôi nghĩ số người sẵn sàng trả tiền để dùng mã nguồn mở sẽ lớn hơn rất nhiều so với số người muốn dùng phần mềm độc quyền
Mã nguồn mở không có nghĩa là phải phân phối mã cho tất cả mọi người; nếu thu tiền, bạn cũng có thể chỉ cung cấp mã nguồn cho người dùng trả phí. Tuy nhiên, họ sẽ có quyền sửa đổi và phân phối lại
Nếu không quan tâm đến mã nguồn mở thì có thể dùng Notion hoặc Evernote. Nếu đang tìm một ứng dụng ghi chú mã nguồn mở hiện đại, tôi khuyên dùng Logseq
Thứ nhất, Notes trông khá giống Standard Notes. Nếu bạn đã dùng OSS copyleft để tạo ra Notes, tôi nghĩ sẽ khó phàn nàn trừ khi bạn trả tiền bản quyền cho công sức của các lập trình viên khác được đưa vào đó
Thứ hai, có lẽ tôi là một người dùng không điển hình. Tôi đã dùng Linux hơn 20 năm nhưng vẫn không viết nổi một script Bash hay một dòng Perl cho đàng hoàng
Nhưng vì tôi không biết lập trình và biết ơn công sức của người khác cũng như sự tự do mà nó mang lại, tôi đã chi nhiều tiền cho phần mềm hơn hẳn mức cá nhân thường chi trên các nền tảng khác
Tôi hỗ trợ nhiều nơi như Kaisen và Debian, các tiện ích cốt lõi của FSF và Emacs, KDE, Firefox của Mozilla, Betterbird, Syncthing, LaGrange, Joplin, ClipTo, SoulSeek và các dịch vụ như envs.net
Có khoản tôi đóng hằng năm, có khoản hằng tháng, có khoản chỉ một lần
Khi Standard Notes mới ra mắt tôi cũng đã trả tiền gói đăng ký 7 năm, nhưng dùng khoảng hai tháng rồi bỏ vì không hài lòng. Có những thứ tôi dùng nhiều như Alacritty nhưng không tìm được cách quyên góp, và tôi cố giảm thiểu những trường hợp như vậy
Thật ra tôi cảm giác macOS là một trong những trình quản lý cửa sổ tệ nhất trong các nền tảng phổ biến. Nó đẹp và dễ dùng, nhưng nếu muốn làm gì vượt quá mức cơ bản thì cần những câu thần chú không thể tự nhiên phát hiện ra
Dĩ nhiên mỗi người có gu riêng
Tôi bấm vào xem giá premium; nếu tính theo năm thì hợp lý, nhưng chỉ thấy tùy chọn đăng ký theo tháng nên cảm thấy khó chấp nhận
Với loại ứng dụng này, tôi có khả năng quyên góp hơn là trả tiền cho bản premium. Obsidian đã vận hành tốt với mô hình đó
Tôi không nghĩ quyền truy cập sớm vào tính năng có giá trị lớn, nhưng có nhiều người đã trả tiền để ủng hộ công việc phát triển
Ngoài ra, tôi nghĩ cấu trúc có một hệ sinh thái mã nguồn mở lớn xung quanh một sản phẩm lõi đóng sẽ tạo ra lý do để mọi người trả tiền
Giá mà bài viết có vài ví dụ thì tốt hơn
Tôi không dễ nghĩ ra ai đang làm distro trong khi thật ra nên làm ứng dụng. Cố gượng thì có lẽ LinuxCNC? Nhưng cái đó có yêu cầu kernel cụ thể nên một distro tùy chỉnh có khi lại phù hợp hơn
Tôi không thật sự hiểu việc một distro phái sinh của phái sinh chỉ được phát hành kèm một môi trường desktop khác
Thay vì nói “Đừng làm distro Linux nữa, hãy làm ứng dụng”, tôi nghĩ tốt hơn là ngừng nghe những người muốn chỉ đạo người khác nên làm gì và không nên làm gì
Dù vậy, bản thân thông điệp và thông tin thì tốt
Cá nhân tôi có lẽ sẽ nói kiểu “Người dùng Linux không muốn thêm distro nữa. Họ muốn phần mềm”. Ít nhất là với tôi thì vậy
Gần đây tôi đã chuyển từ Mac sang Linux, vì muốn dùng một thiết bị cũ hiệu năng tốt làm máy dùng hằng ngày
Trước đây tôi cũng từng cài Linux trên nhiều máy, nhưng lần này không chỉ là sở thích đơn thuần
Ubuntu hỗ trợ tốt phần cứng và thiết bị ngoại vi của tôi, nhưng app store thì chưa hoàn thiện và có cảm giác bị nhồi nhét gượng ép. Dù vậy, hầu như mọi thứ đều hoạt động đúng như kỳ vọng
Tôi cũng muốn thử Mint, Debian, Arch, nhưng hơi thận trọng vì có vẻ nhiều phần mềm được viết với Ubuntu trong đầu
Cũng có phiên bản Mint dựa trên Debian, nhưng nó gần giống một phương án dự phòng để không phụ thuộc quá chí mạng vào phía Ubuntu
Dạo này, ngay cả khi dùng một bản phân phối khác lạ cũng không phải vấn đề lớn. Vì nếu trình quản lý gói mặc định không cung cấp ứng dụng bạn muốn, bạn có thể dùng AppImage, Flatpak, Snap
Khi dùng Arch, tôi cần làm quen với những giả định của mọi người dựa trên Ubuntu, nhưng phần lớn chỉ là vá các tệp cấu hình hoặc đặt biến môi trường
Những thứ đó là kỹ năng hữu ích và có thể mang sang dùng ở nơi khác
Tôi nghĩ giá mà mình đã thử nó sớm hơn
Không hiểu vì sao ai đó lại làm vậy. Khó hơn, và người dùng Linux sẽ không trả tiền cho những thứ không đáng để trả tiền