Problem/Motivation

  1. Drupal core has 80 modules.
  2. 10(more ?) modules were added to core in the Drupal 8 cycle.
  3. 1(? more) module, place_block, was removed from core in the Drupal 8 cycle
  4. MAINTAINERS.txt currently has 39 "?" denoting a subsystem or module that has no maintainer.
  5. There are 4 modules, aggregator, tracker, book, forum that were only used by 5% or fewer Drupal sites

We have a lack of maintainers and we have a few modules that are used by very few sites.

Even though these modules don't change much they do require some maintenance and they must be kept up with core deprecations. For instance we had to move all the tests from SimpleTest to PHPUnit. When we update versions of phpunit will have to update all of the tests in these modules.

There are many contrib modules that have 20x the usage of these core modules.

Proposed resolution

We should create a policy to deprecate and remove any module that is used in less than 5% of Drupal sites with each new version of Drupal. This would be the default action if no issue is made to not remove a module. This would move the burden from those that would like to advocate for a module to be deprecated to those that would like to advocate for a module to not be deprecated.

We will have to determine which modules should be exempt from the policy but possible criteria would be:

  1. Only remove modules that were not introduced in the previous major version of Drupal. Therefore for the Drupal 9 recycle we would not by default remove any module that was introduced in the Drupal 9 release cycle. This would give modules more time to gain traction
  2. Do not remove modules that are not recommended for production use or modules that are only needed temporally. These modules would not have usage reflect in the numbers. For instance, migrate_drupal_ui would only need to be installed for brief period of time.
  3. Do not remove experimental modules with this policy. These modules may be removed by the Experimental Modules policy

This policy would not prevent removing other modules from core that do not fall below the 5% usage level. Any module could still be removed from core. The only difference would be that for modules under the threshold it would be the default and an issue would have to be approved to keep them in. For modules above the threshold an issue would have to be approved to remove them(which is the current case).

Remaining tasks

  1. Create a process for getting core sub module stats
  2. Determine when the stats should be run to determine which modules should be removed. When a new major version is released?
  3. Determine what % usage we should use to determine if a module is removed. 5% was just a starting point for discussion.
  4. Determine what the process should be for creating an issue to keep a module even if it has lower usage. For example should you be able to advocate for module to stay in core even though it has less than 5% usage if it has no maintainer?

.

Comments

tedbow created an issue. See original summary.

tedbow’s picture

StatusFileSize
new1.8 KB

Here is file with core module usage

@mixologic got this for me(thanks!) but it is just quick estimate. Just a starting point for discussion. We would need a more formal process to get usage before we started marking modules as deprecate with the suggested policy.

system,352885,100%
file,352881,100%
user,352880,100%
update,352876,100%
field,352807,99.98%
page_cache,327592,92.83%
dynamic_page_cache,324528,91.96%
block,316512,89.69%
filter,315252,89.34%
text,315238,89.33%
node,314944,89.25%
views,308644,87.46%
breakpoint,308397,87.39%
image,308381,87.39%
path,308053,87.3%
editor,307962,87.27%
options,307880,87.25%
link,307813,87.23%
toolbar,307805,87.23%
ckeditor,307358,87.1%
menu_link_content,306854,86.96%
menu_ui,306382,86.82%
config,305888,86.68%
datetime,304235,86.21%
taxonomy,303623,86.04%
field_ui,303538,86.02%
block_content,301902,85.55%
contextual,297094,84.19%
views_ui,294371,83.42%
dblog,289719,82.1%
help,285115,80.8%
automated_cron,282330,80.01%
rdf,279409,79.18%
shortcut,277994,78.78%
history,268414,76.06%
color,264768,75.03%
quickedit,260445,73.8%
tour,253622,71.87%
contact,249150,70.6%
comment,242331,68.67%
path_alias,240716,68.21%
search,237370,67.27%
language,181401,51.41%
big_pipe,180921,51.27%
locale,159351,45.16%
media,114805,32.53%
serialization,105933,30.02%
responsive_image,94908,26.89%
layout_discovery,92385,26.18%
content_translation,85645,24.27%
telephone,83447,23.65%
config_translation,80740,22.88%
rest,72473,20.54%
media_library,53184,15.07%
datetime_range,52303,14.82%
migrate,51008,14.45%
workflows,49823,14.12%
content_moderation,45569,12.91%
hal,44153,12.51%
syslog,43734,12.39%
entity_reference,35415,10.04%
inline_form_errors,35107,9.95%
layout_builder,33143,9.39%
migrate_drupal,30788,8.72%
statistics,30630,8.68%
action,29347,8.32%
ban,28641,8.12%
basic_auth,27797,7.88%
jsonapi,21149,5.99%
book,18054,5.12%
forum,15315,4.34%
aggregator,13666,3.87%
settings_tray,13025,3.69%
migrate_drupal_ui,12958,3.67%
field_layout,11919,3.38%
migrate_drupal_multilingual,11505,3.26%
tracker,10695,3.03%
simpletest,2273,0.64%
workspaces,1191,0.34%
help_topics,667,0.19%
alexpott’s picture

I would suggest that this list is greatly skewed by what is installed in standard. And what reports back - update 100% :D

larowlan’s picture

80% of sites using RDF :P

tedbow’s picture

re #3 yeah we can't really do anything about the standard.profile problem 😞. We could do something about the update.module problem by splitting out functionality that would report back to drupal.org but I am not sure that is something we want to do.

So yes the numbers will always be skewed. I personally think it is still worth removing the modules that are used by very few sites. I think the important change with a policy in place would be that it would be the burden of the people supporting these modules to stay in core to make that case. They also just could stay in core without a maintainer.

tedbow’s picture

Adding an issue from 2017 that the core module usage stats from then

alexpott’s picture

@tedbow yeah I'm more concerned that this work will used to support maintain rdf in core - and prevent things like #2152459: [Policy] Deprecate RDF module and move it to contrib

This issue is also very related to #1273344: Establish heuristics for core feature evaluation

tedbow’s picture

Issue summary: View changes

@alexpott look like I have some reading to do 😉. thanks for the link.

As far as preventing modules from being deprecated that don't fall below this threshold I would hope we could draft a policy where that would not be the case.

I added this to the summary

This policy would not prevent removing other modules from core that do not fall below the 5% usage level. Any module could still be removed from core. The only difference would be that for modules under the threshold it would be the default and an issue would have to be approved to keep them in. For modules above the threshold an issue would have to be approved to remove them(which is the current case).

chi’s picture

I would suggest that this list is greatly skewed by what is installed in standard.

That points to another problem. The list of enabled by default modules in Standard profile is not sensible.

chi’s picture

color,264768,75.03%

That's another curious thing here. I guess the usage of Color module should less than 1%. I think the statistics would be accurate if we only account modules on sites using minimal profile. Not sure if core update module supports this. We could probably ask some Drupal hosting providers (Acquia Cloud, Pantheon, etc) to collect such data for us.

catch’s picture

yoroy’s picture

@catch just updated #1136482: [policy] Deprecate aggregator.module in D9 core and remove it in D10 pointing out that an Aggregator dependency is now holding core back in fully supporting PHP8.

ressa’s picture

kristen pol’s picture

From #3:

I would suggest that this list is greatly skewed by what is installed in standard. And what reports back - update 100% :D

+100

Personally, there are several that I usually turn off or forget to turn off but don't use (when I'm thinking about it, I start with the minimal profile though)... color, comment (used very occasionally), contact (replaced by webform), shortcut, rdf, tour.

Is there any discussion/issue about reducing the number of modules in the standard profile? I searched the issue queue but didn't find anything. Seems like something that would be good to revisit every major release.

catch’s picture

I don't think there's an issue with an overview of modules to add/remove from standard (as opposed to removing from core of which there are many), so opened one here: #3196014: Revisit the modules enabled by the Standard profile

pasqualle’s picture

We could do something about the update.module problem by splitting out functionality that would report back to drupal.org but I am not sure that is something we want to do.

There is lot of room for improvement, I've summarized it in #3199472: Improved data sharing with d.o

g089h515r806’s picture

It is good to see this could happen in Drupal 10. I suggest a similar idea 3 years ago.

https://www.drupal.org/project/ideas/issues/2961289

For Drupal 8, we have made +++++++++++ for it. Big Pipe is great, add it; Rest is great, Add it; migrate is great, add it; Composer is great,add it... For Drupal 9, I suggest, we need do more ---------- work for it. Instead of add more modules to it, I suggest consider remove some modules from core.For examples:

aggregator
book
color
contact
forum
rest
tracker
big_pipe
field layout
migrate
migrate_drupal
migrate_drupal_ui
breakpoint
responsive_image
rdf
basic_auth

These are modules that I think it less important.
big_pipe is great, but I never use it.
migrate is a dedicated module, it is better move it to contributed.

gábor hojtsy’s picture

StatusFileSize
new328.78 KB

Saving current data from @mixologic for posterity, received yesterday.

effulgentsia’s picture

StatusFileSize
new691 bytes

Here's a script that parses #19 and generates the following output:

system: 448399, 100.0%
user: 448396, 100.0%
update: 448330, 100.0%
field: 425152, 94.8%
file: 419732, 93.6%
dynamic_page_cache: 419469, 93.5%
block: 416825, 93.0%
filter: 414338, 92.4%
text: 414307, 92.4%
node: 413878, 92.3%
page_cache: 413824, 92.3%
views: 408124, 91.0%
link: 407842, 91.0%
breakpoint: 407732, 90.9%
image: 407456, 90.9%
editor: 407304, 90.8%
path: 407107, 90.8%
menu_link_content: 407087, 90.8%
toolbar: 406962, 90.8%
menu_ui: 406596, 90.7%
options: 406562, 90.7%
ckeditor: 406384, 90.6%
datetime: 404180, 90.1%
taxonomy: 404081, 90.1%
config: 403421, 90.0%
field_ui: 402004, 89.7%
path_alias: 400173, 89.2%
block_content: 398072, 88.8%
views_ui: 392794, 87.6%
contextual: 390714, 87.1%
dblog: 377252, 84.1%
automated_cron: 370255, 82.6%
rdf: 369659, 82.4%
help: 364303, 81.2%
shortcut: 363948, 81.2%
history: 347093, 77.4%
color: 341802, 76.2%
tour: 318571, 71.0%
contact: 311209, 69.4%
comment: 304285, 67.9%
quickedit: 295570, 65.9%
search: 293040, 65.4%
big_pipe: 266711, 59.5%
language: 253645, 56.6%
locale: 219099, 48.9%
media: 210289, 46.9%
serialization: 157702, 35.2%
responsive_image: 151800, 33.9%
layout_discovery: 146453, 32.7%
media_library: 132644, 29.6%
content_translation: 128436, 28.6%
telephone: 125529, 28.0%
seven: 120832, 26.9%
config_translation: 119935, 26.7%
rest: 115684, 25.8%
standard: 110447, 24.6%
bartik: 99449, 22.2%
stable: 92816, 20.7%
datetime_range: 91550, 20.4%
classy: 88572, 19.8%
workflows: 81902, 18.3%
migrate: 78285, 17.5%
content_moderation: 75585, 16.9%
layout_builder: 70920, 15.8%
inline_form_errors: 61664, 13.8%
syslog: 56869, 12.7%
hal: 55885, 12.5%
ban: 44977, 10.0%
migrate_drupal: 44708, 10.0%
jsonapi: 42265, 9.4%
action: 42030, 9.4%
statistics: 40516, 9.0%
basic_auth: 39048, 8.7%
mysql: 27209, 6.1%
migrate_drupal_ui: 21323, 4.8%
aggregator: 20619, 4.6%
book: 20253, 4.5%
entity_reference: 19624, 4.4%
forum: 19158, 4.3%
settings_tray: 18284, 4.1%
field_layout: 16146, 3.6%
tracker: 13645, 3.0%
sqlite: 5492, 1.2%
claro: 3893, 0.9%
stark: 3778, 0.8%
update_test: 3608, 0.8%
olivero: 2897, 0.6%
ckeditor5: 2522, 0.6%
pgsql: 2427, 0.5%
help_topics: 2296, 0.5%
migrate_drupal_multilingual: 2203, 0.5%
minimal: 2043, 0.5%
locale_test_translate: 2004, 0.4%
workspaces: 1591, 0.4%
chi’s picture

color: 341802, 76.2%

Once again, statistics for modules installed by default is useless. See my comment #10.

effulgentsia’s picture

StatusFileSize
new1.17 KB

Here's a script that breaks it out by Drupal 8 and Drupal 9, and the results (first number is 8, second number is 9, sorted by total):

system: 174050, 264766
user: 100.0%, 100.0%
update: 100.0%, 100.0%
field: 99.4%, 93.4%
file: 99.4%, 91.8%
block: 99.3%, 91.0%
dynamic_page_cache: 96.6%, 92.4%
filter: 99.3%, 90.2%
text: 99.3%, 90.2%
node: 99.1%, 90.2%
page_cache: 95.7%, 90.8%
views: 99.2%, 88.4%
link: 99.2%, 88.3%
breakpoint: 99.1%, 88.3%
image: 99.1%, 88.2%
editor: 99.0%, 88.2%
path: 99.0%, 88.1%
menu_link_content: 99.0%, 88.1%
toolbar: 98.9%, 88.2%
menu_ui: 98.9%, 88.0%
options: 99.0%, 88.0%
ckeditor: 98.9%, 88.0%
datetime: 98.6%, 87.3%
taxonomy: 98.4%, 87.4%
config: 98.4%, 87.1%
field_ui: 98.1%, 86.8%
block_content: 97.8%, 85.5%
views_ui: 97.0%, 84.0%
path_alias: 72.3%, 100.0%
contextual: 96.1%, 83.8%
dblog: 93.7%, 79.9%
automated_cron: 93.9%, 77.6%
rdf: 92.1%, 78.5%
help: 91.4%, 77.0%
shortcut: 91.9%, 76.5%
history: 89.3%, 71.9%
color: 88.1%, 70.7%
tour: 83.6%, 64.6%
contact: 82.4%, 62.9%
comment: 81.5%, 60.9%
quickedit: 83.1%, 56.9%
search: 77.7%, 59.1%
big_pipe: 57.7%, 62.3%
language: 60.4%, 54.9%
locale: 53.7%, 46.5%
media: 40.5%, 52.7%
serialization: 35.7%, 36.0%
responsive_image: 31.9%, 36.2%
layout_discovery: 30.8%, 35.0%
media_library: 20.1%, 36.8%
content_translation: 30.9%, 28.0%
telephone: 27.7%, 29.1%
seven: 44.5%, 16.4%
config_translation: 29.4%, 25.8%
rest: 27.9%, 25.2%
standard: 39.1%, 16.0%
bartik: 36.0%, 13.9%
stable: 45.0%, 5.5%
datetime_range: 17.6%, 23.0%
classy: 45.0%, 3.9%
workflows: 14.8%, 21.1%
migrate: 16.9%, 18.3%
content_moderation: 13.2%, 19.8%
layout_builder: 10.2%, 20.0%
inline_form_errors: 10.8%, 16.2%
syslog: 12.0%, 13.5%
hal: 14.3%, 11.7%
ban: 10.5%, 10.0%
migrate_drupal: 10.7%, 9.8%
jsonapi: 9.6%, 9.6%
action: 10.0%, 9.2%
statistics: 11.5%, 7.7%
basic_auth: 10.9%, 7.5%
migrate_drupal_ui: 4.6%, 5.1%
mysql: 0.4%, 7.5%
aggregator: 3.6%, 5.3%
book: 4.5%, 4.6%
entity_reference: 9.6%, 1.1%
forum: 4.2%, 4.4%
settings_tray: 3.5%, 4.6%
field_layout: 4.6%, 3.1%
tracker: 3.1%, 3.0%
claro: 0.8%, 1.0%
stark: 1.5%, 0.5%
sqlite: 0.0%, 1.4%
update_test: 0.6%, 0.8%
olivero: 0.0%, 1.1%
ckeditor5: 0.0%, 0.9%
help_topics: 0.3%, 0.7%
migrate_drupal_multilingual: 0.7%, 0.4%
minimal: 0.6%, 0.4%
workspaces: 0.3%, 0.4%
locale_test_translate: 0.0%, 0.6%
ressa’s picture

Cool script! Here is the data in table format, for easier readability:

Drupal 8 Drupal 9
system 174050 264766
user 100.0% 100.0%
update 100.0% 100.0%
field 99.4% 93.4%
file 99.4% 91.8%
block 99.3% 91.0%
dynamic_page_cache 96.6% 92.4%
filter 99.3% 90.2%
text 99.3% 90.2%
node 99.1% 90.2%
page_cache 95.7% 90.8%
views 99.2% 88.4%
link 99.2% 88.3%
breakpoint 99.1% 88.3%
image 99.1% 88.2%
editor 99.0% 88.2%
path 99.0% 88.1%
menu_link_content 99.0% 88.1%
toolbar 98.9% 88.2%
menu_ui 98.9% 88.0%
options 99.0% 88.0%
ckeditor 98.9% 88.0%
datetime 98.6% 87.3%
taxonomy 98.4% 87.4%
config 98.4% 87.1%
field_ui 98.1% 86.8%
block_content 97.8% 85.5%
views_ui 97.0% 84.0%
path_alias 72.3% 100.0%
contextual 96.1% 83.8%
dblog 93.7% 79.9%
automated_cron 93.9% 77.6%
rdf 92.1% 78.5%
help 91.4% 77.0%
shortcut 91.9% 76.5%
history 89.3% 71.9%
color 88.1% 70.7%
tour 83.6% 64.6%
contact 82.4% 62.9%
comment 81.5% 60.9%
quickedit 83.1% 56.9%
search 77.7% 59.1%
big_pipe 57.7% 62.3%
language 60.4% 54.9%
locale 53.7% 46.5%
media 40.5% 52.7%
serialization 35.7% 36.0%
responsive_image 31.9% 36.2%
layout_discovery 30.8% 35.0%
media_library 20.1% 36.8%
content_translation 30.9% 28.0%
telephone 27.7% 29.1%
seven 44.5% 16.4%
config_translation 29.4% 25.8%
rest 27.9% 25.2%
standard 39.1% 16.0%
bartik 36.0% 13.9%
stable 45.0% 5.5%
datetime_range 17.6% 23.0%
classy 45.0% 3.9%
workflows 14.8% 21.1%
migrate 16.9% 18.3%
content_moderation 13.2% 19.8%
layout_builder 10.2% 20.0%
inline_form_errors 10.8% 16.2%
syslog 12.0% 13.5%
hal 14.3% 11.7%
ban 10.5% 10.0%
migrate_drupal 10.7% 9.8%
jsonapi 9.6% 9.6%
action 10.0% 9.2%
statistics 11.5% 7.7%
basic_auth 10.9% 7.5%
migrate_drupal_ui 4.6% 5.1%
mysql 0.4% 7.5%
aggregator 3.6% 5.3%
book 4.5% 4.6%
entity_reference 9.6% 1.1%
forum 4.2% 4.4%
settings_tray 3.5% 4.6%
field_layout 4.6% 3.1%
tracker 3.1% 3.0%
claro 0.8% 1.0%
stark 1.5% 0.5%
sqlite 0.0% 1.4%
update_test 0.6% 0.8%
olivero 0.0% 1.1%
ckeditor5 0.0% 0.9%
help_topics 0.3% 0.7%
migrate_drupal_multilingual 0.7% 0.4%
minimal 0.6% 0.4%
workspaces 0.3% 0.4%
locale_test_translate 0.0% 0.6%
catch’s picture

The 8 vs. 9 stats are very interesting. It's good to see layout builder go from 10% to 20% and media_library go from 20% to 36%. Shows new modules added later in 8.x picking up speed.

For some of the downward trajectories, I wonder how much of it is reflecting this:

is driven by this:
standard	39.1%	16.0%
bartik	36.0%	13.9%

The sites currently running Drupal 8 are the ones that are already four months out of support, so more likely to be smaller sites - installed with standard instead of a custom profile or distro (or minimal + install from config), either using bartik, or enabled another theme without uninstalling bartik etc.

So to some extent this may reflect a diverging install base of more frequently vs. less maintained sites as opposed to what the new sites are installing with. If all of the 8.x sites updated to Drupal 9 tomorrow it'd even out some of those stats. But then we still have the issue that we can't tell whether people running standard are using the modules it enabled for them or just haven't uninstalled them.

Mixologic’s picture

One caveat to that data that I always like to repeat: Usage stat data is *not* ground truth, it gives us a good idea of the relative usage, but many sites do not enable updates, so we do not get their data. And many sites that *do* enable updates are default sites that are not necessarily seeing usage.

The stats also get some pollution/weighting by multisite features. One multisite with tons of subsites replicates their requests for each subsite, inflating their numbers.

But its all we have, so if we can imagine any reason that a particular module might be used by sites that dont report, more than others, we might want to consider that.

aaronmchale’s picture

One way we can look at this is how core has changed over time, and how we want it to continue to evolve.

If you compare core of Drupal 6/7 to core of Drupal 8/9, one of the key differences when it comes to modules is that many more of the core modules we have now provide "building block" functionality: Views, JSON:API, Layout Builder, Media, Workflows, etc. Compared to some of the modules that are still there from the days of Drupal 6/7: Book, Color, Tracker, Book, Ban, etc.

There's a trend here, that being those modules which core has introduced in recent years are much more like "building block" modules, where they give you many ways to solve a problem. Whereas some of those modules of earlier years are much more prescriptive in nature, they solve a very specific use-case in a very specific way.

What we can draw from that is that we are moving in that direction where the modules shipped with core are mostly designed to address a particular problem space, but do it in a way that enables many possible different solutions, and those modules complement the existing set of modules. You can use combinations like Field, Views and JSON:API to do some really interesting things. In other words, you can use those modules like building blocks, to build a solution.

Maybe that is what we should be using as a metric, if a module which is designed to solve a particular problem doesn't do it in a way that compliments other modules and doesn't promote that idea of building blocks, then maybe it doesn't belong in core, or maybe it needs to be rewritten (Search is one example that comes to mind which could probably do with being rearchitected). Sure that's more open to interpretation, but in any research you need not just quantitative data, but also qualitative data. To me, what I've outlined here is probably a pretty good metric when it comes to that qualitative side of the coin, which we can use to compliment the quantitative data that we already collect.

gábor hojtsy’s picture

@AaronMcHale: I think we used a variant of that as a deciding factor for the modules we are removing from Drupal 10. We called it "does it have a contrib ecosystem", which does not only indicate whether the module is a building block, but whether people actually used it to build something. Since we are talking about modules that have been in Drupal core for a while, I think this way to look at it works well and is even better than your "is this a building block".

aaronmchale’s picture

@Gábor Yes that's a good way to look at it. The "does it have a contrib ecosystem" question could cover "is this a building block", because a module being a building block means it's easier for a contrib ecosystem to evolve. However, it's still possible for a contrib ecosystem to evolve around a module that's not designed to be a building block, it's just likely that such an ecosystem is smaller and more niche, in which case the module probably doesn't need to be in core.

Thinking about it from a slightly different angle though, when we're evaluating a core module it's probably still worth considering the question of whether it's a building block, because we might answer that question as "yes, but it could be better", which can then lead us down a different path of "okay well we're keeping it in core but we now recognise that some resource is needed to improving or rearchitecting it".

We might also find ourselves saying "this module does not currently have a contrib ecosystem but it's strategically important enough to improve the module so that one could evolve around it", I don't have any examples of that off the top of my head, but it's a scenario that we could run into at some point.

So if you think of it like a flow chart, I think we can use both the "building block" and "ecosystem" questions to determine the best course of action.

matthieuscarset’s picture

I want to +1 this idea.

We all agree several modules and themes do not need to be in core. They could and certainly should live as contrib. However it might be dangerous to deprecate projects automatically with strict predefined rules.

I think what we need in the first place are tools to:

  1. consolidate better usage statistics
  2. make this open data availabe on d.o
  3. gather real feedback from users/developers/site owners

IMHO future of core must be defined by needs form the real world users, not only by us, developers.

lauriii’s picture

I wonder if there are some additional caveats to the data that we are not aware of yet. I don't know if I'm alone with this but it seems strange that only 93.4% have Field enabled, and that only 91.0% have Block enabled. But then Menu UI is enabled by 88.0% of the sites 🤔.

Even more glaring to me is that Claro + Seven have total of 17.4% usage which seems really low. The two of the most popular contrib admin themes have total of around 74500 usages reported which is around 17%. They both depend on either Seven or Claro. Do we think it's possible that there are only 0.4% of sites using Seven or Claro as their admin theme?

catch’s picture

@lauriii at one point tests with update status enabled were reporting back to Drupal.org, if this is still the case then that'd be a lot of sites every month with 'stark' enabled.

wim leers’s picture

If that's true, then shouldn't we be ignoring all update status checks to d.o for sites with stark enabled? 😇 I think only an incredibly small number of Drupal sites will eve have gone into production on stark 🤓

lauriii’s picture

Looks like Stark usage is between 0.5% and 1.5%. Based on that, I'm not sure that #31 helps explain #30.

catch’s picture

@lauriii that's a good point and also reassuring :)

The table in #23 is from March 2022, I think we could expect usage of Claro to have gone up significantly since then since it was marked stable and added to the standard profile in April 2022 (and then 9.4 was released in June). For me, that alone explains low Claro usage - too new to appear in the stats. Even with updated stats, it will probably still take some time to pick up - i.e. for existing sites to switch to Seven to Claro as part of a Drupal 10 upgrade, still a few months of that to go.

This doesn't explain the combined low usage though. Seven was on 44.5% in Drupal 8 according to #23 which seems more what I'd expect although still quite low.

The Drupal 8/9 comparison also shows the drop off with the other modules you mentioned like field - it's at 99+% in Drupal 8, more like 91% in Drupal 9, so that could be indicating collection issues (unless there's a real trend).

lauriii’s picture

Something else that seems off about the data is that between Drupal 8 and 9 Stable usage went from 45.0% to 5.5%, and Classy usage went from: 45.0% to 3.9%. Did this many people really remove their dependency on Classy? If we look at the contrib Classy usage and compare it to Drupal 10.0.x sites, around 13.3% of Drupal 10 sites have Classy installed.

2dareis2do’s picture

What is the latest data on this? Where can I find this?

Also are there any plans to do the opposite? i.e. move contrib modules into core that are installed on more than 5% of sites

https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%...

ckeditor5 usage has probably gone up as well?

catch’s picture

@2dareis2do the data is only available via querying the d.o database, we'd need to ask the DA for updated stats.

The current list of modules that are actively being prepared for a move to contrib is in #3265680: Deprecate dependencies, libraries, modules, and themes that will be removed from Drupal 11 core.

Also are there any plans to do the opposite? i.e. move contrib modules into core that are installed on more than 5% of sites

There are individual issues like #229568: [policy, no patch] Pathauto in core although e.g. pathauto is installed on more like 75% of sites. The main focus on making it easier to find and install modules is on project browser.

2dareis2do’s picture

Thanks @catch

Can I create an issue to make this data publicly available?

Current data is nearly 2 years old. Drupal 10 has been released since then.

Feedback loop is too long.

catch’s picture

@2dareis2do there is probably already a public issue, I would look in the 'drupalorg' issue queue first, and open an issue there if there's not one already.

2dareis2do’s picture

aaronmchale’s picture

Also are there any plans to do the opposite? i.e. move contrib modules into core that are installed on more than 5% of sites

With Project Browser and Recipes soon coming into Core, we might find that we actually don't need to bring more module into core, because the barrier to entry for getting those modules becomes so much lower.

What I mean is that I can imagine a day where, when you setup Drupal, you don't install the standard profile, you pick from a curated set of recipes right in the installer, the recipe takes care of getting all of the modules it needs. Some of those recipes might not even be included with Core, they might life in contrib and the recipe you choose might then be downloaded during the installation. Maybe then core can become even smaller, and thus even more maintainable.

Now, I'm not saying this is definitely where we should go, but what I am saying is that I can see this being a place that we are gradually moving towards.

2dareis2do’s picture

Project Browser reminds me a little of Drupal Gardens.

Our goal is to make it easier to find and install modules for people that are (1) new to Drupal and that are (2) site builders*

Moving popular contributed modules into core also acheives this aim.

drumm’s picture

Here is updated data.

To clean the data, this is how I got the core components:

SET group_concat_max_len = 10000000000; SELECT group_concat(DISTINCT pcc.name SEPARATOR '\\|') FROM project_composer_component pcc INNER JOIN field_data_field_release_project fdf_rp ON fdf_rp.entity_id = pcc.release_nid AND fdf_rp.field_release_project_target_id = 3060\G

nod_’s picture

tried to reformat it, double checking is needed.

module 11 10 9 8
forum 0 % 3 % 4 % 4 %
book 0 % 5 % 3 % 5 %
color 0 % 0 % 53 % 85 %
sdc 0 % 3 % 0 % 0 %
quickedit 0 % 0 % 46 % 79 %
bartik 0 % 0 % 13 % 36 %
ckeditor 0 % 0 % 60 % 97 %
classy 0 % 0 % 6 % 50 %
seven 0 % 0 % 16 % 46 %
rdf 0 % 0 % 72 % 92 %
stable 0 % 0 % 8 % 50 %
starterkit_theme 0 % 0 % 0 % 0 %
statistics 0 % 6 % 10 % 12 %
minimal 0 % 0 % 0 % 1 %
umami 1 % 0 % 0 % 0 %
demo_umami_content 1 % 0 % 0 % 0 %
demo_umami 1 % 0 % 0 % 0 %
layout_builder_expose_all_field_blocks 1 % 8 % 0 % 0 %
stark 1 % 0 % 1 % 1 %
workspaces 1 % 1 % 0 % 0 %
migrate_drupal_ui 2 % 5 % 6 % 5 %
field_layout 2 % 3 % 5 % 5 %
navigation_top_bar 2 % 1 % 0 % 0 %
settings_tray 2 % 5 % 5 % 4 %
migrate_drupal 2 % 16 % 10 % 6 %
basic_auth 2 % 12 % 12 % 8 %
syslog 2 % 21 % 11 % 12 %
migrate 3 % 29 % 18 % 10 %
ban 3 % 17 % 8 % 8 %
jsonapi 3 % 17 % 15 % 8 %
rest 3 % 38 % 33 % 27 %
pgsql 4 % 2 % 2 % 1 %
tour 4 % 49 % 75 % 80 %
navigation 4 % 1 % 0 % 0 %
stable9 4 % 2 % 1 % 0 %
inline_form_errors 4 % 20 % 17 % 9 %
datetime_range 4 % 31 % 24 % 19 %
telephone 5 % 39 % 32 % 28 %
serialization 6 % 52 % 43 % 34 %
content_moderation 6 % 31 % 19 % 8 %
workflows 7 % 34 % 21 % 10 %
phpass 8 % 70 % 0 % 0 %
config_translation 9 % 32 % 33 % 33 %
content_translation 10 % 33 % 35 % 35 %
responsive_image 11 % 48 % 38 % 29 %
layout_builder 15 % 28 % 23 % 14 %
layout_discovery 17 % 43 % 38 % 34 %
media_library 17 % 53 % 44 % 24 %
media 19 % 73 % 58 % 40 %
olivero 24 % 7 % 6 % 0 %
standard 25 % 9 % 22 % 43 %
claro 26 % 9 % 8 % 2 %
locale 28 % 49 % 60 % 58 %
language 30 % 63 % 67 % 62 %
sqlite 33 % 3 % 1 % 0 %
mysql 62 % 96 % 74 % 1 %
announcements_feed 68 % 11 % 0 % 0 %
comment 74 % 62 % 74 % 79 %
search 77 % 57 % 71 % 79 %
contact 78 % 63 % 74 % 79 %
big_pipe 78 % 64 % 71 % 66 %
history 78 % 77 % 83 % 89 %
help 78 % 84 % 84 % 90 %
shortcut 79 % 83 % 89 % 92 %
automated_cron 79 % 83 % 92 % 94 %
block_content 80 % 95 % 98 % 96 %
config 80 % 97 % 99 % 97 %
ckeditor5 80 % 85 % 22 % 0 %
toolbar 80 % 99 % 99 % 97 %
contextual 80 % 94 % 95 % 95 %
taxonomy 80 % 98 % 99 % 97 %
datetime 80 % 98 % 99 % 97 %
options 80 % 99 % 99 % 97 %
views_ui 80 % 94 % 95 % 93 %
path 81 % 99 % 99 % 97 %
image 81 % 99 % 99 % 97 %
menu_ui 81 % 99 % 99 % 97 %
menu_link_content 81 % 99 % 99 % 97 %
field_ui 81 % 97 % 97 % 94 %
editor 81 % 99 % 99 % 97 %
link 81 % 99 % 100 % 97 %
views 81 % 100 % 100 % 97 %
breakpoint 81 % 100 % 100 % 97 %
file 81 % 100 % 100 % 98 %
dblog 90 % 88 % 90 % 92 %
block 91 % 100 % 100 % 98 %
node 91 % 100 % 100 % 98 %
text 91 % 100 % 100 % 98 %
filter 91 % 100 % 100 % 98 %
field 91 % 100 % 100 % 98 %
page_cache 99 % 92 % 95 % 96 %
dynamic_page_cache 99 % 95 % 97 % 96 %
path_alias 100 % 100 % 100 % 100 %
user 100 % 100 % 100 % 100 %
update 100 % 100 % 100 % 100 %
system 100 % 100 % 100 % 100 %
aggregator 0 % 0 % 5 % 4 %
blog 0 % 0 % 0 % 0 %
hal 0 % 0 % 6 % 14 %
help_topics 0 % 0 % 1 % 0 %
tracker 0 % 1 % 3 % 3 %
action 0 % 10 % 11 % 8 %
demo_umami_tour 0 % 0 % 0 % 0 %
outside_in 0 % 0 % 0 % 0 %
simpletest 0 % 0 % 0 % 0 %
migrate_drupal_multilingual 0 % 0 % 0 % 0 %
block_place 0 % 0 % 0 % 0 %
entity_reference 0 % 0 % 0 % 8 %
profile 0 % 0 % 0 % 0 %
quietone’s picture

Title: By default deprecate non-experimental modules that are used by less 5% of sites before the next major version » [Policy] By default deprecate non-experimental modules that are used by less 5% of sites before the next major version
Project: Drupal core ideas » Drupal core
Version: » 11.x-dev
Component: Idea » other

The Ideas project is being deprecated. This issue is moved to the Drupal project. Check that the selected component is correct. Also, add the relevant tags, especially any 'needs manager review' tags.

poker10’s picture

In the last table, pgsql module is 4%. Reading the proposed resolution, seems like that the module would qualify for removal, even if it is a DB driver. Can we exclude DB drivers modules explicitly, as I suppose we do not want to remove PostgreSQL support even if the module usage will be under the treshold?

drumm’s picture

There was a request for updated data in Slack, it is attached.

More notes for myself for next time:

Get the current core components:
SET group_concat_max_len = 10000000000; SELECT group_concat(DISTINCT pcc.name SEPARATOR '\\|') FROM project_composer_component pcc INNER JOIN field_data_field_release_project fdf_rp ON fdf_rp.entity_id = pcc.release_nid AND fdf_rp.field_release_project_target_id = 3060\G

Filter the usage data:
grep '\sdrupal|.*\([the core components]\)$' < /var/log/updatestats/counts/[most recent].submodule_release_counts > drupal-component-usage-by-release-[today].txt

grimreaper’s picture

Thanks @drumm,

Formatting data:

Core 8 9 10 11
system 52928 73909 274975 63239
update 100.0% 100.0% 100.0% 99.9%
user 100.0% 100.0% 100.0% 99.5%
filter 98.8% 100.0% 99.1% 99.4%
block 98.8% 100.0% 99.1% 99.3%
field 98.8% 100.0% 99.2% 99.1%
text 98.8% 100.0% 99.1% 99.1%
node 98.8% 99.9% 99.0% 99.0%
file 98.8% 97.8% 98.3% 98.3%
breakpoint 97.4% 97.7% 98.3% 98.2%
views 97.4% 97.7% 98.3% 98.2%
link 97.4% 97.8% 98.1% 97.5%
image 97.4% 97.7% 98.1% 97.9%
editor 97.3% 97.7% 98.0% 97.4%
menu_link_content 97.3% 97.6% 98.0% 97.2%
path 97.3% 97.5% 98.0% 97.3%
menu_ui 97.3% 97.6% 97.9% 97.1%
options 97.2% 97.5% 97.6% 97.5%
datetime 96.8% 97.0% 96.9% 97.0%
taxonomy 96.7% 96.9% 97.0% 96.9%
toolbar 97.2% 97.5% 97.9% 89.8%
config 96.6% 96.8% 96.4% 96.4%
path_alias 67.2% 100.0% 100.0% 99.5%
dynamic_page_cache 95.6% 95.4% 95.5% 97.6%
field_ui 95.5% 96.1% 96.3% 93.7%
views_ui 95.0% 94.8% 94.0% 92.7%
contextual 95.2% 93.7% 93.4% 94.3%
block_content 96.5% 96.1% 95.1% 82.2%
page_cache 95.6% 94.6% 91.7% 94.9%
dblog 94.7% 94.1% 87.7% 90.2%
automated_cron 95.0% 92.9% 82.3% 83.4%
help 91.1% 83.7% 83.9% 75.1%
shortcut 92.5% 89.0% 82.1% 75.4%
mysql 0.7% 71.8% 95.8% 91.3%
history 90.5% 85.4% 77.6% 71.9%
ckeditor5 0.0% 21.4% 88.2% 96.2%
big_pipe 59.6% 71.3% 64.3% 77.3%
comment 82.3% 74.8% 60.8% 67.2%
contact 82.8% 73.4% 59.8% 67.2%
media 32.9% 55.9% 73.0% 61.5%
language 61.4% 66.1% 65.2% 59.1%
search 83.8% 75.1% 55.6% 60.5%
locale 58.4% 59.5% 50.9% 49.2%
media_library 18.3% 40.5% 55.2% 52.3%
phpass 0.0% 0.0% 70.5% 36.4%
serialization 27.9% 38.4% 52.6% 35.8%
tour 84.5% 78.4% 36.7% 0.2%
responsive_image 27.7% 35.0% 47.6% 40.0%
layout_discovery 29.6% 36.2% 42.3% 47.9%
telephone 23.7% 27.3% 40.7% 32.9%
rest 20.2% 30.4% 41.2% 21.3%
content_translation 32.6% 31.8% 32.4% 32.7%
config_translation 31.0% 29.8% 33.2% 31.0%
datetime_range 15.4% 20.4% 33.5% 24.8%
workflows 7.9% 17.7% 33.8% 28.3%
layout_builder 10.1% 21.1% 28.6% 40.4%
content_moderation 6.5% 15.8% 31.5% 26.8%
migrate 9.4% 15.8% 28.3% 18.0%
rdf 92.9% 74.0% 0.1% 0.0%
ckeditor 97.1% 62.8% 0.1% 0.0%
color 87.9% 54.1% 0.1% 0.0%
inline_form_errors 7.8% 14.9% 19.6% 23.1%
quickedit 81.7% 44.1% 0.0% 0.0%
syslog 7.9% 12.8% 20.3% 9.7%
standard 43.8% 25.2% 7.6% 13.8%
announcements_feed 0.0% 0.0% 12.3% 51.9%
jsonapi 5.5% 11.1% 18.1% 7.5%
ban 6.6% 8.1% 17.1% 10.8%
migrate_drupal 5.8% 9.9% 14.8% 10.8%
basic_auth 6.6% 12.1% 13.1% 8.6%
seven 54.7% 19.1% 0.1% 0.0%
stable 56.9% 9.4% 0.2% 0.0%
claro 1.1% 8.5% 7.4% 13.8%
classy 56.9% 7.1% 0.2% 0.0%
layout_builder_expose_all_field_blocks 0.0% 0.0% 12.5% 1.7%
bartik 44.3% 15.2% 0.1% 0.0%
action 7.5% 12.3% 6.5% 0.0%
olivero 0.0% 7.0% 5.7% 12.4%
statistics 12.0% 11.2% 4.2% 0.0%
migrate_drupal_ui 4.3% 5.7% 5.5% 5.9%
settings_tray 3.1% 4.7% 4.4% 3.3%
navigation 0.0% 0.0% 1.7% 20.5%
field_layout 4.5% 5.1% 3.0% 3.3%
sqlite 0.2% 0.5% 2.1% 10.0%
book 4.0% 3.5% 2.8% 0.0%
pgsql 0.3% 1.7% 2.5% 4.1%
hal 11.6% 5.6% 0.0% 0.0%
forum 5.1% 3.2% 1.4% 0.0%
stable9 0.0% 1.2% 1.9% 2.8%
tracker 2.7% 3.4% 1.2% 0.0%
navigation_top_bar 0.0% 0.0% 1.0% 5.0%
aggregator 3.5% 3.3% 0.0% 0.0%
package_manager 0.0% 0.0% 0.0% 6.2%
workspaces 0.3% 0.4% 0.7% 1.6%
entity_reference 5.7% 0.2% 0.0% 0.0%
sdc 0.0% 0.0% 1.1% 0.0%
stark 1.8% 0.6% 0.3% 0.6%
help_topics 0.2% 1.2% 0.3% 0.0%
ressa’s picture

Thanks @grimreaper! Here are the percentage values sorted descending for Drupal 10 and Drupal 11 values. I finally figured out how to sort numbers in Libre Office Calc: "Data" > "Sort", and "Natural Sort" (number sort) under "Options".

Drupal 10 sorted descending

Core

8

9

10

11

system

52928

73909

274975

63239

update

100.0

100.0

100.0

99.9

user

100.0

100.0

100.0

99.5

path_alias

67.2

100.0

100.0

99.5

field

98.8

100.0

99.2

99.1

filter

98.8

100.0

99.1

99.4

block

98.8

100.0

99.1

99.3

text

98.8

100.0

99.1

99.1

node

98.8

99.9

99.0

99.0

file

98.8

97.8

98.3

98.3

breakpoint

97.4

97.7

98.3

98.2

views

97.4

97.7

98.3

98.2

image

97.4

97.7

98.1

97.9

link

97.4

97.8

98.1

97.5

editor

97.3

97.7

98.0

97.4

path

97.3

97.5

98.0

97.3

menu_link_content

97.3

97.6

98.0

97.2

menu_ui

97.3

97.6

97.9

97.1

toolbar

97.2

97.5

97.9

89.8

options

97.2

97.5

97.6

97.5

taxonomy

96.7

96.9

97.0

96.9

datetime

96.8

97.0

96.9

97.0

config

96.6

96.8

96.4

96.4

field_ui

95.5

96.1

96.3

93.7

mysql

0.7

71.8

95.8

91.3

dynamic_page_cache

95.6

95.4

95.5

97.6

block_content

96.5

96.1

95.1

82.2

views_ui

95.0

94.8

94.0

92.7

contextual

95.2

93.7

93.4

94.3

page_cache

95.6

94.6

91.7

94.9

ckeditor5

0.0

21.4

88.2

96.2

dblog

94.7

94.1

87.7

90.2

help

91.1

83.7

83.9

75.1

automated_cron

95.0

92.9

82.3

83.4

shortcut

92.5

89.0

82.1

75.4

history

90.5

85.4

77.6

71.9

media

32.9

55.9

73.0

61.5

phpass

0.0

0.0

70.5

36.4

language

61.4

66.1

65.2

59.1

big_pipe

59.6

71.3

64.3

77.3

comment

82.3

74.8

60.8

67.2

contact

82.8

73.4

59.8

67.2

search

83.8

75.1

55.6

60.5

media_library

18.3

40.5

55.2

52.3

serialization

27.9

38.4

52.6

35.8

locale

58.4

59.5

50.9

49.2

responsive_image

27.7

35.0

47.6

40.0

layout_discovery

29.6

36.2

42.3

47.9

rest

20.2

30.4

41.2

21.3

telephone

23.7

27.3

40.7

32.9

tour

84.5

78.4

36.7

0.2

workflows

7.9

17.7

33.8

28.3

datetime_range

15.4

20.4

33.5

24.8

config_translation

31.0

29.8

33.2

31.0

content_translation

32.6

31.8

32.4

32.7

content_moderation

6.5

15.8

31.5

26.8

layout_builder

10.1

21.1

28.6

40.4

migrate

9.4

15.8

28.3

18.0

syslog

7.9

12.8

20.3

9.7

inline_form_errors

7.8

14.9

19.6

23.1

jsonapi

5.5

11.1

18.1

7.5

ban

6.6

8.1

17.1

10.8

migrate_drupal

5.8

9.9

14.8

10.8

basic_auth

6.6

12.1

13.1

8.6

layout_builder_expose_all_field_blocks

0.0

0.0

12.5

1.7

announcements_feed

0.0

0.0

12.3

51.9

standard

43.8

25.2

7.6

13.8

claro

1.1

8.5

7.4

13.8

action

7.5

12.3

6.5

0.0

olivero

0.0

7.0

5.7

12.4

migrate_drupal_ui

4.3

5.7

5.5

5.9

settings_tray

3.1

4.7

4.4

3.3

statistics

12.0

11.2

4.2

0.0

field_layout

4.5

5.1

3.0

3.3

book

4.0

3.5

2.8

0.0

pgsql

0.3

1.7

2.5

4.1

sqlite

0.2

0.5

2.1

10.0

stable9

0.0

1.2

1.9

2.8

navigation

0.0

0.0

1.7

20.5

forum

5.1

3.2

1.4

0.0

tracker

2.7

3.4

1.2

0.0

sdc

0.0

0.0

1.1

0.0

navigation_top_bar

0.0

0.0

1.0

5.0

workspaces

0.3

0.4

0.7

1.6

stark

1.8

0.6

0.3

0.6

help_topics

0.2

1.2

0.3

0.0

stable

56.9

9.4

0.2

0.0

classy

56.9

7.1

0.2

0.0

rdf

92.9

74.0

0.1

0.0

ckeditor

97.1

62.8

0.1

0.0

color

87.9

54.1

0.1

0.0

seven

54.7

19.1

0.1

0.0

bartik

44.3

15.2

0.1

0.0

package_manager

0.0

0.0

0.0

6.2

quickedit

81.7

44.1

0.0

0.0

hal

11.6

5.6

0.0

0.0

aggregator

3.5

3.3

0.0

0.0

entity_reference

5.7

0.2

0.0

0.0

Drupal 11 sorted descending

Core

8

9

10

11

system

52928

73909

274975

63239

update

100.0

100.0

100.0

99.9

user

100.0

100.0

100.0

99.5

path_alias

67.2

100.0

100.0

99.5

filter

98.8

100.0

99.1

99.4

block

98.8

100.0

99.1

99.3

field

98.8

100.0

99.2

99.1

text

98.8

100.0

99.1

99.1

node

98.8

99.9

99.0

99.0

file

98.8

97.8

98.3

98.3

breakpoint

97.4

97.7

98.3

98.2

views

97.4

97.7

98.3

98.2

image

97.4

97.7

98.1

97.9

dynamic_page_cache

95.6

95.4

95.5

97.6

link

97.4

97.8

98.1

97.5

options

97.2

97.5

97.6

97.5

editor

97.3

97.7

98.0

97.4

path

97.3

97.5

98.0

97.3

menu_link_content

97.3

97.6

98.0

97.2

menu_ui

97.3

97.6

97.9

97.1

datetime

96.8

97.0

96.9

97.0

taxonomy

96.7

96.9

97.0

96.9

config

96.6

96.8

96.4

96.4

ckeditor5

0.0

21.4

88.2

96.2

page_cache

95.6

94.6

91.7

94.9

contextual

95.2

93.7

93.4

94.3

field_ui

95.5

96.1

96.3

93.7

views_ui

95.0

94.8

94.0

92.7

mysql

0.7

71.8

95.8

91.3

dblog

94.7

94.1

87.7

90.2

toolbar

97.2

97.5

97.9

89.8

automated_cron

95.0

92.9

82.3

83.4

block_content

96.5

96.1

95.1

82.2

big_pipe

59.6

71.3

64.3

77.3

shortcut

92.5

89.0

82.1

75.4

help

91.1

83.7

83.9

75.1

history

90.5

85.4

77.6

71.9

comment

82.3

74.8

60.8

67.2

contact

82.8

73.4

59.8

67.2

media

32.9

55.9

73.0

61.5

search

83.8

75.1

55.6

60.5

language

61.4

66.1

65.2

59.1

media_library

18.3

40.5

55.2

52.3

announcements_feed

0.0

0.0

12.3

51.9

locale

58.4

59.5

50.9

49.2

layout_discovery

29.6

36.2

42.3

47.9

layout_builder

10.1

21.1

28.6

40.4

responsive_image

27.7

35.0

47.6

40.0

phpass

0.0

0.0

70.5

36.4

serialization

27.9

38.4

52.6

35.8

telephone

23.7

27.3

40.7

32.9

content_translation

32.6

31.8

32.4

32.7

config_translation

31.0

29.8

33.2

31.0

workflows

7.9

17.7

33.8

28.3

content_moderation

6.5

15.8

31.5

26.8

datetime_range

15.4

20.4

33.5

24.8

inline_form_errors

7.8

14.9

19.6

23.1

rest

20.2

30.4

41.2

21.3

navigation

0.0

0.0

1.7

20.5

migrate

9.4

15.8

28.3

18.0

standard

43.8

25.2

7.6

13.8

claro

1.1

8.5

7.4

13.8

olivero

0.0

7.0

5.7

12.4

ban

6.6

8.1

17.1

10.8

migrate_drupal

5.8

9.9

14.8

10.8

sqlite

0.2

0.5

2.1

10.0

syslog

7.9

12.8

20.3

9.7

basic_auth

6.6

12.1

13.1

8.6

jsonapi

5.5

11.1

18.1

7.5

package_manager

0.0

0.0

0.0

6.2

migrate_drupal_ui

4.3

5.7

5.5

5.9

navigation_top_bar

0.0

0.0

1.0

5.0

pgsql

0.3

1.7

2.5

4.1

settings_tray

3.1

4.7

4.4

3.3

field_layout

4.5

5.1

3.0

3.3

stable9

0.0

1.2

1.9

2.8

layout_builder_expose_all_field_blocks

0.0

0.0

12.5

1.7

workspaces

0.3

0.4

0.7

1.6

stark

1.8

0.6

0.3

0.6

tour

84.5

78.4

36.7

0.2

rdf

92.9

74.0

0.1

0.0

ckeditor

97.1

62.8

0.1

0.0

color

87.9

54.1

0.1

0.0

quickedit

81.7

44.1

0.0

0.0

seven

54.7

19.1

0.1

0.0

stable

56.9

9.4

0.2

0.0

classy

56.9

7.1

0.2

0.0

bartik

44.3

15.2

0.1

0.0

action

7.5

12.3

6.5

0.0

statistics

12.0

11.2

4.2

0.0

book

4.0

3.5

2.8

0.0

hal

11.6

5.6

0.0

0.0

forum

5.1

3.2

1.4

0.0

tracker

2.7

3.4

1.2

0.0

aggregator

3.5

3.3

0.0

0.0

entity_reference

5.7

0.2

0.0

0.0

sdc

0.0

0.0

1.1

0.0

help_topics

0.2

1.2

0.3

0.0

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.

ressa’s picture

I was looking at #3466088: [meta] Deprecate dependencies, libraries, modules, and themes that will be removed from Drupal 12 core and remembered this issue.

Drupal 12 should be released with 65 core modules. These 11 core modules will be removed, where some are already moved to contrib, others are in the process:

  • ban
  • contact
  • field_layout
  • history
  • migrate_drupal
  • migrate_drupal_ui
  • search
  • settings_tray
  • shortcut
  • telephone
  • toolbar

13 core modules have been added since July 2020:

  • announcements_feed
  • ckeditor5
  • mailer
  • mysql
  • mysqli
  • navigation
  • package_manager
  • pgsql
  • phpass
  • sdc
  • sqlite
  • workspaces
  • workspaces_ui

... and 28 core modules have been removed:

  • action
  • aggregator
  • ban
  • book
  • ckeditor
  • color
  • contact
  • entity_reference
  • field_layout
  • forum
  • hal
  • help_topics
  • history
  • migrate_drupal
  • migrate_drupal_multilingual
  • migrate_drupal_ui
  • quickedit
  • rdf
  • search
  • settings_tray
  • shortcut
  • simpletest
  • statistics
  • telephone
  • toolbar
  • tour
  • tracker
  • workspaces

Perhaps it's possible to get a list with updated data in September, like in 2024 and 2025? (comment #43 and #47)

quietone’s picture

Title: [Policy] By default deprecate non-experimental modules that are used by less 5% of sites before the next major version » [policy, no patch] By default deprecate non-experimental modules that are used by less 5% of sites before the next major version