The gist is that by explaining your question to someone (or on Stackoverflow, or to a Duck, or a chat-bot), you think about the question in more abstract, simpler or different ways. It very often solves my problem.
I took the bot out for a test-drive. Posing my favorite problem to it: How to properly deploy Drupal without downtime and tedious manual configuration (answer: you cannot). Here is the transcript:
email@example.com 11:20:28 Hello firstname.lastname@example.org 11:20:32 Hello, I'm your Code Consulatant Ever notice how just talking through an issue with a co-worker is enough to help you solve a problem, even if they don't say a word? 11:20:32 Let me help you with your problems so they can keep working. 11:20:33 How do you do. Please state your problem. 11:20:33 email@example.com 11:20:49 I want to deploy Drupal without downtime. firstname.lastname@example.org 11:20:49 What would it mean to you if you got to deploy drupal without downtime ? email@example.com 11:21:10 then I would not need to take the site offline while rolling out a new release firstname.lastname@example.org 11:21:10 You say then you would not need to take the site offline while rolling out a new release ? email@example.com 11:21:18 yes firstname.lastname@example.org 11:21:18 You seem to be quite positive. email@example.com 11:21:43 how would I release a drupalsite without taking the site offline? firstname.lastname@example.org 11:21:44 Why do you ask ? email@example.com 11:22:26 because Drupal stores its configuration in the database. The same database that contains the content. firstname.lastname@example.org 11:23:09 What database are you using ? email@example.com 11:23:16 MySQL firstname.lastname@example.org 11:23:16 You're going to have to tell me more. email@example.com 11:23:32 MySQL relational database firstname.lastname@example.org 11:23:32 Is your database well normalized ? email@example.com 11:23:37 yes, it is. firstname.lastname@example.org 11:23:37 You are sure. email@example.com 11:23:55 Well, no. You are right, that is part of the proble, firstname.lastname@example.org 11:23:56 Are you saying no just to be negative? email@example.com 11:24:27 how would I normalise Drupals database? firstname.lastname@example.org 11:24:27 Liquibase would help you manage your database better.
LiquiBase. I am not sure about the practical application of this tool, and if it will fit well into a Drupal workflow. But from the description, it tries to solve exactly the Drupal Deployment Problem.
In the very least, it helps. a lot:
- Rollback database to "tag". Woa. If your deployment fails, whether or not you did that with any of the tools such as hook_update_N, Features, or whatever, there is still no rollback. Yet. Here it is.
- Database diff changelog generation. Especially usefull on your development machine: it allows you to record all the changes you made while developing the new release for your site. Even if such a changelog helps you to write a release-script manually, it is very helpful. Did you never forget to set that one checkbox on live, because you forgot you had it checked on your development machine? Causing a Giant Shipment of Fail?
Funny. To learn a new tool from a bot. What is next? Bots solving our actual solutions for us?