# ASF Podling Proposal for PouchDB

## Abstract

PouchDB is an open-source JavaScript database inspired by [Apache CouchDB]
(http://couchdb.apache.org/) that is designed to build offline-capable web
applications.


## Proposal

PouchDB is an open-source JavaScript database inspired by [Apache CouchDB]
(http://couchdb.apache.org/) that is designed to run well within the browser.
PouchDB was created to help web developers build applications that work as
well offline as they do online.


### Background

Established in 2010, PouchDB has been designed as both a first-class document
database for use in a web browser as well as a first-class data replication
peer to Apache CouchDB. PouchDB’s JavaScript API closely mirrors CouchDB’s REST
API and CouchDB’s peer-to-peer data synchronisation protocol allows web
developers to build database driven applications that work when the web browser
is offline. The replication protocol handles seamless data reconciliation when
one or more peers reconnect after being offline. Peers can be other web
browser by replicating via WebRTC, or one or more CouchDB instances.

### Rationale

PouchDB has always been a sister project to Apache CouchDB. Since its inception,
it has changed lead maintainers three times, all of which were informally
running the project on its GitHub repository. With ever increasing popularity
and reliance by mission-critical projects, PouchDB is looking for an open source
foundation to join and has selected the ASF to be close to CouchDB.


### Initial Goals

PouchDB aims to benefit from the ASF’s mature and transparent project- and
community-management policies.


### Current Status

#### Meritocracy

PouchDB has always, if informally, rewarded contributors that have a persistent
contribution history with commit access to the project directly. Over its 15-
year history, core and occasional contributors have come and gone, while an
active set of PouchDB practitioners has always looked after the project itself.


#### Community

PouchDB comes with an existing and robust developer and user community. By
establishing transparent community guidelines, we hope to grow this community
even further.


#### Core Developers

PouchDB is currently maintained by a handful of experienced developers that
have a long history in open source. The current interim project lead is an ASF
member and PMC Chair for Apache CouchDB. All developers are at least also end-
users of Apache CouchDB, while some of them have also been active contributors
on CouchDB.


#### Alignment

PouchDB is an established project that looks for long-term stability and the ASF
provides nothing but. PouchDB is used in various mission-critical projects and
would like to benefit from ASF stewardship as a means of making it easier to be
relied on long-term. PouchDB is also Apache 2 licensed already.


### Known Risks

PouchDB’s main risk is stagnation through developer abandonment. In its history
PouchDB had high- medium and low-velocity timespans, but it has always attracted
enough developers (both volunteer and for-pay) to stay afloat. Most recently,
PouchDB is at medium-velocity. Again, the PouchDB project hopes that by
formalising project management structures, a long-term stability and
dependability can be achieved.


#### Project Name

PouchDB is a tongue-in-cheek pun on its sister project CouchDB. The current
holder of the project domain (pouchdb.com) and previous project lead Dale
Harvey is on board with transferring any naming rights to the ASF.


#### Orphaned Products

The current PouchDB maintainers already consist of representatives from various
distinct organisations with strong technical and financial incentives to keep
PouchDB actively maintained. It is unlikely that a significant number would up
and leave the project.


#### Inexperience with Open Source

PouchDB is an existing open source project and its maintainers consist mostly of
very experienced developers, including some with over 15 years in active open
source development and one ASF Member and committer since 2008. For other
maintainers, PouchDB was their first open source projects and they have since
contributed to various other projects as well based on their good experience
with PouchDB.


#### Length of Incubation

The project aims to graduate within 6–12 months based on the experience of the
Apache CouchDB incubation in 2008 and general maturity of the project itself.


#### Homogenous Developers

The current PouchDB maintainers consist of people from around the world,
collaborating across all timezones.


#### Reliance on Salaried Developers

There is also a healthy mix of maintainers some of which are paid to work on
PouchDB part time, but everyone also contributes in their spare time.


#### Relationships with Other Apache Products

PouchDB has been developed as a sister-project to Apache CouchDB. Both projects
are inextricably linked in the sense that every PouchDB user is at least also a
CouchDB user. The reverse is not necessarily true, but in a recent CouchDB
developer survey, 80% of participants stated to use PouchDB with CouchDB.

The question of whether PouchDB should join CouchDB as as sub-project has been
raised and it has been decided to not pursue this option. Both projects have
significant technical differences (CouchDB is written in Erlang and PouchDB is
written in JavaScript) so that a joint stewardship would raise more problems
than it solves. Both the PouchDB and CouchDB maintainers agree on this point.
Where needed (APIs, sync protocol), the two teams have worked together tightly
and productively in the past. We don’t see a need to formalise this relationship
to achieve future success.


#### A Excessive Fascination with the Apache Brand

As mentioned before, PouchDB is looking for an open source foundation that helps
with long-term project stability and dependability. Both the OpenJS Foundation
and the ASF have been evaluated. In the end, the PouchDB developers prefer the
close proximity to Apache CouchDB. The maintainers believe that people having
to make decision about whether to bet on a PouchDB/CouchDB development stack or
not will have an easier time integrating both projects from a single foundation.
If the ASF won’t have PouchDB, we are happy to reconsider alternatives.

### Documentation

Project website: https://pouchdb.com/
Including blog with release announcements: https://pouchdb.com/blog
GitHub Project: https://github.com/pouchdb/pouchdb

### Initial Source

The initial source tree lives at https://github.com/pouchdb/pouchdb


### Source and Intellectual Property Submission Plan

The PouchDB maintainers have yet to decide if they want to migrate the existing
repository to the ASF GitHub organisation or if they want to submit a pristine
copy, but either way, submitting the source code is a few git commands away.

The pouchdb.com domain currently held by Dale Harvey is being transferred
to Neighbourhoodie Software which also holds the couchdb.com/net/org domains
in escrow for the Apache CouchDB project. ASF Member and CouchDB PMC Chair Jan
Lehnardt is a shareholder and chief executive at Neighbourhoodie and they are
trusted to hold and manage those domains in escrow until such time a transition
is needed. The website publishing toolchain can be easily adapted to the ASF-
provided web publishing mechanisms.


#### External Dependencies

PouchDB depends directly on the following other projects. An automated licensing
scan has revealed the following set of licenses in the dependency tree

Runtime dependencies: three dependencies with to-be-sorted-out licenses
- argsarray (WTFPL), trivially replaced with a compatible version.
- fetch-cookie (Unlicense, public-domain), could be fine, but check with ASF.
- readable-stream (incorrectly labelled BSD license), newer versions are MIT
  licensed, we should upgrade.

Development dependencies: if applicable, we’ll need to go through those and see
what can be done about them

- argparse@2.0.1: Python-2.0
- chai-as-promised@5.3.0: WTFPL
- configstore@0.3.2: Invalid SPDX expression "BSD"
- cookie@0.1.2: Invalid license metadata
- cssmin@0.4.3: Invalid license metadata
- escape-html@1.0.1: Invalid license metadata
- esprima-fb@15001.1.0-dev-harmony-fb: Invalid license metadata
- estraverse@1.9.3: Invalid license metadata
- event-stream@0.5.3: Invalid license metadata
- fetch-cookie@2.2.0: Unlicense
- jsonify@0.0.1: Invalid SPDX expression "Public Domain"
- JSONStream@0.10.0: Invalid license metadata
- log-driver@1.2.5: Invalid license metadata
- mime@1.2.11: Invalid license metadata
- ms@0.7.0: Invalid license metadata
- ms@0.6.2: Invalid license metadata
- pako@1.0.11: (MIT AND Zlib)
- path-to-regexp@0.1.3: Invalid license metadata
- ps-tree@0.0.3: Invalid license metadata
- qs@2.3.3: Invalid license metadata
- random-uuid-v4@0.0.8: Unlicense
- semver@2.3.2: Invalid SPDX expression "BSD"
- sntp@1.0.9: Invalid license metadata
- source-map@0.2.0: Invalid license metadata
- truncate-utf8-bytes@1.0.2: WTFPL
- tslib@2.6.3: 0BSD
- tweetnacl@0.14.5: Unlicense
- update-notifier@0.1.10: Invalid license metadata

These are produced with the `licensee` tool, invocations for runtime
dependencies:

```
licensee --corrections --errors-only --production
```

and for development dependencies:

```
licensee --corrections --errors-only
```

With the following licenses being permitted

- Apache-2.0
- MIT
- BSD-2-Clause
- BSD-3-Clause
- ISC
- BSD

#### Cryptography

PouchDB does not directly include cryptography code, but makes use of in-browser
TLS. A PouchDB plugin crypto-pouch exists that does record-level encryption, but
it is currently not part of the PouchDB code base. If md5 hashing is considered
cryptography, PouchDB, like CouchDB, makes use of that, just note that md5
hashing is not used for security relevant operations.


### Required Resources

#### Mailing lists

* d...@pouchdb.incubator.apache.org
* priv...@pouchdb.incubator.apache.org
* comm...@pouchdb.incubator.apache.org


#### Subversion Directory

n/a


#### Git Repositories

* https://gitbox.apache.org/repos/asf/incubator-pouchdb.git
* https://github.com/apache/incubator-pouchdb.git


#### Issue Tracking

GitHub Issues


#### Other Resources

PouchDB makes significant use of GitHub Actions for CI. For 2024, we have used
214,556 total minutes across 53,831 job runs. This can be migrated to another
setup if need be but it’d be great if this carefully crafted setup could remain
in place.


### Initial Committers

Alba Herrerías Ramírez albaherreriasdev at gmail dot com
Alex Anderson alexanderandersonofandover at gmail dot com
Diana Belle garbados at apache dot org (CLA)
Diana Barsan twisteddiana at gmail dot com
Gareth Bowen gareth at bowenwebdesign dot co dot nz
Jan Lehnardt jan at apache dot org (CLA)
James Coglan james at neighbourhood dot ie
Johannes Schmidt schmidt at tf-fabrik dot de
Steven-John Lange sourcer85 at gmail dot com


### Sponsors

Alba Herrerías Ramírez Neighbourhoodie Software
Alex Anderson independent, formerly Medic
Diana Belle independent
Diana Barsan Medic
Gareth Bowen independent, formerly Medic
Jan Lehnardt Neighbourhoodie Software
James Coglan Neighbourhoodie Software
Johannes Schmidt Mozilla / independent
Steven-John Lange HZData GmbH / independent


#### Champion

Jan Lehnardt, CouchDB PMC Chair.


#### Nominated Mentors

PJ Fanning (fanningpj at apache dot org)
Jean-Baptiste Onofré (jb at nanthrax dot net)


#### Sponsoring Entity

The Incubator


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org

Reply via email to