About

History and background

Carbon Fields was started as htmlBurger’s internal custom fields library in 2009. Back then, we were just starting our business and the state of the WordPress’s plugin ecosystem was not as developed as it is nowadays. So, we had to find and build our own solution.

The syntax for the fields definition was initially inspired by Django Models.

For a few years, we used the library internally. Throughout this time, we built thousands of clients’ projects based on it. Due to the high work volume, we extended Carbon Fields gradually to become a fully-featured tool comparable to other plugins in the field. By 2015, it was our heavy-duty tool when it came to building a CMS.

Carbon Fields was released as a plugin at the beginning of 2016. We took this step for several reasons:

  • We wanted to give back to the community. We believe that WordPress is one of the most important pieces of software of our time, and we wanted to help make it better.
  • There were people struggling with the maintenance of projects we had started because they didn’t have access to the Carbon Fields’ code repository.
  • We, as developers, felt that the WordPress platform needed more developer-friendly tools. WordPress’s core team hasn’t been prioritizing developers’ problems — they are focused on the end users, instead, and the low barrier to start developing WordPress sites. Carbon Fields, and WP Emerge for that matter, are our attempts to make WordPress a more developer-friendly web development platform.

Priorities

We’d like Carbon Fields to excel in a few aspects:

  • Developer friendliness – we’re after a plugin that is compelling for a competent developer rather than a hobbyist.
  • An elegant and expressive field definition API – Carbon Fields provides a coherent API that is intuitive to use and easy to maintain — even when there are dozens of fields in a single container (example).
  • Feature-richness – along with the usual features you’d expect from a custom fields plugin, Carbon Fields bundles:

    • Easy Gutenberg blocks
    • alternatives to ACF’s repeaters & flexible content (we have merged those and called them Complex field)
    • theme options pages
    • user meta
    • comment meta
    • term meta
    • custom widgets meta
    • menu items meta
    • conditional logic
    • multi-site network container

Comparison with other plugins

ACF is a great plugin — we have borrowed some ideas from it. However, we have also faced a major issue with it: the plugin’s author tends to change the codebase and the business model without caring too much about backward compatibility. While we completely understand the reasons behind those decisions, they make maintenance painful for the developers.

Apart from this, we think that it’s not a good idea to build your custom fields through the admin UI — this way you disconnect the field definition from the version control, i.e. from the changes in the templates that actually render the custom field values.

CMB2 is also a great plugin. However, it does have some limitations that are important to us:

  • Not all fields can be repeated
  • There is no support for nested groups
  • No flexible content alternative

Conclusion

We hope that our efforts on this project will make the life of many WordPress developers a bit easier. We are excited for all the good things to come 🙂