Công bố bản cập nhật Weather.gov 2.0
(github.com/weather-gov)- 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 trahttp://localhost:8080cho ứng dụng vàhttp://localhost:8081cho 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
http://localhost:8080: màn hình chạy ứng dụnghttp://localhost:8081: trạng thái API proxy
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/có 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à APIapi-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ĩnhforecast/backend: Wagtail CMS cung cấp các trang dự báoforecast/frontend: JavaScript và các tài sản phía client khácforecast/locale: các tệp message để tạo bản dịchforecast/spatial: ứng dụng con Django quản lý cơ sở dữ liệu không gianspatial-data: ứng dụng tiện ích Node.js tạo bản đồ WFOterraform: mã phục vụ quản lý hạ tầng và triển khai sitetests/playwright: test E2E bằng Playwright cho site đang chạytests/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 deprecatedjustfile: tệp chạy các lệnh cho nhà phát triển, có vai trò gần giốngmakefilehiện đại
1 bình luận
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
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
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
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
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ì
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
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ữ
[0] https://code.gov/agencies
[1] https://github.com/nationalsecurityagency
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/
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...
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
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 đó