Skip to content

Commit

Permalink
get-wpe.md: newly organized content on how to get WPE
Browse files Browse the repository at this point in the history
This is a major rewrite of the contents of explore-wpe.md
and code.md (which is unlisted currently and unreachable).
The approach is to first introduce the components that form
WPE (cog, libwpe, etc) and then offer the different
ways to get it, going from the easiest to the most complex method.

For consistency, rename it from "explore WPE" to "Get WPE", since
this is what this page is about. Also make sure that all links
pointing to this page explain what it is about.

Last but no least, I removed links to the yocto webkit layer
from the Learn&Discover page, as this is already offered in the
"Get WPE" page, to avoid redundance.

The "Code" page still needs to be removed, but I will do that
in a subsequent MR when I get to reorganize the contents of
the "Developers" section.
  • Loading branch information
csaavedra committed Jul 19, 2023
1 parent f5bae83 commit 36208d2
Show file tree
Hide file tree
Showing 7 changed files with 199 additions and 67 deletions.
2 changes: 1 addition & 1 deletion _data/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ module.exports = [
{ title: "Learn & Discover", url: "/about/" },
{ title: "Blog", url: "/blog/" },
{ title: "Developers", url: "/developers/" },
{ title: "Get Started", url: "/about/explore-wpe.html", class: "btn cta" },
{ title: "Get WPE", url: "/about/get-wpe.html", class: "btn cta" },
];
59 changes: 0 additions & 59 deletions about/explore-wpe.md

This file was deleted.

192 changes: 192 additions & 0 deletions about/get-wpe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
---
layout: page
title: "Get WPE WebKit"
tags: [about]
data: { dateless: "true" }
permalink: /about/get-wpe.html
sitemapChangeFrequency: yearly
resources: [
{
"title": "Package Releases",
"url": "/release/",
"text": "The most recent stable and development releases of WPE codebases."
},
{
"title": "Release Schedule",
"url": "/release/schedule/",
"text": "How often does WEPWebKit release, and when?"
},
{
"title": "Security Advisories",
"url": "/security/",
"text": "A complete archive of our security adviories, often with download links."
},
{
"title": "Performance Tips",
"url": "https://github.com/Igalia/meta-webkit/wiki/PerformanceTips",
"text": "A few pointers on how to get better performance out of WPEwebkit. (Github Wiki)"
}
]
---

<header class="page">

# Get WPE

</header>

WPE is an open source/free software project. That means that you can
get the source code directly, study it, modify it, and deploy it to
serve your needs. While this can be an involved process, there
are different ways to get your hands on WPE, depending on your
needs.

## Before starting

Before getting the code, it's a good idea to be familiar with what you
will need. The different components that are needed to run WPE are:

* [WebKit](https://webkit.org): as WPE is an official WebKit port, you will need the source code for the WebKit project.
* [libwpe](https://github.com/WebPlatformForEmbedded/libwpe): A general-purpose library for WPE, that enables integration between WebKit and different platforms, through backends.
* [WPEBackend-fdo](https://github.com/Igalia/WPEBackend-fdo): A reference FreeDesktop.org backend for WPE, that relies on different FreeDesktop.org projects and can serve as a starting point to either customize or create a completely new backend for specific configurations.
* [Cog](https://github.com/Igalia/cog): A simple and minimalistic browser using WPE, with no user interface, suitable to be used as a Web application container or as a starting point to develop more complex browser applications based on WPE.

### Pick your flavour

Depending on what you want to do with WPE, there are different ways to get these components. From easiest to most involved, these are:

* [__Install it directly from your Linux distribution__](#install-it-from-your-gnu%2Flinux-os-distribution): This is the easiest, and it allows you to quickly test WPE on the desktop, for example, to find out on the state of support of different web features.
* [__Build an image for one of the supported reference hardware configurations__](#build-an-image-for-one-of-the-reference-hardware-configurations): This is a bit more involved, but it's an easy way to try out WPE directly on embedded hardware, see how it performs, and get familiar with it.
* [__Download the official tarball releases__](#download-the-official-tarball-releases): If you already have a deployment of WPE, this is the best way to get periodical updates with new features and security fixes.
* [__Get the source code directly from git__](#get-the-source-code-directly-from-git): The most advanced option, only recommended if you intend to get involved in the development of WPE, fix a bug you found, or you need to implement a new feature in WebKit.

In the following sections, you can find information on how to get WPE following the methods listed above.

## __Install it from your GNU/Linux OS distribution__

These packages are not just a quick and simple way to test WPE but
they also come with all the development files and documentation
necessary to build and test software that uses this web engine. Some
of the distributions that already have built packages for WPE are:

* [Debian](https://packages.debian.org/search?searchon=sourcenames&keywords=wpewebkit)
* [Ubuntu](https://packages.ubuntu.com/search?keywords=wpewebkit&searchon=sourcenames&suite=all&section=all)
* [Raspbian](https://archive.raspbian.org/raspbian/pool/main/w/wpewebkit/)
* [Arch Linux](https://archlinux.org/packages/extra/x86_64/wpewebkit/)
* [Fedora](https://copr.fedorainfracloud.org/coprs/philn/wpewebkit/)

This list is not exhaustive, so if you use a different distributions,
there might be packages for it already. Refer to the official
documentation of your distribution in order to learn the best way to
install packages.

## __Build an image for one of the reference hardware configurations__

A simple way to cross-compile WPE and its dependencies for a target
architecture is to use one of the existing build frameworks. Examples
of these are Yocto, Balena, etc. There are recipes to build WPE for
some of these for some target architectures, and these can be expanded
to support others. While familiarity with these tools is, of course, a
requirement, if you are an experienced embedded developer this should
be familiar territory.

* [OpenEmbedded/Yocto layer for
WebKit](https://github.com/Igalia/meta-webkit): use this layer to
build WebKit using Yocto. There are specific [instructions to build
WPE with Yocto](https://github.com/Igalia/meta-webkit/wiki/WPE) in the
project wiki.

* [Balena](https://github.com/Igalia/balena-wpe).

Please note that these layers are a moving target, evolving
continuously, and the level of support might vary. If you find any
problem with them do not hesitate to [contact
us](mailto:[email protected]).

## __Download the official tarball releases__

We periodically package WPE and its associated libraries, following a
predictable [release schedule](/release/schedule/), to make sure that
both stable and development versions are available to users,
deployers, and developers. Following the release schedule is the best
way to follow the progress of WPE, get a sense of what's coming, and
properly prepare for updates in your production deployments.

_Unstable_ releases are development versions, that give a preview of
what's coming in the next _stable_ release. These are useful for
beta-testing, and to prepare to upgrade your deployment to an upcoming
stable release when this is out. Unstable releases should never be
used in production.

Below is a summary of the latest stable and unstable releases for WPE
and its components:

<h3 class="sr-only">Releases</h3>

<div class="container" style="border-block: medium solid hsl(205,86%,70%);padding-block:1em;padding-inline:0.5em;">
<div class="card-deck" style="display:flex;">
<div class="card">
<h4 class="card-header text-center" style="margin-top: 0;">Stable</h4>
<div class="list-group list-group-flush">
{%- for item in collections.latestReleases -%}
<div class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
{{ item[0] }}<span class="sr-only">:</span>
<span>
<a class="badge badge-primary"
title="Download {{ item[0] }} {{ item[1].stable.version }}"
href="{{ site.release_dir | append:'/' | append: item[0] | append: '-' | append: item[1].stable.version | append: '.tar.xz' }}"><span class="sr-only">Download v</span>{{ item[1].stable.version }}<i style="margin-left:0.3em" class="icon-arrow-down-circle align-text-bottom"></i></a>
<span class="sr-only">-</span>
<a class="badge badge-secondary"
title="Release notes for {{ item[0] }} {{ item[1].stable.version }}"
href="{{ item[1].stable.url }}"><span class="sr-only">Release notes for v{{ item[1].stable.version }}</span><i class="icon-info align-text-bottom"></i></a>
</span>
</div>
{%- endfor -%}
</div>
</div>

<div class="card">
<h4 class="card-header text-center" style="margin-top: 0;">Unstable</h4>
<div class="list-group list-group-flush">
{%- for item in collections.latestReleases -%}
<div class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
{{ item[0] }}<span class="sr-only">:</span>
<span>
<a class="badge badge-primary"
title="Download {{ item[0] }} {{ item[1].unstable.version }}"
href="{{ site.release_dir | append:'/' | append: item[0] | append: '-' | append: item[1].unstable.version | append: '.tar.xz' }}"><span class="sr-only">Download v</span>{{ item[1].unstable.version }}<i style="margin-left:0.3em" class="icon-arrow-down-circle align-text-bottom"></i></a>
<span class="sr-only">-</span>
<a class="badge badge-secondary"
title="Release notes for {{ item[0] }} {{ item[1].unstable.version }}"
href="{{ item[1].unstable.url }}"><span class="sr-only">Release notes for v{{ item[1].unstable.version }}</span><i class="icon-info align-text-bottom"></i></a>
</span>
</div>
{%- endfor -%}
</div>
</div>
<p class="m-3 mt-4 text-center">
<a class="btn btn-light btn-sm" style="font-weight: normal" href="https://wpewebkit.org/release/">
<i class="icon-cloud-download align-text-bottom" style="margin-right: 0.3em"></i>See all released tarballs…</a>
</p>
</div>
</div>

## __Get the source code directly from git__

This is the most involved way to get the source code, and it's only
recommended for developers who are interested in getting involved in
the development of the project, or who need to implement any feature
that is not yet available in WPE. Additionally, this can be also be
a good way to track down any bug you might find and to fix it.

* [WebKit](https://github.com/webKit/WebKit/)
* [libwpe](https://github.com/WebPlatformForEmbedded/libwpe).
* [WPEBackend-fdo](https://github.com/Igalia/WPEBackend-fdo).
* [Cog](https://github.com/Igalia/cog).

Instead of downloading each of these components on their own, a good way to start is to get the WebKit source code, and use
its build system to fetch all the dependencies. Please check the [instructions for building WebKit](https://trac.webkit.org/wiki/WPE#BuildingWPEWebKitfromgit).

If you find any problem or want to know more about optimizing WPE for your hardware or use cases, please [contact us](mailto:[email protected]).

{% include resources.html %}
3 changes: 1 addition & 2 deletions about/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,7 @@ We understand that WPE is interesting from many perspectives, and to people of p
<li>Wondering if WPE is <a href="/about/supported-hardware.html">currently available for your device?</a></li>
<li>Wondering <a href="/about/a-good-choice.html">what makes WPE a good choice</a></li>
<li>Interested in learning more about <a href="/about/architecture.html">the architecture of WPE</a></li>
<li>An experienced embedded developer ready to <a href="https://github.com/Igalia/meta-webkit/wiki/WPE">build and tune WPE</a></li>
<li>Interested in all of the various ways you can get <a href="explore-wpe.html">started actually using and exploring WPE</a></li>
<li>Ready to explore the different ways to <a href="get-wpe.html">get WPE</a></li>
</ul>

</div>
Expand Down
6 changes: 3 additions & 3 deletions about/supported-hardware.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ resources: [
"text": "WPE WebKit is widely adopted in many industries, including digital signage, home appliances, set-top boxes, and automative and in-flight infotainment systems."
},
{
"title": "Get Started",
"url": "/about/explore-wpe.html",
"text": "Links to pre-built installations for platforms like Linux."
"title": "Get WPE",
"url": "/about/get-wpe.html",
"text": "Explore the different methods to get the source code and/or binaries for WPE"
},
{
"title": "Igalia",
Expand Down
2 changes: 1 addition & 1 deletion developers/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ h2 {

While there are several simple ways for developers to experiment with and explore WPE, none are tuned for performance. Generally, shipping products for embedded systems are performance-tuned custom builds. To make this easier, there is also [meta-webkit](https://github.com/Igalia/meta-webkit), which provides build recipes, WebKit based runtimes, and browsers for use with OpenEmbedded and/or Yocto.

There are also pre-build packages available for many <a href="/about/explore-wpe.html">Linux distributions</a>.
There are also pre-built packages available for many <a href="/about/get-wpe.html">Linux distributions</a>.

</div>

Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ <h1>
<p>
A WebKit port for Linux-based embedded devices designed with flexibility and hardware acceleration in mind, leveraging common 3D graphics APIs for best performance.
</p>
<a class="cta btn large" href="/about/explore-wpe.html">Get Started</a>
<a class="cta btn large" href="/about/get-wpe.html">Get WPE</a>
<button id="bannerControl" aria-label="Play/Pause silent background video"><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" stroke="#FFF" fill="#FFF"><circle cx="50" cy="50" r="45" stroke-width="9" fill="none" /><path d="M 35,30 l 40,20 -40,20 z" /></svg></button></div>
</header>

Expand Down

0 comments on commit 36208d2

Please sign in to comment.