Skip to content

Commit 75bbf72

Browse files
committed
Add more documentation for WebKitGTK and WPE WebKit
1 parent ce684d2 commit 75bbf72

File tree

8 files changed

+175
-87
lines changed

8 files changed

+175
-87
lines changed

docs/Build & Debug/BuildOptions.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ Tools/Scripts/update-webkitgtk-libs
6464
Tools/Scripts/build-webkit --gtk --debug
6565
```
6666

67-
For more information on building WebKitGTK, see the [wiki page](https://trac.webkit.org/wiki/BuildingGtk).
68-
6967
## Building the WPE Port
7068

7169
For production builds:

docs/Ports/Introduction.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# What Are WebKit Ports?
2+
3+
WebKit has been ported to various platforms and operating systems. The platform-specific code for each port is maintained by different teams that collaborate on the cross-platform code. The code for upstream ports is maintained directly in the [WebKit GitHub repository](https://github.com/WebKit/webkit). The following upstream ports are available:
4+
5+
* Apple maintains the WebKit ports for macOS, iOS, and other Apple operating systems.
6+
* [Igalia](https://www.igalia.com) maintains two WebKit ports for Linux, [WebKitGTK](https://webkitgtk.org) and [WPE WebKit](https://wpewebkit.org).
7+
* Sony maintains the WebKit port for PlayStation.
8+
* The Windows port facilitates development and testing of WebKit using Windows.
9+
* The JSCOnly port facilitates development and testing of JavaScriptCore without the rest of WebKit.
10+
11+
There are also several downstream ports of WebKit, which are maintained entirely separately. Because they are not developed upstream, downstream ports are based on different versions of WebKit. Some downstream ports may be [old and insecure](https://blogs.gnome.org/mcatanzaro/2022/11/04/stop-using-qtwebkit/).
12+
13+
There are no cross-platform releases of WebKit. Each WebKit port is responsible for creating their own separate releases, if desired. The same applies for security advisories. Currently the ports maintained by Apple and Igalia have regular releases and security advisories, while other upstream ports do not.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Dependencies Policy
2+
3+
WebKitGTK's dependencies policy is simple:
4+
5+
* We support each major Debian version until one year after the release of the next major version.
6+
* We support each Ubuntu LTS until one year after the release of the next Ubuntu LTS.
7+
8+
During the support period, we intend for WebKit to remain buildable on these distributions using some system-provided compiler -- not necessarily the default system compiler -- and with the default system libstdc++. The purpose of this policy is to ensure distributions can provide updated versions of WebKit during the support period to ensure users receive security updates.
9+
10+
For more information on compiler requirements, see [GCC Requirement](GCCRequirement.md).
11+
12+
*[Debian Releases](https://www.debian.org/releases/)
13+
* [Debian Packages](https://www.debian.org/distrib/packages)
14+
* [Ubuntu Releases](https://wiki.ubuntu.com/Releases)
15+
* [Ubuntu Packages Search](https://packages.ubuntu.com/)
16+
17+
| Operating System | Release Date | WebKit Support End |
18+
|--------------------------------|--------------|--------------------|
19+
| Debian 10 (Buster) | 2019-07-06 | 2022-08-14 |
20+
| Ubuntu 20.04 (Focal Fossa) | 2020-04-23 | 2023-04-21 |
21+
| Debian 11 (Bullseye) | 2021-08-14 | 2024-06-10 |
22+
| Ubuntu 22.04 (Jammy Jellyfish) | 2022-04-21 | April 2025 |
23+
| Debian 12 (Bookworm) | 2023-06-10 | |
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# GCC Requirement
2+
3+
WebKit is a complex C++ library that often requires relatively new versions of GCC to build. Older versions of GCC tend to have bugs that prevent code from compiling successfully, which tend to be fixed in newer versions of GCC, and which are often encountered in practice by WebKit developers. Apple also likes to be able to use new C++ features, which are often not present in older versions of GCC, relatively early.
4+
5+
We are aware that Linux distributions and embedded systems vendors like to be able to compile everything with the same system build toolchain, which may be very old, so we have compromised with Apple to develop a [dependencies policy](DependenciesPolicy.md) that attempts to balance the interests of both WebKit distributors and developers. We intend to support some system compilers in the latest Ubuntu LTS and Debian stable releases until one year after the subsequent release, but, depending on the age of the release, this might be some version of Clang rather than GCC. We no longer provide any timeline as to how long a particular version of GCC may be supported, as this decision will be made by WebKit developers on a case-by-case basis. However, we will always support the version of libstdc++ available in these releases until one year after the subsequent release. Preserving compatibility with older standard library versions is necessary to allow updates on older systems, even if a newer compiler is used to build those updates. In general, you can expect a new standard library version to be supported by WebKit for approximately three to four years, in accordance with the dependencies policy.
6+
7+
This policy means that WebKit may require a new version of GCC sooner than you might prefer. Because Apple does not use GCC to develop WebKit, and because of the relatively high number of compatibility issues caused by supporting GCC, we should be grateful that it is still possible to build WebKit with GCC at all. Unless you are able to upgrade your systems to newer GCCs on a regular basis, it is expected that your system GCC may not be new enough to build WebKit. We urge you to consider building with a different compiler if your system compiler is too old. Embedded systems vendors may choose to deploy WebKit in a container if updating the host's libstdc++ is undesirable. If you choose to stop building new versions of WebKit as a result of an increased GCC or libstdc++ version requirement, your users will be left vulnerable to numerous security vulnerabilities that are fixed in newer versions.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Releases and Versioning
2+
3+
WebKitGTK and WPE WebKit follow a 6-month development cycle and the releases for both ports are usually synced.
4+
5+
Here is an overview of what the version numbers mean:
6+
7+
* Version numbers follow the major.minor.patch numbering scheme.
8+
* Changes to the major version are very rare and signify considerable architectural changes.
9+
* The minor version number changes throughout the development cycle and it is possible to identify if a release is stable or not by looking at this number
10+
* An even minor version number means the release is stable and ready for production.
11+
* An odd minor version number means the release is a development (beta) release for testing or preview of new features.
12+
* The patch number is incremented for each bugfix release and is just an incremental number.
13+
14+
There are two stable features releases every year (where the minor number is increased to an even number and the patch number is zero), typically in March and September. There may be any number of bugfix releases (where the patch number is increased).
15+
16+
[Read more about the WPE WebKit release process and versioning scheme](https://wpewebkit.org/release/schedule/).
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Security Updates
2+
3+
Before reading this document, please also [learn about WebKit ports](../Introduction.md) and [WebKitGTK and WPE WebKit releases and versioning](ReleasesAndVersioning.md).
4+
5+
## WebKitGTK and WPE WebKit Security Updates
6+
7+
Developers actively backport security fixes from the WebKit main development branch into the latest stable release.
8+
9+
Any stable release may contain security fixes. The concept of "stable release" is any release where the minor number is an even number. Developers periodically release security advisories detailing which security issues have been found and which releases were affected. Developers issue these security advisories shortly after creating a new stable release fixing the problem.
10+
11+
Developers don't generally backport security fixes for older stable releases. **Security updates are only available for the latest stable release branch**, i.e. the latest branch with an even minor version number.
12+
13+
For more information about the security advisories, see:
14+
15+
* [WebKitGTK Security Advisories](https://webkitgtk.org/security.html)
16+
* [WPE WebKit Security Advisories](https://wpewebkit.org/security)
17+
18+
## Recommended Practices
19+
20+
These are the recommended practices for users that would like to incorporate security and privacy updates from WebKit into their app in a timely manner:
21+
22+
* Use the latest stable version of WebKitGTK or WPE WebKit.
23+
* Even if a specific stable release doesn't mention that it contains a security fix, it is still a very good idea to update.
24+
* Stable releases may fix dangerous crashes or issues that may be not tagged as a security issue at the moment of the release.
25+
* Updating to the latest stable versions of WebKitGTK and WPE WebKit is always recommended: it is the best way of ensuring you are running a safe version of WebKit.
26+
27+
* Subscribe to the mailing lists to get notifications about new releases and security advisories.
28+
* Security advisories are sent to the port mailing list, so it is recommended to subscribe to it:
29+
* [WebKitGTK mailing list](https://lists.webkit.org/mailman/listinfo/webkit-gtk)
30+
* [WPE WebKit mailing list](https://lists.webkit.org/mailman/listinfo/webkit-wpe)
31+
32+
* Verify the tarballs of the releases.
33+
* The release tarballs include checksums and are also signed with PGP signatures.
34+
* After downloading the release, it is recommended to check the checksums or verify the PGP signature. Verifying the PGP signature is the best way to ensure your download was not compromised.
35+
* See:
36+
* [Verifying WebKitGTK releases](https://webkitgtk.org/verifying.html)
37+
* [Verifying WPE WebKit releases](https://wpewebkit.org/release/verify)
38+
39+
40+
## Considerations When Applying Security Updates
41+
42+
Some considerations to take into account when applying security updates:
43+
44+
* The WebKitGTK and WPE WebKit API aims to be compatible between minor versions, so if the application was using an older minor version of WebKitGTK or WPE WebKit, it should also run with the newer version of WebKitGTK or WPE WebKit without issues. (Recompiling the application is not needed.)
45+
* The major version rarely changes, but if it does then you may need to check if the application code still builds and works fine with the new major version. In that case there should be a guide explaining how to port the code of the application.

0 commit comments

Comments
 (0)