Title: Fields API Kick-off Chat Summary: January 5th, 2023
Author: Scott Kingsley Clark
Published: January 9, 2023

---

 [  ](https://profiles.wordpress.org/sc0ttkclark/) [Scott Kingsley Clark](https://profiles.wordpress.org/sc0ttkclark/)
5:22 pm _on_ January 9, 2023     
Tags: [feature plugins ( 122 )](https://make.wordpress.org/core/tag/feature-plugins/),
[fields-api ( 22 )](https://make.wordpress.org/core/tag/fields-api/), [options-meta ( 33 )](https://make.wordpress.org/core/tag/options-meta/),
[summary ( 981 )](https://make.wordpress.org/core/tag/summary/)   

# Fields API Kick-off Chat Summary: January 5th, 2023

_It’s been over 4 years_ since the [Fields API project](https://make.wordpress.org/core/tag/fields-api/)
has been active and many things have changed for WordPress in that period.

Since then, many things were introduced into WordPress itself including things like:

 * BlockBlock Block is the abstract term used to describe units of markup that, 
   composed together, form the content or layout of a webpage using the WordPress
   editor. The idea combines concepts of what in the past may have achieved with
   shortcodes, custom HTML, and embed discovery into a single consistent API and
   user experience. Editor
 * Full Site Editing has replaced the CustomizerCustomizer Tool built into WordPress
   core that hooks into most modern themes. You can use it to preview and modify
   many of your site’s appearance settings. (which is now only used for classic 
   themes)
 * New Navigation editing
 * Widgets are now legacy and have been replaced with new blocks and a new WidgetWidget
   A WordPress Widget is a small block that performs a specific function. You can
   add these widgets in sidebars also known as widget-ready areas on your web page.
   WordPress widgets were originally created to provide a simple and easy-to-use
   way of giving design and structure control of the WordPress theme to the user.
   editor
 * Newer PHPPHP The web scripting language in which WordPress is primarily architected.
   WordPress requires PHP 7.4 or higher compatibility (testing still in progress
   for PHP 8.0+) and talks of upping the minimum PHP version

All of that has led to [@joedolson](https://profiles.wordpress.org/joedolson/) approaching
me to determine if it’s worth bringing Fields APIAPI An API or Application Programming
Interface is a software intermediary that allows programs to interact with each 
other and share data in limited, clearly defined ways. back with a new vision.

After some initial discussion, the passion reignited within me to get this going
again and we ended up having our first kick-off meeting today to discuss where we’ve
been, where we’re at, and where we want to go in 2023. This and future work will
be organized through our SlackSlack Slack is a Collaborative Group Chat Platform
[https://slack.com/](https://slack.com/). The WordPress community has its own Slack
Channel at [https://make.wordpress.org/chat/](https://make.wordpress.org/chat/) 
channel [#core-fields](https://wordpress.slack.com/archives/C04MWK7PZ)

Read below for what we discussed and here’s a link to watch the video from our initial
meeting.

## Video recording

The kick-off discussion

## Meeting notes

### Introductions

 * [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/) – Scott Kingsley 
   Clark
    - Senior Software Engineer at Pagely / GoDaddy
    - Lead Developer of the Pods Framework
    - Previously Co-Lead of the Fields API project from 2013-2016 with [@ericlewis](https://profiles.wordpress.org/ericlewis/)
      and then Lead Developer from 2016-2017
 * [@borkweb](https://profiles.wordpress.org/borkweb/) – Matthew Batchelder
    - Been working with WordPress since ~2004
    - Worked with The Events Calendar and now Director of Engineering at StellarWP
      overseeing their products and initiatives
 * [@joedolson](https://profiles.wordpress.org/joedolson/) – Joe Dolson
    - Contributing to WordPress since about 2006
    - WP CoreCore Core is the set of software required to run WordPress. The Core
      Development Team builds WordPress. Committercommitter A developer with commit
      access. WordPress has five lead developers and four permanent core developers
      with commit access. Additionally, the project usually has a few guest or component
      committers - a developer receiving commit access, generally for a single release
      cycle (sometimes renewed) and/or for a specific component.
    - Working on the AccessibilityAccessibility Accessibility (commonly shortened
      to a11y) refers to the design of products, devices, services, or environments
      for people with disabilities. The concept of accessible design ensures both“
      direct access” (i.e. unassisted) and “indirect access” meaning compatibility
      with a person’s assistive technology (for example, computer screen readers).(
      https://en.wikipedia.org/wiki/Accessibility) team
    - Reached out to Scott about Fields API from the perspective of improving accessibility
      for the Settings page
 * [@jason_the_adams](https://profiles.wordpress.org/jason_the_adams/) – Jason Adams
    - Manager of Development at GiveWP
    - Matt and him want to get together about how to help create unified libraries
      for multiple projects across StellarWP and other companies
    - GiveWP has it’s own Field API that it’s been pushing forward as well
 * [@peteringersoll](https://profiles.wordpress.org/peteringersoll/) – Peter Ingersoll
    - Worked with WP for about 10 years
    - Not a developer but a user/self-titled user advocate
    - Coming at this as a perspective as a user who is interested in how this will
      work

### Overview of Fields API – where we started

 * Started work in November 2013 with [@ericlewis](https://profiles.wordpress.org/ericlewis/)
   as lead and [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/) as co-
   lead
 * Started holding meetings back when Freenode IRCIRC Internet Relay Chat, a network
   where users can have conversations online. IRC channels are used widely by open
   source projects, and by WordPress. The primary WordPress channels are **#wordpress**
   and **#wordpress-dev**, on irc.freenode.net. was being used before Slack
 * Initial focus was around Post metaMeta Meta is a term that refers to the inside
   workings of a group. For us, this is the team that works on internal WordPress
   sites like WordCamp Central and Make WordPress. fields and meta boxes in the 
   Post Editor
 * Expanded over time to cover a generalized API to work with
    - Post meta boxes and their fields
    - Settings fields (replacing the Settings API)
    - User profile fields (edit profile, add new user)
    - Term fields (add term, edit term)
    - Comment fields (add comment on frontend, edit comment in dashboard)
    - Media fields (modal)
    - Customizer (allowing the Customizer to see Fields API configurations)
 * We built 3 different prototypes over time
 * Hundred of plugins in WP have their own Fields API and lots of devs have their
   own preference on code structure so there were lots of voices with different 
   opinions for what the Fields API should look like
 * WP Core team (committers and contributors) were somewhat receptive but we couldn’t
   gain momentum
 * The block editor and other projects started up which reduced priority for getting
   Fields API into WP especially since it wasn’t just one small part of WP
 * [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/) reached out for anyone
   else to take over the project as lead (while Scott supported) but couldn’t find
   anyone so the project became inactive

### Rebooting Fields API – where we’re at

 * [@joedolson](https://profiles.wordpress.org/joedolson/) approached [@courane01](https://profiles.wordpress.org/courane01/)
   and [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/) to see if we 
   wanted to tackle Accessibility as a goal for a smaller reboot of the Fields API
 * The [GitHub repository](https://github.com/sc0ttkclark/wordpress-fields-api) 
   has been unarchived and is ready to start the next steps of getting things going
   again
 * Lots of test coverage for the API itself
 * A number of examples of how to work with the API
 * Implementations that were covered at the time (in WP 4.5)
    - [Post types](https://github.com/sc0ttkclark/wordpress-fields-api/issues/26)
       * Meta boxes
    - [Taxonomies](https://github.com/sc0ttkclark/wordpress-fields-api/issues/28)
       * Add term form
       * Edit term form
    - [Comments](https://github.com/sc0ttkclark/wordpress-fields-api/issues/31)
       * Meta boxes
    - [Settings](https://github.com/sc0ttkclark/wordpress-fields-api/issues/33)
       * General
       * Permalink
       * Reading
       * Writing
       * Custom settings
    - [User](https://github.com/sc0ttkclark/wordpress-fields-api/issues/29)
       * Edit user form
 * Things that were in progress at the time (in WP 4.5)
    - [Nav menu item fields](https://github.com/sc0ttkclark/wordpress-fields-api/issues/34)(
      [PR](https://github.com/sc0ttkclark/wordpress-fields-api/pull/68))
    - [Widget forms](https://github.com/sc0ttkclark/wordpress-fields-api/issues/27)(
      [PR](https://github.com/sc0ttkclark/wordpress-fields-api/pull/69))
    - [Repeatable field type](https://github.com/sc0ttkclark/wordpress-fields-api/issues/8)(
      [PR](https://github.com/sc0ttkclark/wordpress-fields-api/pull/61))
    - [Media fields](https://github.com/sc0ttkclark/wordpress-fields-api/issues/32)
    - [Customizer](https://github.com/sc0ttkclark/wordpress-fields-api/issues/25)(
      was not added back to the last prototype)
 * [@jason_the_adams](https://profiles.wordpress.org/jason_the_adams/) gave a demo
   of the GiveWP Fields API
    - Uses a mid-level API to register the configurations
    - Implementations handle rendering those
    - The primary implementation is a Block Editor powered form editing experience
    - [@borkweb](https://profiles.wordpress.org/borkweb/) and [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/)
      provided positive feedback about the PHP side of things

### Where we’re going

 * [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/) What PHP version 
   should we target?
    - PHP 5.6 is the current minimum and we’ll stick to that unless progress is 
      made on upping the minimum WP version
    - If the minimum version is upped, we can revisit this and adjust our code to
      follow suit
 * [@borkweb](https://profiles.wordpress.org/borkweb/) How we approach things in
   WP now is much different than back when the Fields API started
    - Is there merit in separation of data and output like what GiveWP is doing 
      versus what the very coupled approach that the Fields API has right now
 * [@joedolson](https://profiles.wordpress.org/joedolson/) Whether this can be potentially
   be used for the Block Editor may have a big impact on whether it has traction,
   though there are plenty places where it could be useful
 * [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/)
    - Content areas like Posts and Terms, we’ll likely see more expansion of the
      Block Editor
    - There are a few places in WP that may not make sense to be in the block editor
      itself
       * Settings
       * User profile
       * Maybe others?
    - Those areas may eventually use ReactReact React is a JavaScript library that
      makes it easy to reason about, construct, and maintain stateless and stateful
      user interfaces. [https://reactjs.org](https://reactjs.org/) components to
      render but won’t live in the “Block Editor” that we know of today
    - We could separate the Fields API focus into specific component implementations,
      not unlike what we had before but with the goal being that we are registering
      structure – whether or not that is the same exact input used for each screen(
      some screens will need their own form implementations for their inputs that
      may not be HTMLHTML HyperText Markup Language. The semantic scripting language
      primarily used for outputting content in web browsers. renders)
    - If we wanted to implement Fields API for the Block Editor, it could help register
      Components for the Inspector Panel for Blocks, which is currently an area 
      with high copy/paste
       * Fields API could register Inspector Panel sections and components
    - PHP has grown up and it may be better to use objects than straight PHP arrays
      especially since that can work with IDEs and help with autocomplete for a 
      better developer experience
    - With the Fields API, I want to make possible the idea that you can interact
      with the configuration of a form and add/change fields by registering new 
      fields or adjusting their configurations
    - Knowing what the structure of a page is (outside of just basic actions that
      people use now to render HTML) gives devs the ability to take those configurations
      and consume them through WP-CLIWP-CLI WP-CLI is the Command Line Interface
      for WordPress, used to do administrative and development tasks in a programmatic
      way. The project page is [http://wp-cli.org/](http://wp-cli.org/) [https://make.wordpress.org/cli/](https://make.wordpress.org/cli/),
      the REST APIREST API The REST API is an acronym for the RESTful Application
      Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE
      data. It is how the front end of an application (think “phone app” or “website”)
      can communicate with the data store (think “database” or “file system”) [https://developer.wordpress.org/rest-api/](https://developer.wordpress.org/rest-api/),
      and PHP for custom implementations like the WordPress iOSiOS The operating
      system used on iPhones and iPads. app and many other apps that need to represent
      the various edit screens
 * [@borkweb](https://profiles.wordpress.org/borkweb/) So the Fields API project
   would morph into a data layer and one or more rendering implementations to consume
   that
 * [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/)
    - We can focus on Settings page at first and go from there into the User profile,
      but leave everything else out until we gain traction and get something into
      Core
    - Don’t focus on legacy things like the Classic Editor or Customizer or the 
      Widget forms
 * [@joedolson](https://profiles.wordpress.org/joedolson/) Getting this built out
   and implemented is a challenge but I’m game
 * [@sc0ttkclark](https://profiles.wordpress.org/sc0ttkclark/) We should figure 
   out what we want to structure the Fields API off of, but use object oriented 
   as much as possible and make the focus on better developer experience so we can
   help level up working with WP
    - We could look at the structure of GiveWP’s Fields API and other modern Fields
      APIs from other plugins/libraries
    - Avoid looking back at older/legacy plugins and libraries
    - Find a consensus on what makes sense that most people will be familiar with
      based on what’s popular/modern
    - The current Fields API is based on the Customizer API which has become antiquated
      already

### Next steps

 * **Meetings: **Figure out the frequency of meetings and when our next meeting 
   is
 * **Viability: **Get a gut-check from WP core dev team in the core meeting and 
   through responses to this post on direction and our focus
 * **Spec: **Look at modern Fields APIs in modern plugins/libraries and figure out
   how we want that structure to look like through a new spec doc
 * **Code: **Start with a Settings API implementation collaborating with [@joedolson](https://profiles.wordpress.org/joedolson/)
   and the Accessibility team to ensure that side is accessible
 * **Testing: **Ensure the API is well tested with unit tests

 [#feature-plugins](https://make.wordpress.org/core/tag/feature-plugins/), [#fields-api](https://make.wordpress.org/core/tag/fields-api/),
[#options-meta](https://make.wordpress.org/core/tag/options-meta/), [#summary](https://make.wordpress.org/core/tag/summary/)

### Share this:

 * [  Threads ](https://make.wordpress.org/core/2023/01/09/fields-api-kick-off-chat-summary-january-5th-2023/?share=threads)
 * [  Mastodon ](https://make.wordpress.org/core/2023/01/09/fields-api-kick-off-chat-summary-january-5th-2023/?share=mastodon)
 * [  Bluesky ](https://make.wordpress.org/core/2023/01/09/fields-api-kick-off-chat-summary-january-5th-2023/?share=bluesky)
 * [  X ](https://make.wordpress.org/core/2023/01/09/fields-api-kick-off-chat-summary-january-5th-2023/?share=x)
 * [  Facebook ](https://make.wordpress.org/core/2023/01/09/fields-api-kick-off-chat-summary-january-5th-2023/?share=facebook)
 * [  LinkedIn ](https://make.wordpress.org/core/2023/01/09/fields-api-kick-off-chat-summary-january-5th-2023/?share=linkedin)

 1.  ![](https://secure.gravatar.com/avatar/a556f0c812162ab6f10fc8748912889c4b1135aafaa4452badcf5b733bb1f91d?
     s=32&d=mm&r=g)
 2.   [David Perez](https://profiles.wordpress.org/davidperez/)  8:16 pm _on_ January
     9, 2023
 3.  What a great idea! I’d like to help in this project. Where are you going to announce
     next meetings?
 4.   * ![](https://secure.gravatar.com/avatar/7494440b8266712d0056e4d6168491f9db747ab7588cd74f3057473b3201d559?
        s=32&d=mm&r=g)
      *  [Scott Kingsley Clark](https://profiles.wordpress.org/sc0ttkclark/)  8:30 
        pm _on_ January 9, 2023
      * We will all be hanging out in the [#core-fields](https://wordpress.slack.com/archives/C04MWK7PZ)
        SlackSlack Slack is a Collaborative Group Chat Platform [https://slack.com/](https://slack.com/).
        The WordPress community has its own Slack Channel at [https://make.wordpress.org/chat/](https://make.wordpress.org/chat/)
        channel and will follow-up there with the planning and next steps. I’ll continue
        to post updates here as we have meetings and when we get to spec / proposal
        phase.
 5.  ![](https://secure.gravatar.com/avatar/33212bff2915bd72792772a2d3203abe0402352b6be6ba65081036f10560c6e6?
     s=32&d=mm&r=g)
 6.   [justlevine](https://profiles.wordpress.org/justlevine/)  7:14 am _on_ January
     10, 2023
 7.  Would absolutely **love** to get involved with this. This would be gamechanging
     for WPGraphQL
 8.   * ![](https://secure.gravatar.com/avatar/7494440b8266712d0056e4d6168491f9db747ab7588cd74f3057473b3201d559?
        s=32&d=mm&r=g)
      *  [Scott Kingsley Clark](https://profiles.wordpress.org/sc0ttkclark/)  4:17 
        pm _on_ January 10, 2023
      * Excited to have you aboard!
 9.  ![](https://secure.gravatar.com/avatar/33212bff2915bd72792772a2d3203abe0402352b6be6ba65081036f10560c6e6?
     s=32&d=mm&r=g)
 10.  [justlevine](https://profiles.wordpress.org/justlevine/)  7:46 am _on_ January
     10, 2023
 11. > Is there merit in separation of data and output like what GiveWP is doing versus
     what the very coupled approach that the Fields APIAPI An API or Application Programming
     Interface is a software intermediary that allows programs to interact with each
     other and share data in limited, clearly defined ways. has right now.
 12. I think the separation of the data layer from the output is paramount. Even without
     talking about the ever-growing headless WP use cases, we’ve seen the headaches
     involved when exposing data first to the CustomizerCustomizer Tool built into 
     WordPress core that hooks into most modern themes. You can use it to preview and
     modify many of your site’s appearance settings. and now the Site Editor, and projects
     like Calypso.
 13. A separation of concerns won’t just be a huge step for data portability and reuse(
     better automated endpoints, type safety, decoupled development) but will make 
     it significantly easier to ship future iterations of WP’s frontend AND backend
     while preserving back-compat.
 14.  * ![](https://secure.gravatar.com/avatar/cc19377aa23016d5b6429e2420f71c551032c4397647ec1d418582ed3a8414b5?
        s=32&d=mm&r=g)
      *  [Matthew Batchelder](https://profiles.wordpress.org/borkweb/)  10:41 pm _on_
        January 10, 2023
      * I couldn’t agree more!
 15. ![](https://secure.gravatar.com/avatar/a436ab0e9c96432f9852e6c89a6efba387bbbd837e6f3eb29d1c97edad80f6ec?
     s=32&d=mm&r=g)
 16.  [Drivingralle](https://profiles.wordpress.org/drivingralle/)  2:54 pm _on_ January
     10, 2023
 17. Great to see the project back in action. Looking forward to the upcoming things
     🚀
 18. ![](https://secure.gravatar.com/avatar/81cca480f962f22c0d9563014548d25614824f4f7cd41975a3ca337b0c7a9c26?
     s=32&d=mm&r=g)
 19.  [Lukasz](https://profiles.wordpress.org/wpfed/)  3:42 pm _on_ January 11, 2023
 20. Would this work as a alternative to ACF pluginPlugin A plugin is a piece of software
     containing a group of functions that can be added to a WordPress website. They
     can extend functionality or add new features to your WordPress websites. WordPress
     plugins are written in the PHP programming language and integrate seamlessly with
     WordPress. These can be free in the WordPress.org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
     or can be cost-based plugin from a third-party.? I see even a Repeatable field
     type (PR).
 21.  * ![](https://secure.gravatar.com/avatar/7494440b8266712d0056e4d6168491f9db747ab7588cd74f3057473b3201d559?
        s=32&d=mm&r=g)
      *  [Scott Kingsley Clark](https://profiles.wordpress.org/sc0ttkclark/)  4:13 
        pm _on_ January 11, 2023
      * This isn’t something that’s supposed to replace plugins, it’s to give a better
        foundational APIAPI An API or Application Programming Interface is a software
        intermediary that allows programs to interact with each other and share data
        in limited, clearly defined ways. to work with WordPress and extending various
        areas of WP more uniformly. So ACF, Pods, etc will all continue to be useful
        for many people but developers will have an option to work directly with coreCore
        Core is the set of software required to run WordPress. The Core Development
        Team builds WordPress. instead of relying on unique implementations by libraries
        which lock them into a specific pluginPlugin A plugin is a piece of software
        containing a group of functions that can be added to a WordPress website. They
        can extend functionality or add new features to your WordPress websites. WordPress
        plugins are written in the PHP programming language and integrate seamlessly
        with WordPress. These can be free in the WordPress.org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
        or can be cost-based plugin from a third-party..
      * It won’t be immediate but we hope to expand the Fields API into more areas 
        if it’s feasible, but for the moment it will be focused on the Settings API
        and the User profile screens.
         - ![](https://secure.gravatar.com/avatar/81cca480f962f22c0d9563014548d25614824f4f7cd41975a3ca337b0c7a9c26?
           s=32&d=mm&r=g)
         -  [Lukasz](https://profiles.wordpress.org/wpfed/)  1:57 pm _on_ January 12,
           2023
         - That’s very cool, sounds like acf will still be relevant for a bit, thanks!
 22. ![](https://secure.gravatar.com/avatar/7494440b8266712d0056e4d6168491f9db747ab7588cd74f3057473b3201d559?
     s=32&d=mm&r=g)
 23.  [Scott Kingsley Clark](https://profiles.wordpress.org/sc0ttkclark/)  3:30 pm 
     _on_ January 12, 2023
 24. Posted an update in yesterday’s coreCore Core is the set of software required 
     to run WordPress. The Core Development Team builds WordPress. dev meeting, some
     minor Q&A resulted but hopefully the visibility helps get some people to identify
     other potential no-gos for us to consider [https://wordpress.slack.com/archives/C02RQBWTW/p1673468682009139](https://wordpress.slack.com/archives/C02RQBWTW/p1673468682009139)

Comments are closed.

# Post navigation

[← Performance Chat Agenda: 10 January 2023](https://make.wordpress.org/core/2023/01/09/performance-chat-agenda-10-january-2023/)

[Dev Chat agenda, January 11, 2023 →](https://make.wordpress.org/core/2023/01/09/dev-chat-agenda-january-11-2023/)