1 điểm bởi GN⁺ 2023-09-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trải nghiệm né tránh tin tức cá nhân dần dẫn tới tin công nghệ, và sau khi liên tục cảm thấy bất lực trước những thay đổi tiêu cực lặp đi lặp lại, tác giả quyết định tự làm một trình duyệt
  • Trên Hacker News, tác giả liên tục bắt gặp những xu hướng như cập nhật ngoài mong muốn, tăng phí thuê bao, thu thập dữ liệu cá nhân, bàn luận về việc cấm mã hóa, và kiểm soát hệ sinh thái trình duyệt
  • Lần này, thay vì chỉ né tránh, tác giả thử phản ứng nhỏ bằng cách viết mã và công khai nó với tư cách là một lập trình viên
  • Tác giả thừa nhận khả năng dự án hoàn thành hoặc trở thành trình duyệt phổ biến là thấp, và nếu không nhận được hỗ trợ thì có thể sớm phải dừng lại
  • Tác giả hy vọng một dự án trình duyệt công khai, phi thương mại có thể truyền cảm hứng cho người khác và dẫn tới nhiều dự án thay thế hơn

Quá trình việc né tránh tin tức dẫn đến phát triển trình duyệt

  • Khoảng 10 năm trước, khi thường xuyên lái xe đến chỗ khách hàng, tác giả hay nghe Business News Radio (BNR) hoặc Radio 1 của Hà Lan, nhưng rồi một ngày tắt radio đi và không còn muốn nghe tin tức nữa
  • Tác giả cảm thấy trên tin tức chỉ lặp đi lặp lại những điều tồi tệ như chiến tranh, tham nhũng, và cho rằng với tư cách cá nhân thì không có cách nào giải quyết những vấn đề đó
  • Từ đó, tác giả tránh nghe, xem và lướt tin tức trên Internet; khi bản tin 8 giờ bắt đầu thì đổi kênh hoặc rời khỏi căn phòng đang phát tin tức
  • Tác giả cho rằng rồi những tin quan trọng cũng sẽ đến qua người khác, nên ngoài tin chung chỉ tiếp cận hạn chế một số subreddit trên Reddit và tin công nghệ

Cảm giác bất lực lặp lại cả trong tin công nghệ

  • Tác giả tiếp cận tin công nghệ khoảng 98% thông qua Hacker News của Y Combinator, nhưng theo thời gian, cảm giác từng có với tin tức phổ thông 10 năm trước lại lớn dần lên
  • Những vấn đề lặp đi lặp lại mà tác giả gặp là cập nhật ngoài mong muốn, thất hứa, tăng phí thuê bao, bị doanh nghiệp thâu tóm, cố thu thập thêm dữ liệu cá nhân, v.v.
  • Tác giả cũng xem xu hướng chính phủ muốn cấm mã hóa với lý do tội phạm xâm hại trẻ em là một phần của cùng vấn đề đó
  • Trình duyệt trở thành mục tiêu đặc biệt quan trọng vì đó là nơi gần như mọi người trên thế giới dành thời gian
    • Nếu chính bản thân trình duyệt hiển thị quảng cáo, thì các trình chặn quảng cáo vốn chặn quảng cáo trên website có thể sẽ khó đối phó hơn
    • Đã từng có trường hợp dùng tiện ích mở rộng chỉ dành cho một trình duyệt cụ thể khiến website khó dùng trên trình duyệt khác, và tác giả cho rằng nếu xuất hiện cách né tránh vấn đề độc quyền thì chuyện này có thể lặp lại

Lý do tự làm và kỳ vọng thấp

  • Lần này, thay vì chỉ đơn thuần né tránh, tác giả cho rằng với tư cách lập trình viên mình có thể tự phát triển trình duyệt và chia sẻ mã nguồn
  • Có hai lý do để quyết định làm trình duyệt
    • Một nỗ lực phản đẩy lại, dù chỉ theo cách rất nhỏ
    • Lý do cá nhân là từ lâu đã muốn tự tay làm một trình duyệt
  • Tác giả không đặt nhiều kỳ vọng vào dự án
    • Không kỳ vọng nó sẽ hoàn thành
    • Cho rằng nếu không có người hỗ trợ thì nó có thể sớm chết yểu
    • Không kỳ vọng nó sẽ trở thành trình duyệt thống trị có thể đánh bại các trình duyệt lớn hiện có
  • Điều tác giả mong muốn là nó được mở ra vì mục đích phi thương mại, để người khác có thể lấy cảm hứng và tạo ra dự án của riêng mình
  • Có thể xem tiến độ dự án tại bài viết cập nhật trên codemusings.nl
  • Kho lưu trữ của dự án nằm tại jaytaph/gosub-browser

1 bình luận

 
GN⁺ 2023-09-23
Ý kiến trên Hacker News
  • Tôi là OP. Cảm ơn mọi bình luận tích cực/tiêu cực/trung lập; xin bổ sung vài điều: đúng là đã có nhiều dự án trình duyệt có thể đóng góp và làm vậy hiệu quả hơn, nhưng như thế thì rốt cuộc chỉ còn lại vài trình duyệt. Tôi muốn có nhiều trình duyệt để mọi người có lựa chọn
    Đây rõ ràng là một dự án cá nhân. Ngay cả nếu không phải vì chán ngán ngành công nghệ thì tôi vẫn có thể đã bắt đầu làm việc này, nhưng tôi tức giận trước cảm giác bất lực rằng mình không thể thay đổi gì, và đây là cách tôi thử làm điều gì đó. Tôi không kỳ vọng sẽ hoàn thiện được một trình duyệt thực sự. Tôi mong mọi người nhìn vào mã của tôi rồi cười, hoặc có được ý tưởng tốt hơn. Ví dụ, nếu thuật toán tokenizer và parser HTML5 được giải thích từng bước như trên trang whatwg, thì ai cũng dễ tự viết parser HTML5 của mình hơn. Nếu Google hay Microsoft dựa vào sức mạnh thị trường để tạo ra một HTML5 tùy biến dạng đóng, chẳng hạn như ghtml, thì ai có thể ngăn được? Lý do tôi muốn bắt đầu từ con số không là vì tôi muốn hiểu rõ hơn những khó khăn kỹ thuật ở tầng thấp

    • Thái độ “tôi tức giận vì chẳng thể làm gì, và đây là cách tôi thử làm điều gì đó” quý như vàng, và thật sự là thái độ có thể thay đổi thế giới
      Tôi cũng đồng cảm với nhận xét về sự khốn khổ của “tin tức”. Trong chiến tranh tâm lý, chuyện này được gọi là làm suy giảm tinh thần (sapping). Trước đây, kẻ thù dùng tuyên truyền để bẻ gãy ý chí kháng cự và khiến người ta bất lực; ví dụ kinh điển là Lord Haw-Haw. https://en.wikipedia.org/wiki/Lord_Haw-Haw
      Ngày nay, các kênh tin tức chính thống và những gã khổng lồ công nghệ dường như đang cố giữ mọi người trong trạng thái tuyệt vọng và bất an thường trực. Diễn ngôn về công nghệ cũng giống như một hố sâu của sự hoài nghi, né tránh, phủ định, cam chịu và bất lực học được; gần đây tôi đã làm nhiều phỏng vấn và phân tích cảm xúc, kết quả thật khủng khiếp. Tôi có cảm giác bản thân từ “tech” đang dần trở thành đồng nghĩa với “kháng cự là vô ích”. Làm điều gì đó không phải vì kỳ vọng thành công, mà để nêu gương và giữ cho chính mình còn tỉnh táo, là phản ứng tích cực và nhân văn nhất
    • Việc phải viết một câu trả lời như thế này trên ‘hacker’ news tự thân đã kỳ lạ rồi, nhưng cứ làm điều mình muốn là được. Có người làm mộc, sửa xe, chơi game; có người thích lập trình. Tôi cũng có nhiều dự án phụ bắt đầu vì nhiều lý do khác nhau, và tất cả đều vui. Chúc may mắn và hãy tận hưởng. Biết đâu nó có thể trở thành điều gì đó lớn hơn
    • Bắt đầu với thái độ đây là một dự án cá nhân là rất tốt
      Nói theo kiểu Linus Torvalds, khi làm với tinh thần “không định tạo ra thứ to lớn và chuyên nghiệp như GNU, mà là thứ cho chính tôi”, bạn có thể đạt được nhiều thứ với ít nỗ lực hơn rất nhiều. Làm như vậy cho phép thỏa hiệp thực dụng, và dù là để học hay để dùng thật, bạn có thể đi tới một thứ hữu ích cho bản thân với nỗ lực nhỏ hơn nhiều so với khi làm một “sản phẩm”. Nhiều dự án cá nhân của tôi cũng bắt đầu từ việc phát hiện những dự án cá nhân nhỏ như vậy, tái sử dụng một phần rồi đi theo hướng hoàn toàn khác. Nhặt một dự án nhỏ “đủ gần” dễ hơn nhiều so với cắt gọt hoặc điều chỉnh một con quái vật khổng lồ đầy đủ tính năng. Độ phức tạp của trình duyệt phần lớn đến từ việc phải hỗ trợ mọi trang web và mọi kịch bản sử dụng, nhưng nếu làm cho chính mình, tôi có thể tập trung vào việc khiến các trang tôi quan tâm chạy đủ tốt, nhờ đó vấn đề giảm đi rất nhiều. Tôi mong nhiều người hơn thử sức với những dự án “bất khả thi”. Dù toàn bộ chưa hữu ích ngay cho người khác, một phần vẫn có thể hữu ích, và đôi khi từ một dự án cá nhân nhỏ lại xuất hiện thứ lớn hơn, như Linux
    • Cứ bỏ qua nhiễu đi. Trên HN đôi khi có quá nhiều tâm lý cua trong xô
      Nếu chỉ cần một nửa thời gian người ta dùng để nói rằng dự án của ai đó là vô dụng và phí thời gian được dùng vào việc mang tính xây dựng, thế giới hẳn đã có nhiều dự án tuyệt vời và thú vị hơn rất nhiều. Thất bại trong một việc táo bạo và tham vọng vẫn tốt hơn là hoàn toàn không thử
    • Tôi mong nhiều người hơn thử triển khai trình duyệt. Có nhiều bình luận nói đó là một nhiệm vụ khổng lồ, và thực tế có thể đúng là vậy, nhưng điều đó không có nghĩa là nó tệ đến thế
      Bạn không cần triển khai mọi tính năng của trình duyệt web hiện đại. Không cần những thứ như Battery API, Game Controller API, USB; hãy tập trung vào những phần quan trọng là HTML, CSS, JS. Tệ nhất thì bạn cũng học được điều mới. Chúc dự án may mắn
  • Câu “tôi không kỳ vọng gì cả, cũng không kỳ vọng sẽ hoàn thành, nếu không có ai giúp thì đây sẽ là một dự án sớm chết, tôi không kỳ vọng nó trở thành trình duyệt thống trị để đánh bại các tay chơi khổng lồ trên thị trường” giống với thông báo đầu tiên về Linux mà Linus từng đăng lên comp.os.minix
    Đó là bài bắt đầu bằng “Xin chào mọi người đang dùng minix. Tôi đang làm một hệ điều hành tự do cho máy clone AT 386(486). Chỉ là sở thích thôi nên sẽ không lớn và chuyên nghiệp như gnu…”, rồi nói rằng ông đã port bash và gcc, có vẻ vài tháng nữa sẽ có thứ gì đó dùng được, không hứa sẽ triển khai nhưng hãy cho biết các tính năng mong muốn. Cuối bài còn nói rằng không có mã minix nào cả, có hệ thống tệp đa luồng nhưng không có tính di động, và có lẽ sẽ không hỗ trợ gì ngoài đĩa cứng AT

    • Ông ấy từng nói “có lẽ sẽ không hỗ trợ gì ngoài đĩa cứng AT”, vậy mà giờ chúng ta đang cài Linux trên tàu vũ trụ
      Không ai biết một dự án sẽ đi xa tới đâu. Và nếu bạn làm vì lý do của riêng mình, thì theo một nghĩa nào đó, điều đó cũng không quan trọng
    • Đọc thông báo xa xưa đó có cảm giác thật điên rồ, vậy mà cuối cùng nó đã đi tới ngày hôm nay. Việc Linus vẫn đang dẫn dắt dự án một cách tận tâm cũng thật đáng kinh ngạc, và giờ Linux đã trở thành hệ điều hành nền tảng của Internet. Phòng máy chủ của gần như mọi tập đoàn lớn hầu hết đều gồm các máy chủ chạy Linux hoặc các bản phái sinh nội bộ
  • Tôi không quen với bầu không khí tiêu cực như vậy trên HN về trình duyệt và web mở. Tôi xem đây là một nỗ lực rất đáng giá, bất kể có thành công hay không
    Ngay cả khi kết quả chỉ là một trình duyệt nửa vời không bị chi phối bởi động cơ của các gã khổng lồ công nghệ, nó vẫn có thể hữu ích nếu một ngày nào đó chúng ta phải ngừng phụ thuộc vào Firefox. Tôi rất thích Firefox nên hy vọng ngày đó không đến, nhưng tôi nhận ra rằng khi truy cập web, trình duyệt của mình là một dạng nút thắt cổ chai. Có những website khác để xem cùng nội dung, cũng có những thương hiệu máy tính khác để dùng, nhưng ở giữa thì luôn là Firefox. Cũng có các trình duyệt khác, nhưng phần lớn trông như dựa trên Googlium hay bất cứ cái tên nào của nó ngày nay. Vì vậy tôi chúc dự án may mắn và thành công, và dự định đăng ký RSS feed để thỉnh thoảng theo dõi dự án

    • Chẳng phải gần như cứ mỗi khi trên HN có một thread về trình duyệt thì sẽ xuất hiện chừng cả tá phản hồi được upvote nhiều, khẳng định rằng tạo một trình duyệt mới là bất khả thi sao?
      Thực ra cũng có bằng chứng cho thấy điều đó là khả thi. Ladybird được xây dựng từ đầu, ban đầu thậm chí còn tự viết cả thư viện chuẩn C++, và sau 3–4 năm làm bán thời gian, giờ đã chạy được Discord dù còn chậm. Hiện dự án cũng có lập trình viên toàn thời gian. Với GoSub, nhìn vào cargo.lock thì có vẻ họ không định triển khai mọi thứ từ đầu; những thứ như bộ giải mã ảnh nhiều khả năng sẽ dùng sẵn, nên có tiềm năng phát triển nhanh hơn
  • Ngày nay, “viết trình duyệt từ đầu” thực chất gần như có nghĩa là triển khai một hệ điều hành di động trong một chiếc hộp, tức nền tảng web, và làm cho nó tương thích với những thứ Google quyết định thêm vào trình duyệt của họ
    Trình duyệt có quá nhiều tính năng và API, và việc bắt kịp các thay đổi tính năng liên tục cùng sức thống trị của Google khó đến mức ngay cả Microsoft cũng không làm nổi. Có một dự án cá nhân liên quan là Tersenet. https://github.com/runvnc/tersenet
    Nó gần giống một khái niệm hơn là có nhiều phần triển khai, nhưng các yêu cầu được chủ ý chọn để mọi người có thể triển khai. Nó ít phức tạp hơn rất nhiều so với một trình duyệt web đầy đủ. Cũng có một cuộc thảo luận liên quan với GPT-4. https://chat.openai.com/share/16d02b78-f876-4c87-949a-a60b4f...
    Dự án Gemini thực sự tồn tại và mang tính thực dụng cũng có liên quan. https://geminiprotocol.net/ Nó đã truyền cảm hứng cho ý tưởng Tersenet

    • Không nhất thiết là vậy. Nếu giới hạn phạm vi ở mức trình xem tài liệu siêu văn bản, mọi thứ bỗng trở nên khả thi. Rất nhiều tính năng là những thứ kiểu PWA mà chẳng ai muốn và cũng không được dùng vào việc tốt
      WebSQL, IndexedDB, service worker, WebGL, WebGPU, WebBluetooth, WebRTC — cứ coi như tất cả không tồn tại là được. 99% website thực tế, tức các trang web không phải “ứng dụng” web, sẽ không mất chức năng nào
    • Ladybird là một dự án còn rất trẻ nhưng đang tiến triển với tốc độ khá ổn. Tất nhiên cũng cần tính đến việc lập trình viên chính có khá nhiều kinh nghiệm trong lĩnh vực này
      Cá nhân tôi muốn có thêm các engine thay thế ngoài sự đơn canh của Blink và họ hàng WebKit của nó, cũng như Gecko/Quantum. Sẽ tốt nếu có thứ gì đó thay thế vị trí mà KHTML từng nắm trước khi bị WebKit hấp thụ, hoặc một lựa chọn nguồn mở khác để thử nghiệm
    • Nói rằng phải tương thích với những thứ Google quyết định thêm vào trình duyệt của họ là quá lời. Có rất nhiều người đáng kính vẫn duy trì trang chủ cá nhân bằng HTML đơn giản hơn nhiều, và news.ycombinator.com cũng được yêu thích vì giữ dáng vẻ cổ điển
      Tôi mong những người đồng tình mạnh với ý tưởng này sẽ thống nhất được một tập con để sử dụng, và tôi vẫn có thể hài lòng với một trình duyệt không làm mọi thứ mà trình duyệt của Google làm. Tôi dùng uMatrix để tắt khá nhiều tính năng của Google, không bao giờ đưa miền google.com vào danh sách cho phép, và vẫn dùng như để chứng minh rằng thế giới không sụp đổ. Số site không hoạt động chỉ là tương đối ít
    • Tại sao nhất thiết phải làm những gì Google làm? Phần lớn website tuân theo HTML và ECMAScript. Chẳng phải cốt lõi của dự án này là tách nhịp khỏi những việc các gã khổng lồ công nghệ đang làm sao?
      Đại đa số website không muốn tuân theo những thứ mới được tạo ra dành riêng cho Google như công nghệ quảng cáo, AMP, DRM
    • Thứ còn thiếu để hệ sinh thái trình duyệt trở nên phong phú hơn có lẽ là một runtime/interpreter JavaScript độc lập, dạng mô-đun tương tự Java? Java có nhiều JVM. https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
      Có lẽ Mozilla và các bên khác nên tạo ra một “VM” JavaScript độc lập mà mọi người đều có thể dùng
  • Với tư cách là người từng hoàn toàn không biết trình duyệt “thật” hoạt động ra sao nhưng vẫn quyết định tự viết một trình duyệt, thậm chí còn làm cả engine layout tùy chỉnh, tôi chỉ muốn nói là cứ làm đi
    Việc nhìn thấy một website được render bằng mã của chính mình là điều rất đáng công, dù mã hay đầu ra có lộn xộn đến đâu. Dự án của tôi đã được khoảng hai năm rưỡi, và giờ render HN cùng các blog đơn giản cũng tạm ổn. Nếu hỏi nó có khách quan tốt hơn w3m — thứ ban đầu tôi định thay thế — hay không thì không hẳn, nên tôi vẫn quay lại dùng w3m cho một số tác vụ. Dù vậy, nó đã hữu ích cho những việc tôi không ngờ tới, tôi học được rất nhiều về lập trình, và dù sao thì việc nó chạy được cũng thật tuyệt. https://sr.ht/~bptato/chawan

  • Tạo một trình duyệt nghĩa là tạo rendering engine và layout engine. Không phải là không làm được, nhưng đó là một nhiệm vụ khá lớn
    Tuy vậy cũng có nhiều việc có khả năng đem lại kết quả hơn. Có thể port Servo sang Nyxt Browser, hoặc fork WebKit/Servo/Gecko để loại bỏ các chuẩn web xâm lấn, có hại cho người dùng mà các công ty quảng cáo đã nhồi vào trong 10 năm qua. Dù sao nếu đó là những việc phải làm khi viết từ đầu, thì thay vì bắt đầu từ con số không, nên bắt đầu từ một cộng đồng hiện có vốn đã sẵn sàng cùng làm việc

    • Vì vậy tôi đã chọn WebKit. https://github.com/tholian-network/retrokit vì hóa ra Servo không còn module hóa như trước nữa
      Gecko gần như là định nghĩa của một khối monolith, nên gần như không thể loại bỏ bề mặt tấn công; ngay cả Tor cũng dùng cách thay thế stub tệ hại, cứ mỗi lần API nội bộ hay bridge thay đổi là lại vỡ. Tuy nhiên, một mình theo kịp upstream là điều bất khả thi, nên cần người đóng góp và maintainer. Từ góc nhìn an ninh mạng, tôi đã cố gắng ghi tài liệu bề mặt tấn công nhiều nhất có thể, đồng thời ghi lại các việc còn lại và những thứ cuối cùng cần loại bỏ. https://github.com/tholian-network/retrokit/blob/main/SECURI...
      Có thể khá chủ quan vì tôi muốn dùng RetroKit làm webview cho Browser Stealth của mình. Browser Stealth hoạt động như một proxy lọc, scraper và cache phi tập trung. https://github.com/tholian-network/stealth hiện đang được viết lại bằng golang
    • Tôi đang duy trì một thư viện layout web được thiết kế để tích hợp vào phần mềm khác. https://github.com/DioxusLabs/taffy
      Nó cần được kết hợp với các text layout engine như https://github.com/pop-os/cosmic-text, và hiện vẫn chưa hỗ trợ mọi tính năng. Những tính năng tiêu biểu còn thiếu hiện nay là float, display: inline-block, box-sizing: content-box, position: static. Nhưng nó đã hỗ trợ Block, Flexbox, CSS Grid và đang bổ sung thêm
    • Đúng là một nhiệm vụ nặng nề, nhưng tôi không nghĩ vì thế mà nên bỏ cuộc. Ở một số khía cạnh, ngày nay thậm chí còn dễ hơn trước. Vì giờ đã có các tiêu chuẩn toàn diện
      Đúng là việc lớn, nhưng cũng chưa phải là điều bất khả thi nhất đối với một nhóm nhỏ tận tâm
    • Rendering và layout engine đâu nhất thiết phải vượt qua mọi ACID test ngay từ đầu? Cứ xây dần lên là được
      Có thể bắt đầu bằng việc render các website HTML đơn giản một cách hợp lý; cũng không cần vội, và không có quy tắc nghiêm ngặt nào bắt phải triển khai mọi ngóc ngách của chuẩn. Trình duyệt web và web mang tính con người một cách rực rỡ
    • Chỉ khi muốn viết từ đầu thì mới phải tự viết rendering và layout engine. Trình duyệt chủ yếu là một ứng dụng hướng tới người dùng, chứ không phải chính các bánh răng bên trong
      Lấy các engine hiện có, nối chúng lại, module hóa đủ để lúc nào cũng có thể thay thế, thì vẫn là một trình duyệt đúng nghĩa. Cá nhân tôi thấy mọi người ở đây dường như quá tập trung vào các bánh răng bên trong, trong khi thực tế ngoài rendering/layout/scripting ra, chúng ta còn cần giao diện và các thành phần khác tốt hơn
  • Ủng hộ bạn. Hãy tiếp tục thử
    Tôi đã triển khai một phần rất nhỏ của thuật toán ORC Solver bằng Python, và dùng wxWidgets để render. Tôi dùng API phạm vi văn bản của wxWidgets để tính chiều rộng văn bản. Whitepaper của ORC Solver ở đây. https://yuejiang-nj.github.io/Publications/2020CHI_ORCSolver...
    Tôi đang suy nghĩ cách triển khai branch and bound, nên nếu có thông tin liên quan thì sẽ rất hữu ích. Có lẽ phải nghiên cứu codebase của TeX để xem thuật toán dàn chữ, và việc dùng thư viện JavaScript Masonry cho bin packing layout cũng rất thú vị

  • “Nếu muốn HTML của ta, ta sẽ cho! Hãy tìm đi! Ta đã để mọi thứ trên đời ở đó”
    “Và thế là các hacker hướng tới HyperText Line để theo đuổi giấc mơ, còn thế giới bước vào Kỷ nguyên Đại Trình duyệt thực sự!”
    Suốt nhiều năm, tôi tin rằng trình duyệt là ngọn núi không thể vượt qua, nhưng giờ dường như ngày càng nhiều người tin rằng chúng ta có thể làm được. Phân tích trong 2 giây thì tôi thấy xu hướng này xuất hiện vì những người tạo trình duyệt mới không cố bắt chước và cạnh tranh với những con quái vật khổng lồ hiện có, mà vì họ muốn thay đổi web. Tôi thích điều đó

  • Về phần chính trị trong bài viết, thế giới đang đổ vỡ, và chỉ đọc những tin tức đổ vỡ là một việc mệt mỏi. Tuy vậy, tôi cho rằng tách mình khỏi thực tế để trở nên “phi chính trị” là từ bỏ nhân loại, tức là từ bỏ chính con cái mình, cháu mình, và con cái của những người bạn thân nhất
    Không nhất thiết phải thay đổi cả thế giới; chỉ cần những thay đổi nhỏ trong cộng đồng của mình cũng là đủ. Đặc biệt với tư cách lập trình viên, những gì chúng ta tạo ra có thể ảnh hưởng đến hàng nghìn người trên toàn thế giới và thay đổi hướng đi. Đôi khi tôi tự hỏi liệu tình hình có khác đi không nếu mọi người chỉ đầu tư 3–5% thời gian của mình vào việc hỗ trợ cộng đồng và một hình thức hoạt động nào đó

    • Tôi hoàn toàn không xem tin tức. Vì 99% là rác thiên lệch, thường còn không đúng sự thật, và làm ô nhiễm tâm trí. Nhờ vậy, cuộc sống và sức khỏe tinh thần của tôi đã tốt hơn nhiều
      Dù sao thì chẳng có gì tôi đọc trên tin tức sẽ thay đổi cách tôi bỏ phiếu, mà đó có lẽ lại là lý do tốt nhất để xem tin tức
    • Tôi chắc chắn đồng ý với việc tham gia cộng đồng. Dọn tuyết trước nhà cho một người hàng xóm lớn tuổi là điều tốt, vì đó là thực sự làm một điều gì đó
    • Nhìn chung tôi đồng ý. Vài năm trước tôi đã quyết định ngừng nghe tin tức, nhưng đó là sau khi tôi quyết định không sinh con. Việc những người sinh con lại bịt tai trước mọi thứ có vẻ là sai
      Nói cách khác, tôi đã từ bỏ thế giới. Nhưng con cái của người khác không phải trách nhiệm của tôi. Tôi cố làm “điều đúng đắn” ở mức như người khác, nhưng không hơn thế. Trước đây tôi từng trăn trở về những điều này, cố giảm dấu chân cá nhân, nghĩ đến tính bền vững và các thế hệ tương lai, nhưng tôi đã mất hy vọng. Cảm giác như đang chiến đấu ngược dòng. Giờ tôi chỉ cố để dấu chân của mình không lớn hơn mức trung bình và đối xử tốt với những người xung quanh
    • Việc tách khỏi ngành công nghiệp tin tức không tự động đồng nghĩa với tách khỏi thực tế. Ít nhất là tôi hy vọng vậy. Tôi chỉ tiêu thụ tin tức phi kỹ thuật khoảng mỗi tuần một lần
  • Nếu Rust là bắt buộc, có lẽ sẽ hữu ích hơn nếu học bằng cách đóng góp cho Servo, bắt đầu từ những PR nhỏ. https://github.com/servo/servo
    Tuy vậy, tôi hiểu vì tôi cũng từng làm một dự án “từ đầu” do thấy khó đọc codebase hiện có hoặc nghĩ rằng mình có thể làm tốt hơn. Mỗi người có cách riêng

    • Tự viết một phiên bản đồ chơi của chương trình là một cách tuyệt vời để hiểu phiên bản lớn hơn
    • Rust và Servo khởi đầu cùng nhau, nên Servo có rất nhiều mã từ trước Rust 1.0, và do ảnh hưởng đó mà có những phần có phong cách chưa thật lý tưởng
      Tương tự, Servo được thiết kế để thay thế một phần của trình duyệt Firefox, nên nó phải khớp với cái lỗ “hình Gecko”. Ví dụ, vì lý do tương thích với phần còn lại của Firefox, nhiều chỗ dùng chuỗi UTF-16. Nếu là bây giờ, có lẽ có thể viết lại Servo bằng Rust hiện đại để khiến nó nhỏ hơn, gọn hơn, và có thể nhanh hơn
    • Servo là một dự án đáng kinh ngạc và tôi cũng thích những gì Mozilla đã làm, nhưng rốt cuộc về mặt tài chính chẳng phải họ vẫn gắn với Google sao?