Drupal.org Composer Service (façade)
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #2576285. -->
Reported by: [timmillwood](https://www.drupal.org/user/227849)
>>>
<p>To support composer based workflows in Drupal 8 and beyond, Drupal.org must provide packagist-equivalent json endpoints for composer dependency resolution for Drupal projects. </p>
<p>This issue will be the meta-issue for Drupal.org's Composer support for Projects.</p>
<p>There are several issues and Drupalisms we need to adapt for Composer workflows: </p>
<ol>
<li>Because the semantic versioning model for contrib modules is not (yet) agreed upon, Drupal.org will also need to provide a versioning shim for contrib projects to a format composer will understand.</li>
<li>Support Drupal "packages" that is to say, modules with sub-modules.</li>
<li>Maintaining our ability to process statistics about how Drupal projects are used.</li>
<li>Control of availability of infrastructure.</li>
</ol>
<p>DA staff have built out the initial release, though there are follow up tasks that would expand Composer functionality. </p>
<p>You can find documentation for <a href="https://www.drupal.org/node/2718229">how to use Drupal.org's composer repositories</a> on the <a href="https://www.drupal.org/project/project_composer">Project Composer</a> project page.</p>
<table>
<caption>
<h3>Composer Service Release Hit List</h3>
</caption>
<thead>
<tr>
<th>Order</th>
<th>Issue</th>
<th>Assignment</th>
<th>Comments</th>
</tr>
</thead>
<tr class="odd">
<td>1</td>
<td><del>R&D Composer API Endpoint Architecture</del></td>
<td><a href="https://drupal.org/u/mixologic">Mixologic</a> with community input
</td><td><a href="https://www.drupal.org/packaging/d7">https://www.drupal.org/packaging/d7</a>?</td>
</tr>
<tr class="even">
<td>2</td>
<td><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/project_dependency/issues/2551703" title="Status: Closed (fixed)">#2551703: Store composer.json if present</a></span></td>
<td><a href="https://drupal.org/u/mixologic">Mixologic</a>, <a href="https://drupal.org/u/drumm">Drumm</a>, <a href="https://drupal.org/u/trobey">trobey</a></td>
<td>Facade can wrap project dependency, and wherever we need we will use facade</td>
</tr>
<tr class="odd">
<td>3</td>
<td><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/project_composer/-/issues/2622450" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/project_composer/-/issues/2622450</a></span></td>
<td><a href="https://drupal.org/u/mixologic">Mixologic</a>
</td><td></td>
</tr>
<tr class="even">
<td>4</td>
<td><del><a href="https://www.drupal.org/project/issues/project_composer">Build the façade</a></del></td>
<td><a href="https://drupal.org/u/mixologic">Mixologic</a>
</td><td></td>
</tr>
<tr class="odd">
<td>5</td>
<td><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/project_composer/-/issues/2654382" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/project_composer/-/issues/2654382</a></span> </td>
<td><a href="https://drupal.org/u/drumm">Drumm</a></td>
<td>Use SOLR, either existing core with release info or new core mirroring packagist solr implementation</td>
</tr>
<tr class="even">
<td>6</td>
<td><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/project_dependency/issues/2551703" title="Status: Closed (fixed)">#2551703: Store composer.json if present</a></span></td>
<td><a href="https://drupal.org/u/trobey"></a></td>
<td></td>
</tr>
<tr class="odd">
<td>7</td>
<td><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/project_composer/-/issues/2671470" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/project_composer/-/issues/2671470</a></span>, <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/project_dependency/issues/2400705" title="Status: Closed (fixed)">#2400705: Outdated version of dependencies are installed on the test-infrastructure</a></span> </td>
<td><a href="https://drupal.org/u/drumm">drumm</a></td>
<td>Once project dependency is aware of composer it can recompute at the end of packaging. Invalidate in the same place we do for updates-status.xml</td>
</tr>
<tr class="even">
<td>8</td>
<td><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/project_composer/-/issues/2671476" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/project_composer/-/issues/2671476</a></span></td>
<td><a href="https://drupal.org/u/mixologic">mixologic</a></td>
<td></td>
</tr>
<tr class="odd">
<td>9</td>
<td><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/project_composer/-/issues/2671472" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/project_composer/-/issues/2671472</a></span></td>
<td><a href="https://drupal.org/u/hestenet">hestenet</a>
</td><td>Using composer is an all-in workflow, and some Drupal workflows users are used to may not be possible.</td>
</tr>
<tr class="even">
<td>10</td>
<td><del>Security review of composer facade</del></td>
<td><a href="https://drupal.org/u/drumm">drumm</a></td>
<td></td>
</tr>
</table>
<table>
<caption>
<h3>Composer Service Follow-ups</h3>
</caption>
<thead>
<tr>
<th>Order</th>
<th>Issue</th>
<th>Assignment</th>
<th>Comments</th>
</tr>
</thead>
<tr class="odd">
<td>1</td>
<td><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/project_composer/-/issues/2671458" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/project_composer/-/issues/2671458</a></span></td>
<td><a href="https://drupal.org/u/Mixologic">Mixologic</a>
</td><td>Module, theme, library, theme engine, etc.</td>
</tr>
<tr class="even">
<td>2</td>
<td>[#] - Display computed dependencies on release nodes</td>
<td><a href="https://drupal.org/u/who?">who?</a>
</td><td>Nice to have: computed licenses</td>
</tr>
<tr class="odd">
<td>3</td>
<td>[#] Update Project Pages with Composer info</td>
<td><a href="https://drupal.org/u/who?">who?</a>
</td><td></td>
</tr>
<tr class="even">
<td>4</td>
<td>[#] Add a Library project type</td>
<td><a href="https://drupal.org/u/who?">who?</a></td>
<td></td>
</tr>
<tr class="odd">
<td>5</td>
<td>[#] - Ensure that composer facade has test coverage (as we go)</td>
<td><a href="https://drupal.org/u/who?">who?</a></td>
<td></td>
</tr>
</table>
issue