s
After creating several sites using several CMSes, one single thing still annoys me: the lack of a proper export settings feature. Putting a local testing site in the official online server is always a nightmare, since we have basically try one of the options:
In Drupal world, one of my most admired companies, Development Seed, created both Features and Strong Arm that try to address this, but the lack of broad and ubiquitous support we still feel that we will miss something.
There are 3 types of data that a computer program might have:
Every program that is a platform should provide a Settings API. It would help on 4 big scenarios
There are several situations that we need to maintain a testing site for development new features without testing in the real production site. But time to time, we are satisfied with the test results and we and to apply the modification into the production site. For some business, like 3rd party site development, its the daily job, so its a must to make this workflow faster and painless.
After installing several plugins, its each to get a very unstable site, because they are changing same data. It would be much easier to monitor modifications and find solutions. A settings comparison tool would be great, so we could see what were overwritten.
Platforms, by definition, allow us to build stuff over it. But quite often projects are similar. So why not create a template for other people to use it? For a site builder like Drupal, we could create eCommerce, Blog, Forum templates for an easy deployment. It’s an extraordinary feature for newcomers.
If the program is settings aware, a good extra feature is to apply in a stack. It’s a similar concept of CSS, cascading settings based on specific variables. Imagine, for example, a site about football teams. While the site has a main theme, each team’s page can have one and the users can have a personal one. We could enabled this cascaded settings for each setting.
If we have different content types in a site (ex: static pages, forum pages and news pages), we could have a page to change all settings related to each content type and have a page to change a specific setting of all content types.
As we can see, settings is a very important part in a program. We have to think it with more care to leverage its potentials.