diff --git a/experimental/qt5-qtwebkit/APKBUILD b/experimental/qt5-qtwebkit/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..c6e8103ba0e182feb922121df118ab763363ece4
--- /dev/null
+++ b/experimental/qt5-qtwebkit/APKBUILD
@@ -0,0 +1,70 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qt5-qtwebkit
+_realname=qtwebkit
+pkgver=5.212.0_alpha2
+_realver=${pkgver/_/-}
+pkgrel=0
+pkgdesc="Open source Web browser engine"
+url="https://github.com/annulen/webkit"
+arch="all"
+license="LGPL-2.1+ AND BSD-3-Clause AND Others"
+depends="gst-plugins-base"
+depends_dev="qt5-qtbase-dev"
+makedepends="$depends_dev ninja sqlite-dev icu-dev ruby perl bison flex gperf
+	libxml2-dev libxslt-dev libjpeg-turbo-dev libpng-dev zlib-dev glib-dev
+	gstreamer-dev fontconfig-dev qt5-qtsensors-dev qt5-qtpositioning-dev
+	qt5-qtdeclarative-dev qt5-qtwebchannel-dev libxcomposite-dev
+	libxrender-dev gst-plugins-base-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/annulen/webkit/releases/download/$_realname-$_realver/$_realname-$_realver.tar.xz
+	js-py3.patch
+	"
+builddir="$srcdir"/$_realname-$_realver
+
+build() {
+	cd "$builddir"
+	if [ "$CBUILD" != "$CHOST" ]; then
+		CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+	fi
+	# We can enable the JIT when it is stable on all Tier 1 platforms:
+	# pmmx (ensure no SSE)
+	# ppc
+	# ppc64
+	#
+	# DONE:
+	# aarch64
+	# armv7
+	# x86_64
+	cmake \
+		-DCMAKE_INSTALL_PREFIX=/usr \
+		-DCMAKE_INSTALL_LIBDIR=lib \
+		-DBUILD_SHARED_LIBS=True \
+		-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+		-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+		-DCMAKE_C_FLAGS="$CFLAGS" \
+		-DENABLE_JIT=OFF \
+		-DPORT=Qt \
+		-DUSE_LIBHYPHEN=OFF \
+		-DUSE_SYSTEM_MALLOC=ON \
+		${CMAKE_CROSSOPTS}
+	make
+}
+
+check() {
+	cd "$builddir"
+	CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+check() {
+	cd "$builddir"
+	make check
+}
+
+package() {
+	cd "$builddir"
+	make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b15985aab20c5618dc1f71a0d91f02dbed993516272090a4a12990714bf4c9554ccbdcf9d6a143bf46fcc2c170f691e571114d61686fe49791f8d5c540785758  qtwebkit-5.212.0-alpha2.tar.xz
+cee23bc493e2b207119a8ae26691d9d75f91535a39780b9438539c8f3789d9b28377b135b64738a34cf10ebbb30e3bc29eb2f56988a7a0d0cf8ddc9bbca7c8ca  js-py3.patch"
diff --git a/experimental/qt5-qtwebkit/js-py3.patch b/experimental/qt5-qtwebkit/js-py3.patch
new file mode 100644
index 0000000000000000000000000000000000000000..44e77cde0ecf9e4dc326d7acb3620f41ab769924
--- /dev/null
+++ b/experimental/qt5-qtwebkit/js-py3.patch
@@ -0,0 +1,35 @@
+--- qtwebkit-5.212.0-alpha2/Source/JavaScriptCore/generate-bytecode-files	(original)
++++ qtwebkit-5.212.0-alpha2/Source/JavaScriptCore/generate-bytecode-files	(refactored)
+@@ -91,7 +91,7 @@
+     try:
+         return open(path, mode)
+     except IOError as e:
+-        print "I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror)
++        print("I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror))
+         exit(1)
+ 
+ def hashFile(file):
+@@ -165,7 +165,7 @@
+     try:
+         bytecodeSections = json.load(bytecodeFile, encoding = "utf-8")
+     except:
+-        print "Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info())
++        print("Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info()))
+ 
+     if bytecodeHFilename:
+         bytecodeHFile.write(hFileHashString)
+--- qtwebkit-5.212.0-alpha2/Source/JavaScriptCore/generate-bytecode-files.old	2018-07-16 10:18:49.850000000 +0000
++++ qtwebkit-5.212.0-alpha2/Source/JavaScriptCore/generate-bytecode-files	2018-07-16 10:22:35.290000000 +0000
+@@ -157,10 +157,10 @@
+         exit(0)
+ 
+     if bytecodeHFilename:
+-        bytecodeHFile = openOrExit(bytecodeHFilename, "wb")
++        bytecodeHFile = openOrExit(bytecodeHFilename, "w")
+ 
+     if initASMFileName:
+-        initBytecodesFile = openOrExit(initASMFileName, "wb")
++        initBytecodesFile = openOrExit(initASMFileName, "w")
+ 
+     try:
+         bytecodeSections = json.load(bytecodeFile, encoding = "utf-8")