Problem/Motivation
This is a follow up to the work started in #2660144: [Plan] Update core components. That issue removed some legacy components were deleted.
This issue it to resolve points 2 and 3 from that issue. Also, keep in mind that we are moving to GitLab where these will become labels.
- Components that are hard to differentiate - batch system vs. form system.
- Sheer number of components - i.e. one per module.
Currently the component list consists of 85 modules, 35 systems, 9 themes, 3 db driver, plus markup, javascript, CSS, phpunit, composer, documentation, meeting, Umami demo, user interface text, single directory component and other.
Perspectives to consider
- As a user I want easy choices related to the 'thing' I am doing
- As a maintainer of a subsystem, I need a way to filter my issues.
Proposed resolution
Use a card sort to aid making a decision here
Limited to 15 people.
General points of agreement
- Keep the component list and MAINTAINERS.txt in sync
This list does not include components that have been removed from D8+ or are D7 only.
- CSS - CSS
- announcements - announcements_feed.module
- base - cron system, lock system
- ban - ban.module
- contact - contact.module
- batch - batch system
- bootstrap - bootstrap system
- cache - cache system, page_cache.module
- coding standards -
- composer - composer
- configuration - configuration entity system, configuration system, config.module
- database - database system, mysql db driver, postgresql db driver, sqlite db driver
- update - database update system
- entity - entity system,
- edit - ckeditor5.module, editor.module
- extension - extension system
- field - field system
- fields - comment.module, datetime.module, field_ui.module, file.module, link.module, number.module, options.module, telephone.module, text.module
- file - file system
- form - form system, inline_form_errors.module
- image - image system
- help - help.module
- install - install system
- javascript - javascript
- mail - mail system
- layout - block.module, block_content.module, layout_builder.module, layout_discovery.module, field_layout.module, settings_tray.module
- localization - language system, language.module, locale.module
- log - dblog.module, syslog.module
- media - media system, breakpoint.module, image.module, responsive_image.module
- meetings
- menu - menu system, menu_link_content.module, menu_ui.module, path.module
- migration - migration system
- multilingual - language system, transliteration system, config_translation.module, content_translation.module, language.module, locale.module
- node - node system,
- plugin - plugin system
- render - ajax system, asset library system, markup, render system, theme system, contextual.module, filter.module
- request processing - request processing system, big_pipe.module, dynamic_page_cache.module
- routing - routing system
- search - search.module
- single directory components - single directory components
- statistics - statistics.modules
- system - system.module
- taxonomy - taxonomy.module
- testing - phpunit
- themes - claro, olivero, stable9, stark, starterkit_theme
- token - token system
- toolbar - toolbar.module
- typed data - typed data system
- umami - umami demo
- update - automatic_updates.module, update.module
- user - user system, history.module, user.module, shortcut.module
- interface text - user interface text
- views - views.module, views_ui.module
- web services - basic_auth.module, jsonapi.module, rest.module, serialization.module
- workflow - content_moderation.module, workflows.module, workspaces.module
- other -
Remaining tasks
To decide:
- Keep the specific components/labels for specific modules or not
Comments
Comment #2
quietone commentedHere is a suggested start. It does not cover all the current components.
Comment #3
quietone commentedComment #4
quietone commentedComment #5
andy-blumwould it be possible to alphabetize the components as well?
Comment #6
catchNo solutions but possible problems:
Entity and fields is tricky, the individual field types are not part of the entity API, but the field API very much is, and issues could end up in the wrong place because of that. We sometimes get the same issue with node/user/comment/taxonomy issues that could be entity-type-specific, could be entity system but just discovered via a specific entity type. Same with content_translation and entity where there's a lot of overlap.
I wouldn't put the database update system and update module together because they're dealing with very different things, but this is complicated by automatic updates module which is dealing with both.
Comment #7
quietone commentedIn the hope of generating discussion I made a suggestion in the IS. It is limited to D8+ components and I am sure there are mistakes.
Comment #8
berdirI get that we want to reduce the amount of labels/components, but I'm not sure about grouping together different modules and things that have different maintainers. As a maintainer of a subsystem, I need a way to filter my issues.
Examples for that would be different database backends, but also config/translation being *very* different beasts that have little to no overlap. But also themes, olivero and claro have completely different maintainers.
So IMHO, the components for issues should be based on the components we have in MAINTAINERS.txt and if we want to clean up, we should start there?
Another problematic use case is things that we remove from core. For example you put the form system and inline_form_errors in the same component. if we were to remove the module from core it would be _very_ tedious to find all relevant issues and move them to the contrib module.
IMHO, the solution for that with gitlab issue labels would be multiple labels. For example, both localization and translation could actually be a common multilingual label but then each module within that would also have it's "sub-label" and we'd add both to an. That would of course result in even more labels technically speaking, but that's going to happen anyway because we'll also need to make all tags labels?
Comment #9
cilefen commented+1 that whatever we do, it should align with MAINTAINERS.txt, including if that means modifying MAINTAINERS.txt.
Comment #10
ckrinaAgreed. As a Claro maintainer it's really useful being able to filter by Claro itself.
Comment #11
quietone commentedYes, the components and MAINTAINERS.txt should be more in alignment. And because of that I don't think it is necessary to start this discussion on how to group the components in a new issue about MAINTAINERS.txt. We just need to keep in mind the two places these 'groups' are used.
For some reason I did not mention in the IS that we could use scoped labels. I am guessing that this is the sub-label referred to in #8. That will allow us to maintain the module or theme granularity.
@Berdir, are you suggesting this change?
Replace
with
Comment #12
smustgrave commentedMoving to plan.
But also a +1 to redoing MAINTAINERS.txt as we currently have 26 gaps in it.
Comment #13
berdir> @Berdir, are you suggesting this change?
If and only if we keep the specific components/labels for the specific modules (whatever they will be called), yes. The separation between localization and translation seems arbitrary to me.
That was just one example, I'll try to take another closer look under that assumption and make more suggestions.
Comment #14
quietone commentedUpdated the IS to include the preference for keeping the extension granularity and the 'multilingual' suggestion. Also, sorted the items on the right side of the hyphen by system then by extension.
@Berdir, thanks. I am looking forward to your suggestions.
Comment #15
quietone commentedThere has been little engagement with this issue and I also think this is a difficult task to do in an issue. A few days ago I thought a card sort exercise of some sort will help. I am only just starting to explore that.
Also, I updated the IS to show that there is agreement on keeping this in sync with MAINTAINERS.txt. I have moved the point about agreement on keeping the module level distinction to a remaining tasks for further discussion. I did that because of my experience as a migrate maintainer. Quite a few migration issues were neglected because they were filed in some module component. It was purely by accident that I found one and then added extra searching to my habits. I'd like to consider that a bit more and hear other opinions.
Comment #16
poker10 commentedAs the D7 EOL is in January 2025, I am curious what exactly does this mean?
Don't we need to preserve D7 components until the EOL?
Comment #17
quietone commented@poker10, yes, the D7 world needs to be included in some way. When I made this is seemed that starting with D8+ only would make this simpler due to less components, but also to encourage long term thinking.
How about the D7 components are added but say, in italics, so we can see the difference. You are invited to add them to the IS :-)!
Comment #18
poker10 commentedI checked the list of components and compared it with the proposal in the IS. Here are my thoughts:
D7 only components which are missing in the proposal:
I also found few D7/D10 components which are missing:
I have not updated the IS with these two groups yet, as I think it would be better to check if some of them could be assigned to existing groups in proposal, instead of adding all of them as new groups. Once we reach consensus, we can update the IS according to this.
Comment #19
quietone commentedI had the idea that a card sort would help us resolve this. I reached out to https://maze.co/ and https://support.optimalworkshop.com for support. They both replied in the negative.
Anyone have other ideas to make this easy for us?
Comment #20
catch@poker10 the Drupal 10 ones that are missing are (I assume) because those modules are planned to move to contrib for Drupal 11. Maybe we can apply @quietone's italics idea for those too.
Documentation for me is more of a topic than a component, although sometimes it's used for documentation for core on Drupal.org which is kind of a grey area compared to the actual documentation queue.
Comment #21
smustgrave commentedComment #22
mstrelan commentedI was pointed here after I brought up with @quietone and @larowlan at DrupalSouth that there is nowhere to log issues for GitLab CI or for the related code quality checks (phpstan, phpcs, cspell, eslint). Not just issues with the pipelines themselves but for improving phpstan, implementing phpcs rules, etc. Perhaps we should have a "CI" component, or a "Code quality" component.
Comment #23
quietone commentedGood news, a card sort may happen after all! No details yet, just sharing that this issue is not forgotten.
Comment #24
poker10 commentedTo give an update here regarding my previous comment #8 - that comment was relevant until D7 EOL (or until all D7 issues were hidden on d.o.). D7ES programs use their own systems or s.d.o. queue (where components are not same as on d.o.). So I think we probably do not need D7 components anymore (if there is no need for them for Gitlab migration or other technical reasons).
Comment #25
quietone commentedThis dropped of my radar but it may happen early next year. Changing status because of that.
Comment #26
quietone commentedRe #18 and the components not listed in the issue summary. This issue is to improve the organization of the active components. The ones that are inactive could be grouped into an 'archive' or 'deprecated' group. The Gitlab migration issue has a comment about using 'deprecated'.
I asked in #gitlab some questions about the component field to get a better understanding of the plan.
Comment #27
quietone commentedComment #28
dwwThese can't both have the label: "update". This has historically been a source of confusion, anyway. But we can't have 2 tags with the exact same name:
I don't love that Update Status and the new Update Manager (what I think we're branding "autoupdates.module" as) are the same component, but I'll get used to it. 😅 However, we need to distinguish from the db/post_update systems. Maybe:
?
Comment #30
quietone commentedIn Slack, fjgarlin explained that components no longer in use will have a (deprecated) suffix. See https://git.drupalcode.org/project/drupalorg/-/blob/7.x-3.x/drupalorg_gi...
Comment #31
heddnI've opened #3572360: Rename user system => authentication/authorization system just now. Hopefully that can get in while we are solving the larger problems.
Comment #32
quietone commentedStill trying to use a card sort for this and the problem of cost still remains. The free option allows for 15 participants and I think we should do that. So, I think we should just do that. As for selecting people I think we should try for a range of views, a range of experience in the core queue, front end, back end etc.
Keep in mind the results are to aid deciding if any change should be made.
What do you think?
Comment #33
berdirSome (more, years later) drive-by comments:
* as catch already said, the split between entity type and field type providing modules is pretty confusing. comment is in field, content_block is in layout. node is separate. those 3 are all more similar to each other than the other modules in their current groups, and they will get similar/and slimmer over time as we unify and standardize more things. I'd split them in roughly 3 groups: entity/field api (including ui), entity-type-providing modules (node, comment, block_content, taxonomy) and field-type providing modules (datetime, telephone, link, ..). Still worth keeping most if not all of them as dedicated comments
* media.module actually too, that's more like node/comment, an entity-type-providing module and has little to nothing to do with breakpoints, image styles and so on.
* the 3 different menu elements possibly could be combined, at least some of them. path.module is something entirely different though, that's more about routing/request processing, and not menus. we also have the path alias module now.
* page cache and dynamic page cache are also more request processing than caching, similar to rendering/render caching.
* SDC is part of render?
but ultimately, with a few exceptions, all these still deserve to their own thing IMHO, more parent/related components. not sure if gitlab gives us some tools to handle that, adding multiple labels sounds a bit complicated, possibly automated through a bit? if you add telephone.module label, it also gets the parent label automatically, but you can also assign stuff to the parent?