PHPackages                             somoza/consider-donating - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. somoza/consider-donating

AbandonedArchivedComposer-plugin[Utility &amp; Helpers](/categories/utility)

somoza/consider-donating
========================

A common protocol for gathering donations for your OSS package via Composer.

0.2.0(6y ago)29MITPHP

Since Jun 17Pushed 6y ago1 watchersCompare

[ Source](https://github.com/gsomoza/consider-donating-composer)[ Packagist](https://packagist.org/packages/somoza/consider-donating)[ RSS](/packages/somoza-consider-donating/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (4)Versions (10)Used By (0)

Consider Donating Composer Plugin
=================================

[](#consider-donating-composer-plugin)

This plugin was inspired by [this thread on Twitter](https://twitter.com/blooomca/status/1136939474229682176).

The aim of the project is to provide a common interface for package developers to prompt their users for donations in a way that feels "natural" for everyone involved.

Commitment
----------

[](#commitment)

- Donations will always be optional.
- This project will always remain free and open source.
- We will never collect commission on any donations.

Usage
-----

[](#usage)

### For Package Mantainers

[](#for-package-mantainers)

As a package developer, you can prompt your users to donate to your package by doing the following:

1. Setup a landing page where you collect your donations.
2. Require this Composer plugin: `composer require gsomoza/consider-donating`
3. Add the following to your package's `composer.json` file:

```
"extra": {
    "donations": {
        "url": "http://your-donation.com/page"
    }
}

```

That's it! When someone installs your package they will see a message on their terminal, like the following:

```
Your project depends on the generous work of real people.
Please consider donating to the following open-source projects:

    * gabriel/consider-donating

To donate, simply run "composer donate package/name"

```

### For end-users

[](#for-end-users)

End-users can follow on-screen instructions to donate, but additionally they can also:

##### Authenticate

[](#authenticate)

Authenticating allows you to keep your donations even if you're working within VM's or Containers, or if you switch computers.

Roadmap
-------

[](#roadmap)

### 1. Implement basic protocol and functionality

[](#1-implement-basic-protocol-and-functionality)

Already implemented.

### 2. Donation Validations

[](#2-donation-validations)

The proposed donation validation flow (not yet implemented) would work as follows:

##### Version 1.0

[](#version-10)

1. The user is redirected to a donation page where they can perform their donation.
2. At the same time, an email is sent to the package maintainer with a link. Once the donation is confirmed, the package maintainer can click on that link to confirm the donation within our system.
3. The next time the user uses Composer (with an Internet connection), our plugin will automatically validate the donation took place and cache the validation token locally. They will not see a suggestion to donate to that package anymore.

To be added after release:

- Integrations for the one or two most common donation platforms.
- Allow easily migrating donation tokens (e.g. to a new computer)

##### Version 2:

[](#version-2)

- Support for team-level donations (useful for companies)

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

9

Last Release

2516d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f00ae1c2b13428075ab880d5fec7e857f1e9446cb401dc6097ec947a81122ec5?d=identicon)[gabriel.somoza](/maintainers/gabriel.somoza)

### Embed Badge

![Health badge](/badges/somoza-consider-donating/health.svg)

```
[![Health](https://phpackages.com/badges/somoza-consider-donating/health.svg)](https://phpackages.com/packages/somoza-consider-donating)
```

###  Alternatives

[phpdocumentor/reflection-docblock

With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.

9.4k722.2M1.2k](/packages/phpdocumentor-reflection-docblock)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)[vaimo/composer-patches

Applies a patch from a local or remote file to any package that is part of a given composer project. Patches can be defined both on project and on package level. Optional support for patch versioning, sequencing, custom patch applier configuration and patch command for testing/troubleshooting added patches.

2994.3M15](/packages/vaimo-composer-patches)[mglaman/composer-drupal-lenient

1317.4M15](/packages/mglaman-composer-drupal-lenient)[drupal/core-composer-scaffold

A flexible Composer project scaffold builder.

5341.9M444](/packages/drupal-core-composer-scaffold)[drupal/core-project-message

Adds a message after Composer installation.

2122.6M172](/packages/drupal-core-project-message)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
