{"id":13432554,"url":"https://github.com/WICG/webpackage","last_synced_at":"2025-03-17T09:31:31.270Z","repository":{"id":38325049,"uuid":"71413286","full_name":"WICG/webpackage","owner":"WICG","description":"Web packaging format","archived":false,"fork":false,"pushed_at":"2024-10-25T14:02:52.000Z","size":4988,"stargazers_count":1231,"open_issues_count":118,"forks_count":118,"subscribers_count":84,"default_branch":"main","last_synced_at":"2024-10-29T15:29:16.490Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WICG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-20T01:15:38.000Z","updated_at":"2024-10-25T14:02:57.000Z","dependencies_parsed_at":"2024-11-19T14:03:40.166Z","dependency_job_id":"aaf1c006-5b02-4be2-95a3-ff036022366a","html_url":"https://github.com/WICG/webpackage","commit_stats":{"total_commits":881,"total_committers":55,"mean_commits":16.01818181818182,"dds":0.699205448354143,"last_synced_commit":"2011517070d788f2ffc1bb3184285170cd25a69b"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WICG%2Fwebpackage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WICG%2Fwebpackage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WICG%2Fwebpackage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WICG%2Fwebpackage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WICG","download_url":"https://codeload.github.com/WICG/webpackage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244009079,"owners_count":20382964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T02:01:13.326Z","updated_at":"2025-03-17T09:31:30.883Z","avatar_url":"https://github.com/WICG.png","language":"Go","funding_links":[],"categories":["Go","others"],"sub_categories":[],"readme":"# Packaging Websites\n\nNot to be confused with [webpack](https://webpack.js.org/), this repository\nholds a collection of specifications aimed at packaging websites. These\nspecifications replace the ~~[W3C TAG's Web Packaging\nDraft](https://w3ctag.github.io/packaging-on-the-web/)~~ and will allow people\nto bundle together the resources that make up a website, so they can be shared\noffline, either with or without a proof that they came from the original\nwebsite. A full list of use cases and resulting requirements is available in\n[draft-yasskin-wpack-use-cases](https://wicg.github.io/webpackage/draft-yasskin-wpack-use-cases.html)\n([IETF\ndraft](https://tools.ietf.org/html/draft-yasskin-wpack-use-cases)).\n\n\u003c!-- TOC --\u003e\n\n- [Explainers](#explainers)\n  - [Use cases](#use-cases)\n  - [Maintaining security and privacy constraints](#maintaining-security-and-privacy-constraints)\n- [Specifications](#specifications)\n- [Building this repository](#building-this-repository)\n  - [Building the Draft](#building-the-draft)\n  - [Packaging tools](#packaging-tools)\n    - [Signed HTTP Exchanges](#signed-http-exchanges)\n    - [Web Bundles](#web-bundles)\n    - [Isolated Web Apps (signing with integrity block)](#isolated-web-apps-signing-with-integrity-block)\n\n\u003c!-- /TOC --\u003e\n\n## Explainers\n\nThe [explainers](explainers/) walk through how to use these specs to\nachieve the use cases.\n\n### Use cases\n\n* [Packaging whole pages or sites](explainers/authoritative-site-sharing.md): can be\n  signed or unsigned.\n   * [Serving signed subresources of a signed top-level HTML\n     page](explainers/signed-exchange-subresource-substitution.md)\n   * [Navigating to top-level unsigned pages](explainers/navigation-to-unsigned-bundles.md)\n* [Packaging subresources](explainers/subresource-loading.md). This can include groups of\n  JS modules, stylesheets, images, or fonts. This is also getting fleshed out at\n  https://github.com/littledan/resource-bundles/\n\n### Maintaining security and privacy constraints\n\n* [How to avoid third-party tracking](explainers/anti-tracking.md)\n* [What origin does an unsigned bundle have?](explainers/bundle-urls-and-origins.md)\n\n## Specifications\n\nThe specifications come in several layers:\n\n1. [Signed HTTP exchanges (a.k.a. SXG)](https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html)\n   ([IETF draft](https://tools.ietf.org/html/draft-yasskin-http-origin-signed-responses)):\n   These allow a browser to trust that a single HTTP request/response pair was\n   generated by the origin it claims.\n   * As we implement and test signed exchanges, we're publishing periodic\n     snapshots so that browsers, publishers, and intermediates can synchronize\n     on the same format. The [current implementation snapshot\n     ](https://tools.ietf.org/html/draft-yasskin-httpbis-origin-signed-exchanges-impl)\n     is an Internet Draft, and a [draft of the next\n     snapshot](https://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html)\n     is in this repository.\n1. Web Bundles (previously called Bundled HTTP exchanges):\n   A collection of HTTP resources, each of which could be signed or unsigned, with\n   some metadata describing how to interpret the bundle as a whole. This\n   specification has an initial draft in a PR, but isn't finished yet. This work\n   may proceed through either the IETF or the W3C/WHATWG.\n\n   *Update*: This work was moved to the [wpack-wg/bundled-responses](https://github.com/wpack-wg/bundled-responses)\n    repository ([Web Bundles (IETF draft)](https://wpack-wg.github.io/bundled-responses/draft-ietf-wpack-bundled-responses.html)) .\n1. [Loading](https://wicg.github.io/webpackage/loading.html): A description of\n   how browsers load signed exchanges. This is initially specified\n   here, and will eventually merge into the appropriate specs, e.g.\n   [Fetch](https://fetch.spec.whatwg.org/), that live in either the W3C or\n   WHATWG. Currently this only covers signed exchanges.\n1. [Subresource Loading](https://wicg.github.io/webpackage/subresource-loading.html)\n   ([Explainer](https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md)):\n   A description of how browsers load a large number of resources efficiently with\n   [Web Bundles](https://wpack-wg.github.io/bundled-responses/draft-ietf-wpack-bundled-responses.html).\n   This is initially specified here, and will eventually merge into\n   the appropriate specs.\n\nA previous draft of the format combined layers 1 and 2 into a single format for\nsigned packages:\n[draft-yasskin-dispatch-web-packaging](https://wicg.github.io/webpackage/draft-yasskin-dispatch-web-packaging.html)\n([IETF draft](https://tools.ietf.org/html/draft-yasskin-dispatch-web-packaging)).\nThe DISPATCH WG at IETF99\n[recommended](https://datatracker.ietf.org/doc/minutes-99-dispatch/) the current\nsplit.\n\n## Building this repository\n\n### Building the Draft\n\nFormatted text and HTML versions of the draft can be built using `make`.\n\n```sh\n$ make\n```\n\nThis requires that you have software installed as described in\nhttps://github.com/martinthomson/i-d-template/blob/main/doc/SETUP.md.\n\n### Packaging tools\n\n#### Signed HTTP Exchanges\n\nInstall this with `go install github.com/WICG/webpackage/go/signedexchange/cmd/...` (Golang 1.18+).\n\nSee [go/signedexchange](go/signedexchange) for the usage of the tool.\n\n#### Web Bundles\n\nThere are several tools.\n\n- Go (Reference Implementation)\n\n  Install this with `go install github.com/WICG/webpackage/go/bundle/cmd/...`.\n\n  See [go/bundle](go/bundle) for the usage of the tool.\n\n- Node\n\n  There is a npm package, [wbn](https://www.npmjs.com/package/wbn).\n\n- Plugin for bundlers (Experimental)\n\n  - [Rollup plugin](https://github.com/GoogleChromeLabs/rollup-plugin-webbundle)\n  - [Webpack plugin](https://github.com/GoogleChromeLabs/webbundle-webpack-plugin)\n\n- Rust (Experimental)\n\n  - [google/webbundle](https://github.com/google/webbundle)\n\n#### Isolated Web Apps (signing with integrity block)\n\n- Go (Reference Implementation)\n\n  See [go/bundle#using-integrity-block-sub-command](go/bundle#using-integrity-block-sub-command) for more.\n\n- Node\n\n  There is a npm package, [wbn-sign](https://www.npmjs.com/package/wbn-sign).\n\n  Also same plugins as for Web Bundles can sign the bundles.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWICG%2Fwebpackage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWICG%2Fwebpackage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWICG%2Fwebpackage/lists"}