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&amp;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&ccedil;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