[PP-1] Establish the repository layout

Created on 3 June 2024, 7 months ago
Updated 26 August 2024, 4 months ago

Problem/Motivation

I'd like to establish the layout for this repository.

I propose that we create a monorepo/manyrepos architecture, similar to the way Symfony is developed. There will be only one repo (this one) for development to take place in, but we'll use the subtree split tool that core already uses, to distribute all the components in this repo as individual Composer packages.

I think we should begin with the following:

  • README.md - Just a little placeholder text to explain what this repo is for, and how it's architected.
  • project/README.md - A placeholder for the template project that will be used to spin up new projects that use Starshot. Basically this will be our version of drupal/recommended-project.

Remaining tasks

Make the initial commit with the files above.

πŸ“Œ Task
Status

Fixed

Component

Code

Created by

πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @phenaproxima
  • Merge request !1Set up the repository layout β†’ (Open) created by phenaproxima
  • Status changed to Needs review 7 months ago
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts
  • πŸ‡¬πŸ‡§United Kingdom alexpott πŸ‡ͺπŸ‡ΊπŸŒ

    +1 this is inline with our expectation that starshot will produce components that are usable outside of starshot.

    I think this has implications for testing too. Each component should have its own tests.

  • πŸ‡¬πŸ‡§United Kingdom catch

    Sorry -1 from me for a few reasons:

    1. There is no intention to provide any kind of installable/downloadable project called 'starshot'. The working name for the eventual product has been 'Drupal CMS', which might or might not stick, but this means there should be no code in this project at all. Maybe it'll get retired into the eventual new project once a name is settled on with issues migrated, maybe it'll stay as a meta-project like the ideas queue, but either way it's not where code should live.

    2. If we're avoiding starshot-specific modules and themes (which we definitely should), that leaves the composer template and recipes.

    I would think we want the recipes to be browsable by project browser independently of starshot once that's possible, and ideally usable in their own right before then too.

    While recipe hosting on Drupal.org is still partially TBD, they can already be hosted as general projects with a promise from the DA that if a specific project type gets added they'll all be migrated over. This would allow starshot/drupal cms to pull them in as composer dependencies before project browser browsing/unpacking is ready, but it would also mean that when project browser can eventually browse recipes from d.o everything will be ready to go.

    If we want to do a subtree split, it would need to be a subtree split to individual Drupal.org projects which as far as I know is not currently possible. Maybe that's the ideal scenario but it would need a Drupal infra issue to support that workflow, which would then block the above until it's done.

    Having lots of micro-recipes in lots of different projects without a subtree split would also be a pain to maintain though, but I think there's a middle-ground where we have a single 'starshot recipes' project (with a different name to that) hosting all the recipes, which would at least allow those to be composer required independently of the composer template then - even if it's in one go. Then we could subtree-split from that project into the smaller recipes once that's supported.

  • Status changed to RTBC 7 months ago
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts

    I've not heard any objections here, and this is easy to change later if we want, so I'm merging it.

  • Status changed to Needs review 7 months ago
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts
  • πŸ‡ΊπŸ‡ΈUnited States phenaproxima Massachusetts

    There is no intention to provide any kind of installable/downloadable project called 'starshot'. The working name for the eventual product has been 'Drupal CMS', which might or might not stick, but this means there should be no code in this project at all.

    I don't understand how that has to relate to the name of the repository? We all know Starshot is a temporary name, but we can migrate any code we commit to another repository later, under a different name, as long as the package names published to Packagist don't change.

    If we're avoiding starshot-specific modules and themes (which we definitely should), that leaves the composer template and recipes.

    IMHO the pragmatic policy here is "avoid Starshot-specific extensions if at all possible, but use them as a last resort".

    I would think we want the recipes to be browsable by project browser independently of starshot once that's possible, and ideally usable in their own right before then too.

    Yeah, that's my understanding of the vision too. How does a monorepo architecture prevent any of this, any more than Symfony's monorepo architecture prevents mixing-and-matching of Symfony components in other projects?

    While recipe hosting on Drupal.org is still partially TBD, they can already be hosted as general projects with a promise from the DA that if a specific project type gets added they'll all be migrated over.

    That's the impression I've gotten from @drumm too, but he also gave me the sense that Starshot packages (including recipes) would be published to Packagist, since packages.d.o is, at the end of the day, a shim. He can probably comment on this point more robustly than I can.

    If we want to do a subtree split, it would need to be a subtree split to individual Drupal.org projects

    I was thinking we'd subtree split to individual packages on Packagist, not d.o projects.

    Having lots of micro-recipes in lots of different projects without a subtree split would also be a pain to maintain though, but I think there's a middle-ground where we have a single 'starshot recipes' project (with a different name to that) hosting all the recipes

    This sounds like it contradicts the design of the recipe system. Every recipe needs to be its own individual Composer package; assembling multiple recipes together with no additional recipe instructions, is a metapackage.

  • Status changed to Needs work 7 months ago
  • πŸ‡¬πŸ‡§United Kingdom catch
  • πŸ‡¬πŸ‡§United Kingdom catch

    I was thinking we'd subtree split to individual packages on Packagist, not d.o projects.

    Project browser browses d.o projects out of the box, so it needs d.o projects to browse, not just composer repos published to packagist.

  • πŸ‡¬πŸ‡§United Kingdom catch

    Postponing this on #3452281: Decide on Starshot's product name β†’ since there will need to be a new project(s) to host the actual code instead of this one.

  • Status changed to Fixed 4 months ago
  • Automatically closed - issue fixed for 2 weeks with no activity.

Production build 0.71.5 2024