-
-
Save craychee/7417928 to your computer and use it in GitHub Desktop.
| ##Q. What are you doing to my site? | |
| ###A. We are adding an additional directory in front of your project root that contains executables that can build and configure a virtualized development enviornment that mimics your production environment as much as possible and that allow us to deploy changes to your site with a testable, repeatable, transparent process. | |
| ##Q. After you do this, will my site look or behave any differently? | |
| ###A. No. We are not altering your Drupal codebase or database at all. We making your current configurations (of content types, views, feeds, taxonomy vocabularies, roles and permissions, etc.) explicit by putting them into code. If we alter the configurations we will do so by altering that code so that our changes are explicit. Moreover, every one who works on your site will be able to test our configuration changes in the exact same way as we will be deploying it live. | |
| ##Q. Why is this important? | |
| ###A. First, we want to ensure that changes that we make to the site are not dependent on a database. That means that we do not take a copy of your database, make changes to it, and then swap out the old database with the new (meaning that any changes made to your site--new articles, new users, etc.--would be lost in the turnover). That is not how we define development. If we need to change how Drupal is configured, we do that in code and leave your content alone. | |
| Second reason, a motivation that is less visible to clients, is that we want to ensure consistency. We want to make sure that if I make a change to the code base, it will behave for another developer making changes to the code base in the exact same way it does on my own computer. And on a development server. And, most importantly, on your production server. To do this, we essentially create a copy of your production server and develop and test our code on that server. We modify until we can do this over and over again and get the same results. | |
| Finally, we want to be able to recreate what a live deployment will look like. By tagging our releases and deploying our changes using executable scripts inside the code base, we can tell you with confidence what changed with every release. Making code changes allows us to version control the changes and keep track of the responsible developer for those changes. | |
| ##Q. We would like to make configuration changes to our site. Do we need to work this way? | |
| ###A. In a word: yes. Yes, as long as we are doing active development to your site. After pushing configuration changes in code, we restore all configurations to their default. This is the equivalent of returning your phone back to its "factory settings." If you have altered the "factory settings" in the interim, you need to tell us and accommodations can be made. | |
| ##Q. When you say you restore to "factory settings" does that mean my content will be blown away? | |
| ###A. Absolutely not. Users, nodes, and taxonomy terms are not configurations and are not impacted unless there is an explicitly stated use case. If you alter the way that your nodes, users, and taxonomies are configured (removing a field, altering a view, altering a context, etc.), a strategy can and must be put into place to ensure that your changes are accommodated. | |
I would add somewhere that making code changes allows us to version control the changes and keep track of the responsible developer for those changes. Looks like you made an attempt at this in Line 12
On line 8, I would switch "That is not development." to "That is not how we define development"
Line 10 "visable" should be "visible".
¿Que? Line 12 "Finally, we want to be able to recreate what a deployment."
On Line 15, it might be credible to ask them to let us know what configuration changes they have made, that or we need to add a point in our workflow where we download the newest copy of their database directly before we push and then update all of our features to that database's configuration.
On line 18, this statement isn't always true: "and taxonomy terms are not configurations and are not impacted." Specifically Taxonomy Terms are often used as configuation tools, much like in the case of Oaks or some sites that use Taxonomy as menus and we export the vocabulary.
Regarding your comment on line 15: I don't think we need to specify the different ways that we can accommodate them, just that we can. (We do not have a smooth process for this yet.)
on Line 18: well... that will not be the way it is going forward.
Question 3
In your first point, perhaps it would make sense to explicitly state that the purpose is to separate content from configuration so that no content is lost and so that development can continue while content changes. Granted, there are cases we do need to freeze content. Perhaps, something along the lines that this process minimizes, if not eliminates, the need for content freezes.
"Finally, we want to be able to recreate what a deployment." Think you're missing part. :)