1 điểm bởi GN⁺ 2023-07-05 | 1 bình luận | Chia sẻ qua WhatsApp
  • Sourcegraph đã chuyển sang monorepo riêng tư
  • Kho lưu trữ này (sourcegraph/sourcegraph-public-snapshot) là bản sao công khai của kho sourcegraph/sourcegraph ngay trước thời điểm chuyển đổi

1 bình luận

 
GN⁺ 2023-07-05
Ý kiến trên Hacker News
  • Nói với tư cách CEO của Sourcegraph, giờ đây Sourcegraph được tách thành hai sản phẩm riêng biệt là tìm kiếm mãCody
    Cody vẫn là mã nguồn mở theo giấy phép Apache 2 trong thư mục client/cody* của kho lưu trữ, và sắp tới sẽ được tách ra thành một kho riêng 100% mã nguồn mở
    Nguyên tắc cấp phép là cung cấp công cụ cho lập trình viên cá nhân dưới dạng mã nguồn mở và tính phí các công ty
    Biến thể mã nguồn mở với tính năng giới hạn của tìm kiếm mã hầu như không được cả lập trình viên cá nhân lẫn công ty sử dụng, và mức sử dụng tìm kiếm mã Sourcegraph nghiêng về bản dựng chính thức không mã nguồn mở còn nhiều hơn cả các trường hợp như Google Chrome so với Chromium, hay VS Code so với VSCodium
    Việc duy trì hai biến thể là gánh nặng cho đội ngũ kỹ sư trong khi lợi ích mang lại cho người dùng là rất nhỏ
    Giải thích chi tiết hơn có tại https://github.com/sourcegraph/sourcegraph/issues/53528#issu...
    Các thay đổi đã được thông báo trong changelog và PR, và mọi hoạt động phát triển đều diễn ra công khai
    Theo kế hoạch, sau khi tách kho đơn khối lớn này thành kho 100% mã nguồn mở cho Cody và kho không mã nguồn mở cho tìm kiếm mã, công ty sẽ đăng một bài blog trong tuần này
    Đối với mã công khai, có thể tiếp tục dùng miễn phí tìm kiếm mã Sourcegraph tại https://sourcegraph.com, còn với mã riêng tư thì có thể dùng miễn phí trong gói free tier tự lưu trữ
    Tức là lập trình viên cá nhân vẫn có thể chạy tìm kiếm mã Sourcegraph hoàn toàn miễn phí, và khách hàng sẽ không bị ảnh hưởng
    • Sourcegraph chỉ cung cấp image không mã nguồn mở, quy trình build thì trong thời gian dài vừa khó vừa hay hỏng, và ngay cả bản thân ứng dụng phiên bản mã nguồn mở cũng thường xuyên lỗi
      Chỉ cần tìm issue vài phút là ra khá nhiều kết quả liên quan: https://github.com/sourcegraph/sourcegraph/issues/43231, https://github.com/sourcegraph/sourcegraph/issues/43203, https://github.com/sourcegraph/sourcegraph/issues/6790, https://github.com/sourcegraph/sourcegraph/issues/6783
      Nếu chỉ có ít người có thể build, và ngay cả khi build thành công thì cứ vài bản phát hành lại bị hỏng, thì chuyện phiên bản mã nguồn mở có mức sử dụng thấp là điều dễ hiểu
      VS Code và Chromium nhờ tính chất và độ phổ biến của chúng nên dễ build và có thể tìm thấy bản dựng sẵn ở nhiều nơi
      Tôi có thể cài một bản build Chromium “không chính thức” trong kho của bản phân phối, nhưng sẽ không đưa mã của mình vào một bản build Sourcegraph không chính thức do người lạ trên GitHub tạo ra
      So sánh hai bên như vậy là khá thiếu công bằng, và còn có những vấn đề khác đã cản trở việc tiếp nhận mã nguồn mở
      Trong một thời gian, image Docker chính thức của Sourcegraph có kèm giấy phép miễn phí 10 ghế, đủ dùng với nhiều người, nên họ không tìm đến các lựa chọn thay thế như bản build mã nguồn mở
      Việc thông báo thay đổi giấy phép và đóng sản phẩm bằng một khối nhỏ trong file changelog, hoặc khi ai đó nhắc đến vấn đề trong GitHub Issues, không thể xem là thông báo đầy đủ cho những thay đổi như thế này
      Không theo nguyên tắc open-first, giới hạn sản phẩm bằng các plugin chỉ dành cho enterprise như người khác đã nói dưới bài này, không cung cấp bản build mã nguồn mở, và thay đổi giấy phép mà không báo trước, trong khi trước đó lại hưởng lợi từ kiểu marketing miễn phí dễ chịu dựa trên các thuật ngữ mã nguồn mở, là điều khá chua chát
      Đặc biệt là vì hiện nay có quá nhiều công ty làm như vậy do lãi suất
    • Tôi đã thúc đẩy việc đưa SourceGraph vào công ty suốt một thời gian dài, nhưng việc triển khai phiên bản mã nguồn mở gần như bất khả thi nên ngay cả khâu đánh giá cũng bị chặn lại
      Tôi không cho rằng nhận định của Sourcegraph rằng phiên bản mã nguồn mở đã không thành công là sai, và rõ ràng đóng mã nguồn thì dễ hơn nhiều
      Nhưng rốt cuộc đây là phép tính rằng công sức để giữ mở kênh tiếp cận đó không đáng giá bằng số người đi vào qua kênh đó, nên một kênh tiếp cận đang bị đóng lại
      Cũng có khả năng khác. Tôi thiên về việc kênh tiếp cận đó ngay từ đầu đã không được mở đủ rộng để có cơ hội thành công
    • Nếu “tính phí công ty và biến công cụ cho lập trình viên cá nhân thành mã nguồn mở” thì không nên dùng thuật ngữ Open Source
      Đặt ra những hạn chế như vậy thì không còn là mã nguồn mở, và khá dễ thấy là không trung thực
      Giấy phép kiểu này không được OSI phê duyệt
    • Tôi là một trong số ít người đã dùng phiên bản mã nguồn mở và khá thích nó, nên thay đổi lần này thật đáng thất vọng
      Khó khăn của Sourcegraph là nó khó tiếp cận với các lập trình viên làm dự án cá nhân
      Không có gói hosting, và các dự án của tôi không thể dễ dàng công khai thành mã nguồn mở vì lý do từ phía công ty tuyển dụng
      Khi Sourcegraph App ra mắt, tôi thực sự hào hứng vì có thể thử Sourcegraph trên các dự án của mình mà không cần cấu hình tự lưu trữ phức tạp
      Tôi đã làm cho scip-clang chạy được trên dự án dùng Bazel, và cũng thử cấu hình docker-compose trong homelab
      Giờ tìm kiếm mã đã bị gỡ khỏi ứng dụng, lại còn có thêm thay đổi này, nên tôi lo rằng sắp tới sẽ không thể dùng Sourcegraph cho các dự án cá nhân nữa
      Đây là một cơ hội bị bỏ lỡ
      Những lập trình viên cá nhân dùng sản phẩm cho dự án riêng có thể trở thành những người ủng hộ rất mạnh, và chính họ cũng có thể thuyết phục công ty của mình mua sản phẩm
      Nếu có thể thì tôi sẵn sàng trả tiền, nhưng với một cá nhân thì 5.000 USD mỗi năm là khó có thể biện minh
    • Tôi cho rằng tất cả bình luận, bao gồm cả những nội dung chỉ trích ở đây, đều công bằng và có cân nhắc
      Nếu muốn tiếp tục thảo luận sau khi bài đã rời khỏi trang đầu HN, hãy vào Discord https://discord.gg/rDPqBejz93

Nếu muốn trực tiếp chia sẻ phản hồi hoặc bất mãn, hãy cho tôi biết. Nếu không phiền, cũng có thể công khai bản ghi âm

  • Nếu đang tìm một công cụ tìm kiếm mã nguồn open source có thể grep với tốc độ điên rồ trên nhiều kho lưu trữ hoặc một monorepo lớn, thì tôi rất khuyên dùng livegrep: https://github.com/livegrep/livegrep
    Bản demo ở https://livegrep.com/search/linux
    Nó từng được dùng ở Stripe và khá phổ biến; ngay cả khi chỉ tìm trong một kho duy nhất thì nhiều khi livegrep vẫn nhanh hơn ripgrep chạy cục bộ
    Bài viết đánh giá: https://www.alexdebrie.com/posts/faster-code-search-livegrep...
    Hồi tưởng về ảnh hưởng của tác giả nelhage: https://blog.nelhage.com/post/reflections-on-performance/, bài viết về kiến trúc: https://blog.nelhage.com/2015/02/regular-expression-search-w...

    • https://oracle.github.io/opengrok/ cũng là open source, và nhanh, hữu ích ngay cả với nền mã nguồn khổng lồ kiểu như gộp toàn bộ Android với kernel Linux lại
    • Cũng có https://github.com/boyter/cs đang được phát triển với mục tiêu quy mô nhỏ hơn
      Miễn là không quá lớn thì nó cũng hoạt động tốt trên nhiều kho lưu trữ
    • livegrep đúng nghĩa là một phiên bản grep trên web khá ổn
      Nhưng rõ ràng nó không phải là thứ có thể thay thế Sourcegraph trong việc thực sự hiểu code nền, lần theo đường đi của code và tìm kiếm tham chiếu
  • Không nên xây startup với giả định rằng sản phẩm của người khác sẽ mãi mãi thiếu sót
    Với đợt cải tổ tìm kiếm gần đây của GitHub, có khả năng Sourcegraph đã mất đi tính liên quan
    Tìm kiếm GitHub ngày xưa dùng một thuật toán gần như tệ nhất có thể
    Nó vứt bỏ mọi dấu câu và khoảng trắng, chỉ tìm trên định danh, không hỗ trợ pattern, không tìm bằng dấu ngoặc kép, và gần như meta-argument duy nhất dùng được là filename:xyz
    Giờ GitHub đã cải thiện tính năng tìm kiếm cơ bản nên Sourcegraph có thể gặp rủi ro
    Tôi từng dùng Sourcegraph ở Lyft, mà hồi đó Lyft gần như có ngân sách vô hạn để đốt vào công cụ phần mềm; còn ở Databricks thì chúng tôi cài bản open source nhưng chẳng ai quan tâm

    • Tìm kiếm GitHub chỉ khiến Sourcegraph trở nên vô nghĩa khi toàn bộ code đều được host trên GitHub
      Tôi khá chán việc giải pháp chỉ dành cho GitHub lại được tâng bốc như “tiêu chuẩn ngành”
      Các vendor chỉ tung ra tích hợp với những sản phẩm chỉ chạy trên GitHub cũng vậy
      Git là một giao thức phi tập trung, nên làm ơn hãy đối xử với nó như thế
    • Dù tìm kiếm GitHub có bớt tệ hơn, nó vẫn kỳ cục và chưa tốt, nên đến giờ tôi vẫn thường xuyên tải kho GitHub về rồi đơn giản grep
    • Tôi không nghĩ tìm kiếm GitHub sẽ thay thế được Sourcegraph
      GitHub không miễn phí, đặc biệt là với các tổ chức riêng tư lớn, và khả năng tìm kiếm của Sourcegraph tốt hơn GitHub rất nhiều
    • Tôi tự hỏi liệu ngách doanh nghiệp không dùng GitHub bản cloud hay GitLab v.v. có còn tồn tại không
      Theo tôi hiểu thì GitHub bản on-premise không có kế hoạch đưa tính năng tìm kiếm code mới vào
  • Tôi cũng tò mò không biết có ai thực sự dùng bản mở hay không
    Tôi nhớ mang máng đã xem qua nó 2~3 năm trước, và tất cả những tính năng thật sự thú vị đều đã bị lược bỏ
    Giá enterprise khi đó vào khoảng 100 USD mỗi nhà phát triển mỗi tháng, hoàn toàn vô lý, và rõ ràng là họ chỉ nhắm đến những khách hàng lớn có ngân sách vô hạn
    Có vẻ giờ giá đã đổi và “Enterprise Starter” là từ 5.000 USD mỗi năm, nhưng dù có rất nhiều mục liệt kê thì những giới hạn thực tế là gì vẫn cực kỳ mơ hồ
    Tôi thực sự quan tâm đến sản phẩm này và nó có thể là một bổ sung tốt cho bộ công cụ của chúng tôi, nên thật đáng tiếc khi giá cả lại thiếu minh bạch như vậy

    • Bản open source không có image Docker chính thức dựng sẵn nên phải tự build, và bản build open source đã bị hỏng trong thời gian dài
      Họ từng hứa 1~2 năm trước là sẽ sửa hoặc cung cấp image open source chính thức, nhưng điều đó đã không xảy ra
      Cuối cùng có một người đã tạo một release train hoạt động trên GitHub và phân phối container open source, và trên Docker Hub đã ghi nhận hơn 10 nghìn lượt pull
      Với một image không chính thức thì đó là con số khá lớn
      Nếu một công cụ bên thứ ba không phải hạ tầng cốt lõi mà lại bắt phải liên hệ sales, tôi thường sẽ tránh
      Đừng bắt người ta lãng phí thời gian công ty để làm việc với sales chỉ vì vài giấy phép; cứ đưa ô nhập số lượng và nút mua là được
      Mức độ tin tưởng của tôi vào Sourcegraph cũng giảm đi phần nào, vì có vẻ như họ thay đổi định hướng, giá cả và quy tắc nhiều lần trong một năm
    • Tôi đã cài bản open source trong công ty cho vui và đồng bộ khoảng 750 kho lưu trữ
      Tôi áp dụng vài bản vá để hỗ trợ OAuth2 proxy và cũng gỡ telemetry
      Phần mềm tự thân thì rất tốt, rất nhanh và hoạt động đúng như mong đợi
      Vài tháng sau số người dùng đăng ký lên đến 70, nhưng tổng cộng chỉ có 3 người thực sự dùng thử vài lần
    • Nó làm tôi nhớ đến mức giá full user 400 USD/tháng của New Relic
    • Giờ có vẻ họ đang pivot mạnh sang AI, và dường như gần như không muốn thừa nhận rằng sản phẩm đọc mã đó từng tồn tại
      Rất kỳ quặc
    • Tôi không nghĩ nói rằng phải có “ngân sách vô hạn” mới trả được 100 USD/tháng là công bằng
      Ngân sách của tôi khá hạn chế mà tôi vẫn trả nhiều hơn thế cho nhiều sản phẩm khác
      Nếu đó là công cụ giúp tăng năng suất hoặc hỗ trợ kinh doanh thì hoàn toàn đáng để trả tiền
  • Giấy phép thực ra đã thay đổi gần 3 tuần trước, nhưng bài blog phát hành 5.1.0 lại không nhắc gì đến việc này
    Vẫn chưa có thông báo chính thức nào
    Có vẻ tác giả container open source của Sourcegraph đã thông báo rằng release train của mình giờ đã kết thúc: https://github.com/jensim/sourcegraph-release-train/

  • Phần hỗ trợ trong giai đoạn demo khá tệ, hỗ trợ C++ cũng thiếu, không tích hợp tốt với các hệ thống build C++ hiện đại, và giá thì vô lý
    Họ cứ tiếp tục thúc đẩy tính năng “campaign”, nhưng đó là một công cụ tự động refactor quá phức tạp, thậm chí còn không hỗ trợ nổi hệ thống build không độc quyền và khá phổ biến của chúng tôi
    Thay vì trả phí license đó, chúng tôi thuê hai lập trình viên để refactor code, và sau đó họ còn tạo ra các công cụ khác nữa, đồng thời chúng tôi cũng không cần phải thuê riêng ai đó chỉ để xử lý việc tích hợp dịch vụ tệ hại
    Khi nói chuyện với chúng tôi, khó mà nói rằng họ đã tìm được một thị trường ngách
    Có thể bây giờ mọi thứ đã khá hơn

    • Việc dùng tên cũ “campaign” cho thấy thời điểm họ đánh giá Sourcegraph là khoảng 2,5 năm trước hoặc sớm hơn
      Từ đó đến nay đã thay đổi rất nhiều
      Gần đây họ đã phát hành indexer mới scip-clang(https://about.sourcegraph.com/blog/announcing-scip-clang), và đã dùng thành công để index các codebase lớn như Chromium
      Indexer này phụ thuộc vào JSON compilation database, giống như indexer cũ lsif-clang, và có thể tạo khá dễ từ CMake, Bazel, Meson, Make, v.v.
      Gần đây họ cũng đã hỗ trợ điều hướng mã xuyên kho cho C++: https://about.sourcegraph.com/blog/c-cpp-cross-repo
    • Có thể thuê được 2 lập trình viên chỉ bằng giá license thì tôi thật sự tò mò không biết nó đắt đến mức nào
    • Tôi tò mò không biết họ dùng hệ thống build nào
      Tôi cứ nghĩ giờ đây JSON compilation database đã có thể được tạo ra khá ổn
      Ví dụ nó cũng được dùng trong language server của VS Code
  • https://github.com/sourcegraph/sourcegraph/issues/53528#issu... có vẻ là bình luận từ phía dự án tổng hợp lý do vì sao họ thay đổi

    • Điểm nổi bật là như sau
      Sourcegraph cho biết họ sẽ tiếp tục cam kết với Zoekt, công cụ tìm kiếm mã nguồn mở, và sẽ tiếp tục upstream các thay đổi: https://github.com/sourcegraph/zoekt
      Mã nguồn sẽ tiếp tục ở trạng thái công khai
      Các lập trình viên cá nhân vẫn có thể tiếp tục dùng Sourcegraph miễn phí cho mã công khai trên sourcegraph.com và mã riêng tư trong free tier tự host
      Theo họ, có rất ít lập trình viên cá nhân hoặc công ty dùng biến thể tìm kiếm mã hạn chế từng là mã nguồn mở, còn đại đa số tuyệt đối, trên 99,9%, dùng sản phẩm enterprise
      Việc tiếp tục duy trì cả hai biến thể về sau là gánh nặng lớn cho đội ngũ kỹ thuật trong khi lợi ích mang lại cho người dùng là rất nhỏ
    • Vài tháng trước họ đã bỏ license enterprise miễn phí cho phép 10 ghế lập trình viên, và có lẽ một số công ty nhỏ đang trì hoãn cập nhật trong lúc xem xét bản mã nguồn mở, nhưng giờ thì không còn nữa
    • Có vẻ bản mã nguồn mở không có ai dùng, và họ cũng không muốn tiếp tục duy trì hai phiên bản mà không ai dùng
      Họ cũng nói có cung cấp bản tự host miễn phí cho cá nhân, nhưng tôi không tìm thấy trên website
  • Nhìn chung tôi chưa bao giờ thích sản phẩm open core
    Với tư cách là người tạo ra thứ gì đó, việc đặt rào cản trước mặt người dùng và giới hạn phạm vi họ có thể sử dụng thành quả của mình khiến tôi thấy thiếu tinh thần nghề nghiệp
    Những quyết định cố tình cản trở cách mọi người dùng sản phẩm đôi khi còn khiến tôi cảm thấy đó đơn thuần là lòng tham
    Nếu hình dung một thế giới nơi Sourcegraph hoàn toàn là phần mềm tự do, thì khách hàng enterprise vẫn rất có thể sẽ trả tiền để host Sourcegraph on-premise một cách an toàn
    Chỉ là họ sẽ không thể tính phí theo số ghế
    Họ sẽ phải giữ giá sản phẩm đủ thấp để khách hàng không tiết kiệm được quá nhiều tiền bằng cách thuê kỹ sư tự duy trì Sourcegraph on-premise
    Tôi tò mò không biết Sourcegraph hay bất kỳ doanh nghiệp open core nào khác có từng ước tính sẽ mất bao nhiêu khách hàng và doanh thu nếu chuyển hẳn sang phần mềm tự do hoàn toàn hay chưa
    Việc tạo ra phần mềm tự do và thu phí hosting có thể là nền tảng cho một doanh nghiệp bền vững, nhưng có lẽ khó đem lại mức kết quả mà venture capital kỳ vọng ở một khoản đầu tư thành công
    Thành thật mà nói, tôi thấy hạ tầng là phần mềm đóng độc quyền cũng không sao
    Vì nếu bạn đang viết một chương trình nhạy cảm về bảo mật, việc công khai tự do mã hạ tầng có thể cung cấp rất nhiều đạn dược cho kẻ tấn công
    Nếu bạn tin vào sức mạnh của tự động hóa và việc xây dựng phần mềm chất lượng cao, bạn có thể tạo ra phần mềm tự do mà vẫn dễ dàng và an toàn để triển khai, vận hành trên hạ tầng của khách hàng, với gánh nặng vận hành rất nhỏ từ phía bên host, trong khi mã hạ tầng vẫn là độc quyền
    Cách làm này có thể dẫn tới một doanh nghiệp rất vững chắc
    Tôi tự hỏi vì sao không thấy nhiều doanh nghiệp như vậy hơn

  • Có thêm một chút thông tin trong https://github.com/sourcegraph/sourcegraph/commit/3cd931ef54..., nhưng cũng không nhiều

    • Thông thường người ta sẽ kỳ vọng thông báo thay đổi license phải được đưa ra trước khi triển khai thay đổi đó
  • Mình đang thắc mắc hệ thống tìm kiếm mã nguồn mở nào tốt để kết nối khoảng 100 kho Git có thể dùng trên web
    Tìm kiếm của GitHub thì quá rộng và không thể bao gồm các kho như GitLab, nên không phù hợp
    Trước đây mình từng xem Debian code search https://github.com/Debian/dcs nhưng cảm giác sẽ cần khá nhiều công sức nên chưa tìm hiểu đến cùng
    Tuy vậy, https://github.com/Debian/dcs/blob/main/howto/building.md có vẻ khá dễ tiếp cận
    Cũng có Zoekt mà Sourcegraph nhắc tới https://github.com/sourcegraph/zoekt nhưng mình chưa chắc nó dùng ổn đến mức nào
    Nếu nó thật sự tốt như vậy thì mình cũng tò mò vì sao phiên bản mã nguồn mở của Sourcegraph lại từng tồn tại
    Nhìn vào các thảo luận về việc phiên bản mã nguồn mở của Sourcegraph đã tụt lại khá xa trong vài năm qua, có vẻ họ không định fork một cách nghiêm túc
    Bản phát hành GCS https://github.com/google/codesearch có vẻ đã được mã nguồn mở hóa mà không có frontend
    Ở trên cũng có người đề xuất Livegrep https://github.com/livegrep/livegrep và OpenGrok https://oracle.github.io/opengrok/
    Mình khá háo hức muốn thử, nhưng nếu có sẵn một cấu hình Docker Compose đang chạy được thì sẽ rất hữu ích để bắt đầu
    Cũng có Eureka https://github.com/Rajeev-K/eureka
    Nó có vẻ kém mạnh hơn, nhưng triển khai thì có vẻ dễ hơn

    • Google codesearch thực ra không phải một “sản phẩm” có thể dùng được ngay
      Livegrep(https://github.com/livegrep/livegrep) được lấy cảm hứng từ đó và dùng khá ổn
      Zoekt cũng vốn là một dự án mã nguồn mở của Google, nhưng đã bị ngừng bảo trì và sau đó Sourcegraph tiếp quản
      Nó vận hành phần lớn tìm kiếm regex/literal mặc định của Sourcegraph
      Mã nguồn của Mozilla có thể được tìm kiếm trên Searchfox(https://searchfox.org/); dịch vụ này kết hợp bộ lập chỉ mục của Livegrep, bộ lập chỉ mục Git riêng và cơ sở dữ liệu tham chiếu chéo theo từng ngôn ngữ
      OpenGrok(https://github.com/oracle/opengrok) cũng khá nổi tiếng, nhưng mình thấy UI của nó hơi tệ hơn một chút so với các lựa chọn khác
    • Với các kho nhỏ và nhu cầu dùng dòng lệnh, cũng có cs: https://github.com/boyter/cs
    • Cũng có Hound: https://github.com/hound-search/hound