1 điểm bởi GN⁺ 2024-03-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Kho lưu trữ Weathergov 2.0 là lần triển khai thứ hai sau codebase Drupal trước đó, và là dự án được tạo ra để chuyển sang Wagtail/Django
  • Nhà phát triển có thể clone kho lưu trữ rồi chạy just zap để thiết lập container, sau đó kiểm tra http://localhost:8080 cho ứng dụng và http://localhost:8081 cho trạng thái API proxy
  • Thư mục tài liệu bao gồm hướng dẫn cho product owner, nhà phát triển, nhà thiết kế, nhà nghiên cứu, v.v. cùng với hồ sơ quyết định kiến trúc
  • Mã được AI hỗ trợ cũng có thể được chấp nhận nếu tuân theo tiêu chuẩn mã nguồn và review thông thường, nhưng người gửi phải tự chạy mã và test, đồng thời công khai thông tin nguồn gốc như tên model, phiên bản, môi trường trong merge request
  • Codebase được vận hành theo các phần như Wagtail CMS, các ứng dụng con Django, lớp API và proxy Node.js, mã hạ tầng Terraform, test E2E bằng Playwright, v.v.

Tính chất của Weathergov 2.0

  • Kho Git này tương ứng với vòng lặp thứ hai của Weathergov 2.0
  • Kho lưu trữ trước đó chứa codebase Drupal, còn kho này được tạo ra để chuyển sang Wagtail/Django

Cách chạy cục bộ

  • Sau khi clone kho lưu trữ, có thể chạy just zap để thiết lập container
  • Khi container đang chạy, có thể kiểm tra tại các địa chỉ sau

Tài liệu và hồ sơ quyết định

  • Dưới docs/ có các hướng dẫn dành cho nhiều vai trò khác nhau
    • Tài liệu cho product owner
    • Tài liệu cho nhà phát triển
    • Tài liệu cho nhà thiết kế
    • Tài liệu cho nhà nghiên cứu
    • Tài liệu cho các vai trò khác
  • Trong docs/architecture/decisions/hồ sơ quyết định kiến trúc, giải thích cấu trúc hiện tại và lý do của các quyết định

Chính sách đối với mã được AI hỗ trợ

  • Dự án có thể chấp nhận mã được AI hỗ trợ theo NAO 216-218 Artificial Intelligence in NOAA Policy, Executive Order 14179 "Removing Barriers to American Leadership in Artificial Intelligence", America's AI Action Plan
  • Mã được AI hỗ trợ phải tuân theo tiêu chuẩn review như mã thông thường, và còn áp dụng tiêu chuẩn chất lượng cao hơn
  • Người gửi phải đáp ứng các điều sau, giống như với mã do con người viết
    • Phải tự chạy mã và test
    • Phải có thể giải thích cho nhóm biết mã làm gì
    • Phải hiểu vấn đề đang cố giải quyết và giải pháp được đề xuất
  • Trách nhiệm về hành vi, bug và tác dụng phụ của mã đã gửi luôn thuộc về người đóng góp là con người
  • Mọi merge request phải công khai việc có bao gồm mã được AI hỗ trợ hay không
    • Tên và phiên bản model đã dùng
    • IDE, Copilot và các môi trường liên quan
    • Các thông tin khác giúp hiểu nguồn gốc của mã
  • Checklist yêu cầu đánh dấu các thay đổi do AI tạo ra, xác nhận đã tự chạy, và có thể giải thích các thay đổi, vấn đề và cải tiến cho cả người chuyên môn lẫn không chuyên môn

Cấu trúc mã

  • api-interop-layer: ứng dụng Node nằm giữa site và API
  • api-proxy: công cụ phát triển và debug để proxy các lệnh gọi API và chèn dữ liệu tĩnh
  • forecast/backend: Wagtail CMS cung cấp các trang dự báo
  • forecast/frontend: JavaScript và các tài sản phía client khác
  • forecast/locale: các tệp message để tạo bản dịch
  • forecast/spatial: ứng dụng con Django quản lý cơ sở dữ liệu không gian
  • spatial-data: ứng dụng tiện ích Node.js tạo bản đồ WFO
  • terraform: mã phục vụ quản lý hạ tầng và triển khai site
  • tests/playwright: test E2E bằng Playwright cho site đang chạy
  • tests/translations: script test kiểm tra sự tồn tại của các khóa dịch, hiện ở trạng thái deprecated
  • justfile: tệp chạy các lệnh cho nhà phát triển, có vai trò gần giống makefile hiện đại

1 bình luận

 
GN⁺ 2024-03-04
Các ý kiến trên Hacker News
  • Có vẻ như được thực hiện theo hợp đồng/quan hệ đối tác với 18F (GSA): https://18f.gsa.gov/
    Thật ngạc nhiên khi họ viết trong README công khai rằng “weather.gov phản ánh các silo của tổ chức nhiều hơn là nhu cầu của người dùng (Định luật Conway)”. Nếu là tổ chức của chúng tôi thì chắc không đủ gan để viết như vậy trong tài liệu công khai

    • US Digital Service và 18F đã đóng vai trò lớn ở chỗ họ bình thường hóa bầu không khí để các cơ quan có thể nói “đúng, cái này chưa ổn nhưng chúng tôi sẽ làm cho tốt hơn”
      Việc các bên liên quan cảm thấy an toàn để hạ thế phòng thủ và hợp tác hướng tới một giải pháp nhất quán đã là một nửa trận chiến; trong kiểu “hack bộ máy quan liêu” như thế này, việc xây dựng lòng tin và quan hệ thường bị đánh giá thấp
    • Ước gì nhiều tổ chức minh bạch như thế này hơn
      Silo là thứ kiểu gì cũng hình thành, và tôi không muốn đổ lỗi cho ai. Khi biết vấn đề được thừa nhận và có ý chí giải quyết, ta có thể phần nào bớt bực bội
    • Vì cách dùng cụm “phản hồi/giám sát”, tôi lo rằng họ sẽ thêm script theo dõi phân tích kèm popup cookie gây khó chịu
    • Có vẻ vẫn còn khá nhiều silo. Ví dụ Office of Water Prediction vận hành một tổ chức GitHub riêng, đồng thời còn có các site preview.water.noaa.gov và water.noaa.gov/map tách biệt với water.weather.gov
      Nhưng dữ liệu quan trắc tại hiện trường thực ra đến từ USGS, còn dữ liệu và dịch vụ web cũng được cung cấp tại waterdata.usgs.gov
  • Có thể là một câu hỏi ngớ ngẩn, nhưng tôi thắc mắc bản 2.0 này đã ở trạng thái có thể dùng thử thực tế ở đâu đó chưa, hay chỉ là mã nguồn đang phát triển
    Khoảng 8 năm trước, một trong các sản phẩm khí tượng hàng không của chính phủ Mỹ có một site “thử nghiệm”, và nó thật sự rất tốt. Hiện đại, dễ dùng, gọn gàng, không giống kiểu website chính phủ vụng về thường thấy; đội ngũ cũng có vẻ ổn, nhưng bị ràng buộc bởi cơ chế ngân sách chính phủ kéo dài nhiều năm. Cuối cùng site đó bị đóng, và theo tôi nhớ thì sản phẩm ấy không được đưa lên site chính
    Mỹ may mắn vì có dịch vụ khí tượng xuất sắc và có nghĩa vụ cung cấp nó như một hàng hóa công cộng, miễn phí. Tuy nhiên cũng có nhiều áp lực chính trị không cho nó trở nên quá tốt, để các công ty thương mại có thể kiếm lợi. Ít nhất AccuWeather hồi năm 2005 là một trong những công ty như vậy: https://www.onthecommons.org/privatizing-weather/index.html

    • Barry Myers / AccuWeather hẳn là người muốn tư nhân hóa mọi dịch vụ dự báo thời tiết hơn ai hết, và nếu điều đó xảy ra thì tôi cùng các đồng nghiệp ở SPC sẽ mất việc
    • Có vẻ họ đã thiết lập môi trường staging, nhưng có lẽ chưa public live: https://github.com/weather-gov/weather.gov/tree/main/.github...
    • Có một website beta tại beta.weather.gov, nhưng tôi không biết nó có phải cùng thứ với mã nguồn được liên kết trong bài viết không
    • README nói rằng họ đã kết thúc giai đoạn prototyping và hiện đang xây dựng MVP
    • Roadmap ghi là tháng 5
      https://github.com/weather-gov/weather.gov/blob/smh--researc...
  • Họ đang làm tốt. radar.weather.gov là một site tuyệt vời, hoạt động trên mọi thiết bị, chạy rất ổn mà không có quảng cáo, nên mong họ tiếp tục duy trì

    • Trải nghiệm của tôi thì hoàn toàn ngược lại. Trên di động nó chẳng hoạt động tốt chút nào, và quá phức tạp đối với những ai muốn thứ đơn giản, hữu ích như trước đây
      Tốc độ cũng cực kỳ chậm, và thông tin hữu ích thì hạn chế hơn so với phiên bản cũ
  • Tôi tò mò liệu việc này có ảnh hưởng đến api.weather.gov không. Trước đây tôi từng làm một dashboard nhỏ (https://weather.nikolaj.dev) lấy cảm hứng từ Weather Underground và đến giờ vẫn dùng trong hầu hết các ngày
    Nhưng công việc tự làm dự báo biển cho báo cáo lướt sóng thì hơi bị đình trệ. Hy vọng cuối cùng họ sẽ điền các trường đó. Như vậy tôi đỡ phải tự tìm hiểu các tệp GRIB

    • Tôi thích cái này. UI/bố cục dự báo 10 ngày của Weather Underground là tốt nhất, nhưng quảng cáo đã trở nên quá nặng
    • Tham khảo thì, nhìn một trong các sơ đồ kiến trúc, có vẻ api.weather.gov nằm ngoài phạm vi của dự án này
    • Giao diện tốt
      Một vấn đề nhỏ: tôi đã nhập một vị trí khác, nhưng vài giây sau lại bị chuyển hướng sang thời tiết San Diego. Có thể là do tôi đã chặn yêu cầu vị trí
  • Sẽ thật tốt nếu tất cả dự án nguồn mở liên quan đến chính phủ được tổng hợp ở một nơi. Ví dụ, có một tổ chức usa-gov trên GitHub để có thể dễ dàng truy cập mọi kho lưu trữ

    • Không chính xác là một nơi duy nhất, nhưng trang này [0] liệt kê các tổ chức GitHub của nhiều cơ quan liên bang. Tuy nhiên không đầy đủ, đặc biệt là thiếu tổ chức NSA [1]
      [0] https://code.gov/agencies
      [1] https://github.com/nationalsecurityagency
    • https://government.github.com/community/ cũng có các tổ chức quốc tế
    • GitHub không thực sự cho phép tổ chức lồng nhau hay cấu trúc các tổ chức liên quan, nên nếu đưa tất cả kho lưu trữ vào một tổ chức duy nhất thì sẽ thành ác mộng
      Có GitHub dành cho chính phủ [0], nhưng nó phụ thuộc vào đóng góp và không hoàn thiện lắm
      GSA đã khởi động code.gov dưới thời chính quyền Obama với mục tiêu tạo một chỉ mục duy nhất cho mọi dự án của chính phủ. Nó suy yếu dưới thời chính quyền Trump và trên thực tế bị cắt ngân sách dưới thời chính quyền Biden, nên giờ chỉ còn liên kết tới các cơ quan chính, và cũng không còn yêu cầu lập chỉ mục kịp thời nữa
      Chỉ riêng tổ chức của chúng tôi đã có khoảng 1.000 kho lưu trữ, và có hàng trăm cơ quan như vậy, nên khó hình dung có thể gom tất cả lại nếu không bỏ ra chút công sức nào. Ban đầu code.gov hoạt động khá tốt theo cách mỗi bên đăng một tệp code.json trên website của mình, rồi GSA thu thập chúng và gộp lại. Vì vậy thật đáng tiếc khi việc đó bị dừng và cả yêu cầu đăng code.json cũng bị ngừng. Đó là một ý tưởng hay
      [0] https://government.github.com/community/
    • Ở Pháp có https://code.gouv.fr/, và mã nguồn được công khai trên GitHub và SourceHut: https://github.com/codegouvfr
      https://git.sr.ht/~codegouvfr/
  • Có vẻ như đây là hình mẫu tương lai mà mọi cơ quan liên bang có thể hướng tới. Hoan nghênh National Weather Service đã đi đầu

  • Biểu đồ dự báo của weather.gov là thứ hữu ích nhất mà tôi biết, và là nơi đầu tiên tôi tìm đến khi muốn biết thời tiết
    Ví dụ: https://forecast.weather.gov/MapClick.php?lat=37.7771&lon=-1...

    • Đúng vậy. Tôi đã tạo một phím tắt trình quản lý cửa sổ để mở ảnh thời tiết theo giờ cho vị trí của mình bằng mpv, và tôi khuyên dùng nó như một cách hay để nhanh chóng xem thời tiết hôm nay hoặc ngày mai
      Tôi cũng có một alias shell để hiển thị bằng kitten icat trong terminal, nhưng tôi dùng phím tắt mpv thường xuyên hơn. Tôi cũng có alias thời tiết dạng văn bản, dùng curl lấy tệp phù hợp với vị trí của tôi từ đường dẫn dưới đây:
      https://tgftp.nws.noaa.gov/data/forecasts/zone/
      Tôi đã rà qua các tệp của bang mình để tìm tệp phù hợp, nhưng có vẻ liên kết “More Local Wx” trên trang dự báo 7 ngày cũng có tên tệp đúng. Trường hợp của tôi là ORZ006
      Tôi cũng tạo vài alias icat để hiển thị radar. Dùng để hiển thị hiện tại, tuần tự và lặp lại; tên radar lấy từ trang bên dưới, giống như trên radar.weather.gov:
      https://radar.weather.gov/ridge/standard/
      Tuy nhiên tôi cho rằng chế độ xem lượng mưa tích lũy 1 giờ (One hour accumulation view) là tốt nhất, nhưng tôi chưa tìm ra cách lấy ảnh của chế độ xem đó nên thường xem radar.weather.gov. Dạo này đã khá hơn, nhưng thỉnh thoảng nó hoàn toàn không hoạt động với tôi
      Dù không xem thường xuyên, tôi cũng tạo alias icat để hiển thị triển vọng nhiệt độ và lượng mưa 6–10 ngày cũng như theo tháng:
      https://www.cpc.ncep.noaa.gov/products/predictions/610day/
      https://www.cpc.ncep.noaa.gov/products/predictions/30day/
  • Tôi thấy có tệp contributing.MD, nhưng khó xác định thực sự có thể đóng góp như thế nào. Với tư cách một người có thể đóng góp, tôi muốn biết cách đóng góp nào là tốt nhất

    • perspective là “quan điểm”; ở đây nên là prospective, tức “tiềm năng”
      Tôi không có ý bắt bẻ, chỉ chia sẻ với hy vọng giúp ích
  • Tôi đã kỳ vọng sẽ có thêm nói về API dành cho những người xây dựng trải nghiệm chuyên biệt trực tiếp. NOAA đang làm tốt việc cung cấp dữ liệu thô, nhưng việc tiêu thụ và tận dụng dịch vụ chính phủ thường nằm trong các trường hợp cụ thể hơn
    Ở đây chúng tôi đang xây dựng công cụ ứng phó khẩn cấp. Ưu tiên AI tạo sinh, gồm những thứ như giám sát liên tục → cảnh báo, chatbot, báo cáo tình hình tùy chỉnh. Nếu quan tâm thì có thể liên hệ
    Khi nhiều cơ quan, công ty tiện ích, v.v. cần các biến thể chuyên biệt, tôi càng nhận ra rằng những khó khăn về dữ liệu và UI ở chặng cuối mà weather.gov đang giải quyết nội bộ cũng sẽ hữu ích cho các cơ quan khác
    Theo tôi biết, Weather.gov do NWS thuộc NOAA vận hành, nên việc nội dung đó không có trong lần cải tổ sứ mệnh này là điều thú vị

  • Hơi liên quan một chút, nhưng cá nhân tôi thấy URL đơn lẻ hữu ích nhất trên weather.gov là cái này. Chỉ cần đổi vĩ độ/kinh độ là được
    https://forecast.weather.gov/MapClick.php?FcstType=graphical...
    Sẽ thật tốt nếu cũng có thể xem dữ liệu quá khứ với cùng bố cục đó