Problem

  • Some field modules provide functionality that is unrelated to the field functionality.
  • Other modules may depend on the non-field functionality, but need to add the full stack of entity and field modules.

Goal

  • Untangle non-field functionality from field functionality.

Proposed solution (short-term)

  1. Move all field functionality into a new, separate [type]_field.module.

    E.g., so there is a file.module and a file_field.module.

  2. Only change the module name; type/widget/formatter definitions don't need to be renamed — the additional "field" suffix would be superfluous within the Field API context.
  3. Consider to move all field modules into a single folder; e.g.:
    core/modules/fields/file_field
    core/modules/fields/image_field
    core/modules/fields/number_field
    core/modules/fields/options_field
    core/modules/fields/text_field
    

    - or alternatively - use a "field_" prefix instead of suffix and use no grouping folder at all; e.g.:

    core/modules/field
    core/modules/field_ui
    core/modules/field_file
    core/modules/field_image
    core/modules/field_number
    core/modules/field_options
    core/modules/field_text
    

Proposed solution (long-term)

  1. Convert all built-in fields in core into field plugins, provided by Field module itself.
    core/modules/field/lib/Drupal/field/Plugin/FieldType/File
    core/modules/field/lib/Drupal/field/Plugin/FieldType/Image
    core/modules/field/lib/Drupal/field/Plugin/FieldType/Number
    core/modules/field/lib/Drupal/field/Plugin/FieldType/Options
    core/modules/field/lib/Drupal/field/Plugin/FieldType/Text
    

Related issues

  • [#]
  • [#]
  • [#]
  • [#]

Comments

berdir’s picture

For completeness, the *field (without _) module names have been discussed/suggested before as well, not exactly sure which is better. Also, did you leave out image.module for a specific reason or just forgot about it? :)

sun’s picture

Issue summary: View changes

Updated issue summary.

tim.plunkett’s picture

Category: task » feature

I'm sorry, but this is not an issue that should count toward thresholds. The problems outlined above seem to be for architectural purity's sake only.

Note that I don't disagree with this idea.

sun’s picture

sun’s picture

Issue summary: View changes

Updated issue summary.

andypost’s picture

Priority: Major » Normal
Issue summary: View changes

seems mostly done

berdir’s picture

It's not done at all, but I guess it also not going to happen anymore in 8.x?

sun’s picture

Isn't it a much better question why we still have separate modules to provide field types?

From the issue summary:

Proposed solution (long-term)

Convert all built-in fields in core into field plugins, provided by Field module itself.

In fact, the majority of these .module files are almost empty now:

They're just providing

  1. Help
  2. Libraries
  3. Conditional field info/formatter adjustments

Only the following field modules are more complex:

By moving the simple field type plugins directly into Field module, we'd

  1. Vastly simplify the user interface and experience.
  2. Get rid of some ugly circular dependency hell.

Doing that appears to be a really trivial patch, and I'm not able to see any problems or caveats?

Thoughts?

yched’s picture

The goal of #2150511: [meta] Deduplicate the set of available field types is to merge the set of field types used by "base fields" and configurable fields. De facto, this would move most "basic" field types into Core/Field.

This issue over there is a much more valuable goal IMO, and could really use some hands :-)

sun’s picture

#2191285: Text module is not required, but is marked as required just made the last field type module not required anymore.

As a consequence, we should now be able to do #2199637: Replace "required" flag of Field module with proper dependencies


That said, the same question as in #7 came up once more — merging the trivial field type plugins into Field module itself would simplify a lot of things, while still retaining a module as a provider for hooks, CMI, etc.pp. (which is an aspect that a move into Drupal/Core/Field would have to additionally solve)

And regardless of where the field types are moved, plenty of tests will need to be adjusted to no longer enable the corresponding field type modules in their setUp().

Thus, wouldn't it make sense to attempt a move into Field module as an interim step?

yched’s picture

Works for me.

Only worry (which would be true with a move to Drupal/Core/Field too) is the discovery folders for field types, widgets and formatters each becoming a large flat unorganised list of classes, while the current "module by field type" split keeps "field type, widget & formatter classes for type A" in one place, "field type, widget & formatter classes for type B" in another place.

There's probably not much to do about that though, other that possibly, if need be, renaming a couple classes for consistency & ease of human navigability.

sun’s picture

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

smustgrave’s picture

Status: Active » Postponed (maintainer needs more info)
Issue tags: +stale-issue-cleanup

Thank you for sharing your idea for improving Drupal.

We are working to decide if this proposal meets the Criteria for evaluating proposed changes. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or there is no community support. Your thoughts on this will allow a decision to be made.

Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.

Thanks!

smustgrave’s picture

Status: Postponed (maintainer needs more info) » Closed (outdated)

Since there's been no follow up in 3 months going to close out, but this can always be re-opened.

Thanks all!

, think I've also heard a few people talk about consolidating them into sub-modules?