- Hacker News trước đây được triển khai bằng Arc, một ngôn ngữ thuộc họ Lisp, nhưng trong vài tháng gần đây đã chuyển sang SBCL(Steel Bank Common Lisp)
- Mục tiêu chính của lần chuyển đổi này là cải thiện hiệu năng và mở ra khả năng hỗ trợ đa lõi
- Việc phát triển Lilt, trình chuyển đổi từ Arc sang JS, và Clarc, trình chuyển đổi từ Arc sang Common Lisp, đã giúp cấu trúc trở nên bài bản hơn
- Việc công khai mã nguồn của Clarc tương đối dễ, nhưng toàn bộ codebase của HN thì khó công khai vì lý do bảo mật
- Với kiến trúc mới, HN đã chuyển đổi mượt mà, giúp cải thiện trải nghiệm người dùng
Tổng quan
- Hacker News ban đầu được phát triển bằng Arc, một ngôn ngữ thuộc họ Lisp do Paul Graham tạo ra
- Arc được triển khai trên Racket, nhưng trong vài tháng gần đây đã chuyển sang SBCL(Steel Bank Common Lisp)
- Lý do là để cải thiện hiệu năng
Thay đổi về hiệu năng và tính năng
- Từ góc độ sử dụng thực tế, đã xác nhận có cải thiện hiệu năng, chẳng hạn như việc không còn cần phân trang
- Trước đây, các luồng bình luận dài cần phải phân trang, nhưng giờ đã chuyển sang cách tải toàn bộ trong một lần
- Những thay đổi này có được là nhờ Clarc
- Clarc giúp HN có thể vận hành trơn tru trong môi trường đa lõi
- Việc phát triển Clarc đã diễn ra trong nhiều năm và gần đây đang tiến đến giai đoạn hoàn thiện
Cách triển khai và cấu trúc
- Có Lilt để chuyển Arc sang JS, và Clarc để chuyển Arc sang Common Lisp
- Cấu trúc bên dưới của bản triển khai Arc hiện tại đã được thiết kế lại, chia Arc thành nhiều tầng để phát triển
- arc0 được viết bằng ngôn ngữ hệ thống (Racket, JS, CL)
- arc1 được viết trên arc0, còn arc2 được viết trên arc1
- Toàn bộ tính năng được triển khai ở tầng trên (arc2), còn các tầng dưới được giữ ở mức tối thiểu
- Nhờ cấu trúc này, việc tái triển khai Arc trên nhiều runtime khác nhau trở nên dễ dàng hơn
Vấn đề liên quan đến việc công khai mã nguồn
- Việc mã nguồn mở Clarc (bản triển khai Common Lisp của Arc) tương đối dễ
- Có thể thực hiện bằng cách port các bản phát hành Arc hiện có sang Clarc
- Ứng dụng mẫu HN phiên bản đầu đã được bao gồm sẵn, nên không có phần nào đặc thù cho HN hay YC
- Tuy nhiên, toàn bộ codebase của HN có tích hợp nhiều cơ chế bảo mật để ngăn chặn việc bị lạm dụng
- Nếu mã nguồn bị công khai, có nguy cơ những phần này sẽ mất tác dụng
- Việc tách riêng các phần liên quan đến bảo mật là một gánh nặng lớn
2 bình luận
Không biết GeekNews chạy trên công nghệ gì nhỉ haha
Ý kiến Hacker News
Có ý kiến cho rằng Hacker News là ví dụ hoàn hảo về việc triết lý "Worse is better" được áp dụng vào kỹ nghệ xã hội; cuối thập niên 90, Slashdot có nhiều tính năng hơn và phong phú hơn rất nhiều, nhưng yếu tố làm nên thành công của HN là sự tập trung cực độ và hệ thống kiểm duyệt mạnh mẽ
Thực tế không phải toàn bộ Hacker News được viết lại bằng Common Lisp, mà là Arc Runtime được hiện thực lại bằng Common Lisp
Chia sẻ kiến thức nền rằng Arc được hiện thực trên Racket; ban đầu nó bắt đầu từ MzScheme (lúc đầu là phần lõi của PLT Scheme, sau này đổi tên thành Racket), rồi được chuyển sang Racket nhờ đóng góp của một lập trình viên tên kogir
Có ý kiến cho rằng Dang cũng đóng góp vào codebase, và ngoài ra hẳn còn những người khác đã cống hiến rất nhiều năm cho HN; với một số người, cộng đồng HN là cộng đồng internet tồn tại lâu nhất và cũng đem lại nhiều niềm vui nhất cho họ, đến mức dù chỉ là người tham gia bình thường, họ cũng muốn giúp Dang điều gì đó hoặc ít nhất mời ông một ly cà phê
Sau khi đọc mô tả rằng Clarc nhanh hơn nhiều và hỗ trợ multicore tốt hơn, có người bày tỏ sự ngạc nhiên khi biết HN trước đây chạy hoàn toàn trên single-core
Với tư cách là người vận hành một website được xây dựng bằng mã nguồn mở Arc, có người tha thiết mong được dùng Clarc
Một lời cảm thán rằng sbcl (Steel Bank Common Lisp) thực sự sẵn sàng cho môi trường production; cũng có suy đoán rằng phía Racket có lẽ đã không sửa lỗi vì không xem Arc là thứ để dùng thực chiến; thêm một nhận xét rằng chưa từng nghe đến dự án nào khác dùng Racket trong production, đồng thời chia sẻ sự yêu thích dành cho Armed Bear (nhờ hệ sinh thái thư viện JVM mạnh mẽ) cùng liên kết Armed Bear Common Lisp
Có người chỉ ra sự gượng gạo về mặt ngôn ngữ trong câu "HN runs on top of SBCL since a few months", và đề xuất tiếng Anh đúng nên là "HN has been running on top of SBCL for a few months now."
Có người tò mò liệu Paul Graham hay Robert Morris có còn tham gia phát triển hay không; họ đã đọc lướt toàn bộ bài nhưng không thấy nhắc đến, đồng thời muốn xem Arc bổ sung điều gì lên trên CL (Common Lisp), kèm liên kết arclanguage.org
Một đánh giá tích cực rằng Common Lisp thực tế và hữu dụng hơn Racket rất nhiều, còn SBCL thì đem lại cảm giác gần như ma thuật