incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Otto van der Schaaf <osch...@apache.org>
Subject [PROPOSAL] PageSpeed
Date Wed, 20 Sep 2017 10:44:44 GMT
Dear Apache Incubator Community,

We are excited to share our proposal for discussion and feedback for
entering Apache Incubation.
PageSpeed represents a series of open source technologies to help make the
web faster by rewriting web pages to reduce latency and bandwidth.

Our proposal can be found at
https://wiki.apache.org/incubator/PageSpeedProposal and is also included
below.

Kind regards,

Otto van der Schaaf and Joshua Marantz


= Apache PageSpeed =

== Abstract ==
PageSpeed represents a series of open source technologies to help make the
web faster by rewriting web pages to reduce latency and bandwidth.

== Proposal ==
PageSpeed is an open source library that can be embedded in a web server or
proxy server to perform just-in-time optimization of its output. PageSpeed
has two stable open source implementations: mod_pagespeed (httpd),
ngx_pagespeed (nginx). There is also ats_pagespeed (experimental), and
there are proprietary implementations (Microsoft IIS, OpenLiteSpeed, and
others).

This proposal assumes a single project for the pagespeed library and its
three derived open source implementations:

 * [[https://github.com/pagespeed/mod_pagespeed|mod_pagespeed]]
 * [[https://github.com/pagespeed/ngx_pagespeed|ngx_pagespeed]]
 * [[
https://github.com/apache/trafficserver/tree/master/plugins/experimental/ats_pagespeed|ats_pagespeed
]]

== Background ==
Studies indicate that there is a negative correlation between slow site
speeds and important business metrics, like conversion, retention, and
others. Web performance optimization is a fast moving target, and it is
both hard and expensive for companies to keep up with the current state of
technology. Pagespeed optimization represents an opportunity for website
owners to deliver content update to date with the latest web performance
best practices at reduced costs, without changing development workflows.

== Rationale ==
We think that the ASF offers the ideal environment to foster and grow the
project’s community. Many organizations can benefit from automatic web
optimization.

== Initial Goals ==
The initial goals of the pagespeed project are several-fold:

 * Foster and grow the community
 * Move the existing codebases to Apache and integrate with the Apache
development process.
 * [[https://github.com/pagespeed/mod_pagespeed/issues/1601|Move the docs
into a separate repository]], so we can (more easily) decouple product
releases from documentation updates. (Ideally the process for making small
doc changes is a low friction one).
 * Finish and land [[
https://github.com/pagespeed/mod_pagespeed/issues/876|content-security-policy
support]]
 * Finish and land changes in PageSpeed’s resource fetching infrastructure
(including a change [[
https://github.com/pagespeed/mod_pagespeed/issues/262|that teaches it about
following redirects]]).
 * [[https://github.com/pagespeed/ngx_pagespeed/issues/1181|Add Alpine
Linux]] to the list of supported distributions due to popular demand.
 * Turn the [[
https://github.com/pagespeed/mod_pagespeed/wiki/Design-Doc:-Central-Controller|experimental
central controller process]] on by default. Having a central controller
process is useful when someone wants to implement:
   * Centrally fetching input resources
   * Running phantomjs centrally for implementing more advanced
optimization opportunities
   * Optimizing the file cache cleaning system
   * More efficient handling of compute intensive optimizations (like image
transcoding and (re-)compression)
   * If we do all of the above, a lot of the project’s dependencies would
end up running in a separate process. That offers further advantages from a
security perspective.

With the changes above, we propose releasing a 2.0 version of mod_pagespeed!

Next up would be allowing for intelligent decisions based on protocol
(http/2, quic). (ngx_pagespeed already is capable of doing this (and more)
to some extent with its [[
https://www.modpagespeed.com/doc/system#nginx_script_variables|script
variable support.]])

== Current Status ==
Google launched mod_pagespeed in 2010 to provide free open-source
technology to automate deployment of best practices for web front end
delivery. Since that time, the module has gained broad adoption, with
hundreds of thousands of installs including 1.2% of the top 10k sites. The
PageSpeed Optimization Libraries have been used in products such as the
Chrome Data Reduction proxy, PageSpeed Insights, Accelerated Mobile Pages
(AMP), and Google Web Light, as well as a plethora of CDN/Hosting/Plugin
channels to help any website deploy PageSpeed, including Verizon/Edgecast’s
CDN, we-amp’s IIS WebSpeed and ats_pagespeed, SiteGround, Section.IO,
OpenLitespeed, and cpanel.

== Meritocracy ==
We plan to invest in supporting a meritocracy. We will discuss the
requirements in an open forum. The project is used by a huge amount of
companies, and we intend to invite additional developers to participate. We
will encourage and monitor community participation so that privileges can
be extended to those that contribute.

== Community ==
The need for a platform capable of automatically optimizing web content in
the open source community has turned out tremendous. We are hoping that
embracing “the Apache way” will accelerate the growth of our community. We
have already been active at seeking and inviting contributions.

== Core Developers ==
The initial committers for pagespeed include experienced engineers:

 * Otto van der Schaaf - (We-Amp / IISWebSpeed)
 * Kees Spoelstra - (We-Amp / IISWebSpeed)
 * Ashish Kulkarni - (We-Amp / IISWebSpeed)
 * Joshua Marantz - (Google)
 * Maksim Orlovich - (Google)

We realize that additional employer diversity is needed, and we will work
to recruit developers from additional companies.

== Alignment ==
The initial committers strongly believe that a system for optimizing web
content will gain broader adoption as an open source, community driven
project.

== Known Risks ==

=== Orphaned Products ===
[[
https://groups.google.com/forum/#!topic/mod-pagespeed-discuss/SYx1nOS6HsE|Google
has recently stepped down as the controlling entity of the project]].
Individual committers from Google are still involved in the project along
with continued involvement from We-Amp. We plan to mitigate the risks of
this transition by recruiting additional committers. We expect the ASF to
be a good environment for growing our community.

=== Inexperience with Open Source ===
The initial committers include Apache members (committers and PPMC members)
and developers who have varying degrees of experience with open source
projects. All have been involved with source code that has been released
under an open source license, and several also have experience developing
code with an open source development process.

=== Homogenous Developers ===
The initial committers are employed by We-Amp B.V. and Google Inc. We are
committed to recruiting additional committers from other companies.

=== Reliance on Salaried Developers ===
It is expected that PageSpeed development will occur on both salaried time
and on volunteer time, after hours (or 20% time). We-Amp’s committers are
paid by their company (IIS WebSpeed) to contribute to this project.
However, all involved are very passionate about the project, and we are
confident that the project will continue even if no salaried developers
contribute to the project. We are committed to recruiting additional
committers including non-salaried developers.

=== Relationships with Other Apache Products ===
To the knowledge of the Initial Committers, there are no direct competitors
to pagespeed optimization within the Apache Software Foundation. The module
implements modules for both Apache httpd and Apache Traffic Server. We look
forward to collaborating with those communities, as well as other Apache
communities.

=== An Excessive Fascination with the Apache Brand ===
Our rationale for developing pagespeed optimization as an Apache project is
detailed in the Rationale Section. We believe that the Apache brand and
community process will help us attract more contributors to this project,
and help grow the footprint of the project through usage at other
organizations and within other applications. Establishing consensus among
users and developers will result in a more valuable product for everyone.

== Documentation ==
References to further reading material:

 * [[https://www.modpagespeed.com/doc|Documentation]]
 * [[https://www.modpagespeed.com|Examples (mod_pagespeed)]]
 * [[https://www.ngxpagespeed.com/|Examples (ngx_pagespeed)]]
 * [[
https://github.com/apache/trafficserver/tree/master/plugins/experimental/ats_pagespeed/|ats_pagespeed
]]

== Initial Source ==
The origin of the proposed code base can be found at
https://github.com/pagespeed/. The code base is primarily in C/C++ (Google
C++ Style).

== Source and Intellectual Property Submission Plan ==
Google will submit a Software Grant Agreement (SGA) as mod_pagespeed and
ngx_pagespeed join the incubator. We do not expect any complications for
the submission of these code bases, which are already on Github and Apache
licensed. [[
http://incubator.apache.org/ip-clearance/ats-ats_speed.html|ats_pagespeed
already has been submitted]].

== External Dependencies ==
List of external dependancies: [[
https://github.com/pagespeed/mod_pagespeed/tree/master/third_party|third
party deps]].
We believe most of these dependencies meet all Apache policies, and will
conduct a more thorough review during incubation.

== Cryptography ==
The proposal does not include cryptographic code. The project depends on
BoringSSL, but does not include it.

== Required Resources ==
Currently continuous integration is performed at travis. There is also
ci.onpagespeed.com sponsored by IIS WebSpeed which performs more extensive
tests on commits to mod_pagespeed and ngx_pagespeed.

== Mailing List ==
Currently there are mailing lists hosted on Google Groups, that we can
deprecate as the Apache.org become ready to serve our community.

 * [[
https://groups.google.com/forum/#!forum/ngx-pagespeed-discuss|ngx-pagespeed-discuss
]]
 * [[
https://groups.google.com/forum/#!forum/mod-pagespeed-discuss|mod-pagespeed-discuss
]]
 * [[
https://groups.google.com/forum/#!forum/ngx-pagespeed-announce|ngx-pagespeed-announce
]]
 * [[
https://groups.google.com/forum/#!forum/mod-pagespeed-announce|mod-pagespeed-announce
]]
 * [[https://groups.google.com/forum/#!forum/pagespeed-dev|pagespeed-dev]]

== Subversion Directory ==
Git is the preferred source control system.

== Git Repository ==
Git is the preferred source control system (We are proposing
https://github.com/apache/incubator-pagespeed based on the naming scheme)

== Issue Tracking ==
JIRA pagespeed (pagespeed). If possible, we’d like to use Github issues &
PRs to manage our project as much as possible. It’s been said that there
are ways to keep Github’s issues in sync with Jira, allowing us to get best
of both worlds. If that is not possible, we will comply to using Jira.

== Other Resources ==
We currently use a set of Github integrated services that are free to the
open source community, like Travis-ci. We would like to keep using these
services as they allow us to scale contributions and optimize our
development flows. These services require some elevated rights on the
Github repository in order to set up or tune and we would like for the
committers to have the required rights.

== Initial Committers ==
 * Joshua Marantz <jmarantz@google.com> (Google) - committer
 * Maksim Orlovich <morlovich@google.com> (Google) - committer
 * Otto van der Schaaf <oschaaf@apache.org> (We-Amp) - committer
 * Kees Spoelstra <kspoelstra@we-amp.com> (We-Amp) - committer
 * Ashish Kulkarni <akulkarni@we-amp.com> (We-Amp) - committer
 * Leif Hedstrom <zwoop@apache.org> - Champion & committer
 * Jukka Zitting <jukka@apache.org> - Mentor
 * Nick Kew <niq@apache.org> - Mentor

== Affiliations ==
The initial committers are employees of Google Inc., We-Amp B.V.

== Sponsors ==
 * Google, We-Amp / IIS WebSpeed

== Champion ==
 * Leif Hedstrom <zwoop@apache.org>

== Nominated Mentors ==
 * Jukka Zitting <jukka@apache.org>
 * Leif Hedstrom <zwoop@apache.org>
 * Nick Kew <niq@apache.org>

== Sponsoring Entity ==
Incubator PMC

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message