PHPackages                             openfed/openfed-project - 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. [Framework](/categories/framework)
4. /
5. openfed/openfed-project

ActiveProject[Framework](/categories/framework)

openfed/openfed-project
=======================

Project template for Drupal 10 sites built with the Openfed distribution.

13.6.2(2mo ago)0378[2 issues](https://github.com/openfed/openfed-project/issues)GPL-2.0-or-later

Since Mar 10Pushed 2mo ago2 watchersCompare

[ Source](https://github.com/openfed/openfed-project)[ Packagist](https://packagist.org/packages/openfed/openfed-project)[ RSS](/packages/openfed-openfed-project/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (3)Versions (26)Used By (0)

This is a project template for Drupal 10 sites built with the Openfed distribution.

Requirements
------------

[](#requirements)

- At least PHP 8.1 installed
- Composer 2.0

File Structure
--------------

[](#file-structure)

There are 3 json files:

### composer.json

[](#composerjson)

The main json file for your project, which you can use to require extra repositories. You can override this at your will, just make sure that **composer-merge-plugin** settings and package are kept in order to use the json files mentioned bellow.

For more info about **composer-merge-plugin** settings and options check

### composer.openfed.json

[](#composeropenfedjson)

Includes all Openfed related settings and should not be changed once you create your project. However, you should update this file regularly based on the most recent version in this repository.

### composer.patches.json

[](#composerpatchesjson)

Where all the specific patches for the project should be set. This repo doesn't apply patches so this file will always be empty and it's here just to be used as a template or starting point. See bellow how to apply patches using the command line.

Usage
-----

[](#usage)

### Installation

[](#installation)

This project requires the installation of [composer](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx).

> Note: The instructions below refer to the [global composer installation](https://getcomposer.org/doc/00-intro.md#globally). You might need to replace `composer` with `php composer.phar` (or similar) for your setup.

After that you can create the project:

```
composer create-project openfed/openfed-project:~13.6.1 MYPROJECT

```

### Update

[](#update)

The best is to download the latest version and replace your project with the files. If you have custom modules defined on your composer.json, you need to copy the to the new composer.json file. You can delete the existing composer.libraries.json as it has been removed from this project.

Since Openfed 8.x-10.0, there's a composer script (Experimental) which you can run in order to have your local project **partially** updated. To update your projects you can:

- Backup your site
- Run ```
    composer run-script project-update
    ```
- Manually update composer.json (it's recommended to use the composer.json from this repo and ajust it to use your projects/patches)
- Run ```
    composer update
    ```

Your project should now be updated.

### Require new modules

[](#require-new-modules)

With `composer require ...` you can download new dependencies to your installation.

```
cd MYPROJECT
composer require drupal/devel:~1.0

```

The `composer create-project` command passes ownership of all files to the project that is created. You should create a new git repository, and commit all files not excluded by the .gitignore file.

Contrib Libraries ([composer-merge-plugin](https://github.com/wikimedia/composer-merge-plugin))
-----------------------------------------------------------------------------------------------

[](#contrib-libraries-composer-merge-plugin)

This project uses the `wikimedia/composer-merge-plugin` to include additional Composer dependencies from contrib modules.

### How it works

[](#how-it-works)

Some contrib modules (like `ckeditor_codemirror` and `webform`) define their own library dependencies in a `composer.libraries.json` file. To have these dependencies installed, the path to the `composer.libraries.json` file must be added to the `merge-plugin.include` array in `composer.json`.

### Adding new contrib library files

[](#adding-new-contrib-library-files)

After running `composer create-project`, if you install a contrib module that has a `composer.libraries.json` file, add it to the `merge-plugin.include` array in `composer.json`:

```
"extra": {
    "merge-plugin": {
        "include": [
            "docroot/modules/contrib/ckeditor_codemirror/composer.libraries.json",
            "docroot/modules/contrib/webform/composer.libraries.json",
            "docroot/modules/contrib/YOUR_MODULE/composer.libraries.json"
        ]
    }
}
```

Then run:

```
composer update

```

This will merge the library dependencies and download them to the appropriate location.

### Notes

[](#notes)

- The merge only happens when the file exists, so entries for not-yet-installed modules won't cause errors.
- Run `composer update` after adding new include paths to trigger the merge.

### Custom Composer Installer Types

[](#custom-composer-installer-types)

This project defines and uses custom Composer installer types using:

- [composer/installers](https://github.com/composer/installers)
- [oomphinc/composer-installers-extender](https://github.com/oomphinc/composer-installers-extender)

#### [\_sass-framework](https://openfed.github.io/openfed-libraries/#sass)

[](#_sass-framework)

The `theme-library` package type is used for frontend assets (for example Sass source files, JavaScript, or shared theme resources) that are not Drupal modules or themes themselves, but are consumed by themes.

##### Installer configuration

[](#installer-configuration)

```
"extra": {
  "installer-types": [
    "theme-library"
  ],
  "installer-paths": {
    "docroot/themes/custom//{$name}": [
        "smillart/framework-sass-source-files"
    ]
  }
}
```

This ensures that packages of type `theme-library` (including `smillart/framework-sass-source-files`) are installed in a predictable location.

Then run:

```
composer require smillart/framework-sass-source-files

```

##### .gitignore

[](#gitignore)

Add the following line to the project root .gitignore file to make sure we don’t commit these libraries in version control.

```
/docroot/themes/custom/*/_sass-framework

```

##### Why this is required

[](#why-this-is-required)

Composer considers a package type “supported” only if an installer knows where to place it. Declaring an installer-type without an associated installer-path will result in the error:

> ⚠️ **Package type "theme-library" is not supported**

By defining both:

- installer-types
- and a matching installer-path

Composer is able to resolve and install packages of type theme-library correctly.

Using Patches
-------------

[](#using-patches)

There's a composer.patches.json file which should be used to define all the needed patches for your project. It's possible to manage patches using the command line due to szeidler/composer-patches-cli library. See below some commands and check  for more info.

### Patch Add

[](#patch-add)

```
composer patch-add

```

Example:

```
composer patch-add drupal/core "SA-CORE-2018-002" "https://cgit.drupalcode.org/drupal/rawdiff/?h=8.5.x&id=5ac8738fa69df34a0635f0907d661b509ff9a28f"

```

You can omit arguments for an interactive mode.

### Patch Remove

[](#patch-remove)

```
composer patch-remove

```

Example:

```
composer patch-remove drupal/core "SA-CORE-2018-002"

```

You can omit arguments for an interactive mode.

### Patch List

[](#patch-list)

```
composer patch-list

```

If the package argument is omitted, the command will return all defined patches.

Troubleshooting
---------------

[](#troubleshooting)

### Memory limit errors

[](#memory-limit-errors)

When running "composer install" you may get some memory limit issues. This is due to the composer dependency resolver since we have a big list of dependencies. To bypass this issue, you have 3 options:

#### option 1

[](#option-1)

Temporarely increase the memory limit as described at

#### option 2

[](#option-2)

If you are creating the project for the first time, use the recommended installation procedure by using "composer create-project" command.

#### option 3

[](#option-3)

Run "composer update" twice. At first it will throw the same error but on the second attempt it will run successfully.

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance84

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 52.3% of commits — single point of failure

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 ~65 days

Recently: every ~5 days

Total

23

Last Release

82d ago

Major Versions

11.2.0 → 12.1.0-beta12023-07-20

11.2.1 → 12.2.02024-04-11

12.6.0 → 13.6.02026-01-21

12.6.1 → 13.6.12026-02-09

12.6.2 → 13.6.22026-02-25

### Community

Maintainers

![](https://www.gravatar.com/avatar/2f122b4788effaf617e7185f3f60123269175444b013023393551c62ec7c36fc?d=identicon)[rutiolma](/maintainers/rutiolma)

---

Top Contributors

[![rutiolma](https://avatars.githubusercontent.com/u/5166327?v=4)](https://github.com/rutiolma "rutiolma (23 commits)")[![neyensp](https://avatars.githubusercontent.com/u/7510360?v=4)](https://github.com/neyensp "neyensp (6 commits)")[![ozmodiar](https://avatars.githubusercontent.com/u/512738?v=4)](https://github.com/ozmodiar "ozmodiar (6 commits)")[![lramarojaona](https://avatars.githubusercontent.com/u/5821299?v=4)](https://github.com/lramarojaona "lramarojaona (5 commits)")[![4hardfire](https://avatars.githubusercontent.com/u/9576940?v=4)](https://github.com/4hardfire "4hardfire (4 commits)")

### Embed Badge

![Health badge](/badges/openfed-openfed-project/health.svg)

```
[![Health](https://phpackages.com/badges/openfed-openfed-project/health.svg)](https://phpackages.com/packages/openfed-openfed-project)
```

###  Alternatives

[silverstripe/framework

The SilverStripe framework

7213.5M2.5k](/packages/silverstripe-framework)[juzaweb/cms

Juzaweb CMS is a Content Management System (CMS) developed based on Laravel Framework and web platform whose sole purpose is to make your development workflow simple again. Project develop by Juzaweb

187571.2k](/packages/juzaweb-cms)[elgg/elgg

Elgg is an award-winning social networking engine, delivering the building blocks that enable businesses, schools, universities and associations to create their own fully-featured social networks and applications.

1.7k15.7k5](/packages/elgg-elgg)[goalgorilla/open_social

Open Social is a distribution for building social communities and intranets.

190458.8k](/packages/goalgorilla-open-social)[pods-framework/pods

Pods is a development framework for creating, extending, managing, and deploying customized content types in WordPress.

1.1k1.7k](/packages/pods-framework-pods)[concrete5/concrete5

Concrete – an open source content management system.

8302.5k2](/packages/concrete5-concrete5)

PHPackages © 2026

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