Features has solved many of the problems that used to block version control of Drupal configuration. But some problems remain.

In order for Features to be able to export the configuration, the corresponding module must save its settings in a way that Features can recognize. Practically all larger modules support Features, but many smaller modules don't. If you want to version control all the configuration in a project, you will either spend a lot of time improving a number of modules or have to find other solutions.

In particular there are a number of settings in Drupal core that are not natively recognized by Features. To solve this, the Strongarm module was written, acting as a bridge between Features and the settings stored in the Drupal variable table. Since many small modules have so few settings that they chose to store them in the variable table, rather than creating their own tables. Strongarm is able to pick up these settings and tell Features about them.

Still, the Features + Strongarm combination will usually not give you 100 percent exported configuration. If you want this, which you should always strive for, you will sometimes be forced to custom-code so called update hooks. These are functions being executed when you update modules (or Drupal core) from one version to another. Your custom update hooks should be written to perform the last database changes which otherwise would have required manual clicking, finally providing you with a fully automated workflow for updating site configuration.